1.什么是apache(web服务器)
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行 Apache是世界使用排名第一的Web服务器软件,它可以运行在几乎所有广泛使用的计算机平台上 由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一,也叫网页服务器软件 它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中
2.什么是Http://协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写 是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议 HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等) HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统 HTTP协议工作于客户端-服务端架构为上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求 Web服务器根据接收到的请求后,向客户端发送响应信息
HTTP工作原理:
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端 HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据 服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
HTTP请求/响应步骤:
1、客户端连接到Web服务器 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baud.com 2、发送HTTP请求 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。 3、服务器接受请求并返回HTTP响应 Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。 一个响应由状态行、响应头部、空行和响应数据4部分组成。 4、释放连接TCP连接 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求; 5、客户端浏览器解析HTML内容 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
其实也是把服务端的东西共享给客户端的一个过程 协议的支撑 <-----软件 <-----程序 协议是两个人共同商量好的东西 curl -I www.baidu.com 查看网址的服务名字 两大主流服务: lamp linux apache mysql php/perl/python lnmp linux nginx mysql php/perl/python 客户端访问aoache服务,然后加在php这个插件,然后调用mysql数据库 apache,企业中常用的web服务,用来提供http://
3.apache的基础信息
主配置目录 | /etc/httpd/conf |
---|---|
主配置文件 | /etc/httpd/conf/ |
子配置目录 | /etc/httpd/conf.d/ |
子配置文件 | /etc/httpd/conf.d/*.conf |
默认发布目录 | /var/www/html |
默认端口 | 80 |
默认安全上下文 | httpd_sys_content_t |
程序开启默认用户 | apache |
apache日志 | /etc/httpd/logs/* |
4.搭建实验环境
reset desktop虚拟机
配置ip为172.25.254.115,在此虚拟机上,搭建apache-web服务器,安装httpd服务,开启,并且设置开机启动。
在防火墙中加入http
安装apache的手册
重启服务
在firefox中输入:http://172.25.254.115/manual
rpm -qc httpd 查看主配置文件
在apache的默认发布目录下创建一个index.html,并编辑
在浏览器中输入http://172.25.254.115/index.html
1.修改httpd的服务端口
vim /etc/httpd/conf/httpd.conf 编辑httpd的主配置文件 搜Listen 将端口80改为8080,默认使用端口8080 重启服务
netstat -antlupe | grep httpd 查看httpd的端口
在firefox中输入,http://172.25.254.115:80,此时显示不能连接
而输入http://172.25.254.115:8080,发现也不能进入
给防火墙加入8080端口,即可进入
2.修改默认发布文件
恢复80端口 重启服务
cd /var/www/html/ ls 查看默认发布文件index.html vim westos.html 再编写一个文件
westos page
直接在浏览器中输入172.25.254.115默认访问的是index.html,只有输入172.25.254.115/westos.html才可以访问westos.html
在配置文件中,将默认发布文件index.html改为westos.html
vim /etc/httpd/conf/httpd.conf
在164行,将westos.html写在index.html之前,系统会默认按照顺序来确定默认发布文件,所以当westos.html存在时,默认的发布文件是它,如果当它不存在时候,那就是index.html
重启服务 验证结果
浏览器中输入172.25.254.115
3.修改默认发布目录
mkdir -p /westos/html 新建一个目录,让它当作新的默认发布目录 vim /westos/html/index.html 编写发布目录下的发布文件
westos html change
vim /etc/httpd/conf/httpd.conf中119行,复制一行,注释掉原来的 将默认发布目录由/var/www/html改成/westos/html
重启服务
在浏览器中输入172.25.254.115发现并不能找到,是因为新建的默认发布目录没有授权。
Require all granted 允许共享该目录下的文件
重启服务
在浏览器中输入172.25.254.115,即可找到
7.apache访问控制
先将所有配置恢复至初始。
然后配置
Order表示先后顺序,先Allow 后 Deny,这个意思就是先允许所有人访问,然后再拒绝172.25.254.115访问,如果将Deny在前而Allow在后,就为先拒绝172.25.254.115,再允许所有人,允许覆盖了拒绝,所以等于没有设置。
此时用172.25.254.115登陆,http://172.25.254.115发现并不能载入
而用真机,172.25.25.60登陆,就可以载入
8.指定用户访问
先建立用户认证文件 cd /etc/httpd/conf/
htpasswd -cm westosuser admin建立admin用户,并输入密码
htpasswd -m westosuser admin1 建立admin1用户,并输入密码,如果再次-cm的话,会将之前的创建的admin用户覆盖,用-m就不会覆盖。
cat westosuser
vim /etc/httpd/conf/httpd.conf
在/var/www/html/下建立一个westos目录
mkdir -p /var/www/html/westos vim /var/www/html/westos/test
进入浏览器 Ctrl+Shift+Delete清除缓存,输入http://172.25.254.115/westos
输入admin 密码123
如果使用admin1登陆的话,就会发现不能登陆
这时候把用户认证去掉,打开允许所有用户访问
重启服务
发现此时admin1也可以登陆
也可以登陆 test.html
9.让一台apache主机有多个站点
目的:让apache服务器上news/music都有自己的默认发布目录和默认发布文件 cd /etc/httpd/conf.d/ 默认发布目录 vim defaults.conf 编辑虚拟主机的配置文件,必须以.conf结尾
打开真机,在本地解析文件中输入172.25.254.115 www.westos.com news.westos.com music.westos.com
给music和news创建默认发布目录
创建默认发布文件
在真机firefox浏览器,输入news.westos.com
输入music.westos.com
10.apache支持的语言(html php cgi)
pjp
在/var/www/html下编写一个php语言默认发布文件 vim index.php
重启服务
在浏览器中输入172.25.254.115/index.php发现什么也没有
安装php
重启httpd服务
在浏览器中输入 172.25.254.115/index.php即可看到php的表格
cgi语言
浏览器中输入172.25.254.115/manual查看手册,看设置cgi语言需在配置文件写什么内容 选CGI查看然后粘贴
cd /var/www/html 进入默认发布目录 mkdir cgi在默认发布目录下建立cgi目录 cd cgi vim index.cgi 写cgi的默认发布文件
chmod +x index.cgi 既然是脚本所以要给它一个可执行的权限 ./index.cgi可以看到时间调用脚本,看能否看到时间
此时用浏览器输入172.25.254.115/cgi/index.cgi看到的是源码
cd /etc/httpd/conf.d vim default.conf 编辑配置文件 加入
cgi必须要在配置文件中加入这个字段才会生效 ==重启服务==
再次在浏览器输入172.25.254.115/cgi/index.cgi发现显示的不再是源码
wsgi语言
在/var/www下建立wsgi目录, 从172.25.254.250下载python脚本,将此脚本文件放入/var/www/wsgi下 用python调用此脚本发现不能调用,所以下载wsgi插件,yum install mod_wsgi
cd /etc/httpd/conf.d ls---->vim default.conf
重启服务
切换到真机172.25.254.60 做本地解析
打开浏览器输入wsgi.westos.com
11.https加密访问
HTTPS:Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 特点:https是经过加密的传输加密方式是通过用安全套接字层(SSL) HTTPS和HTTP的区别主要为以下四点: 一、https协议需要到ca申请证书,一般免费证书很少,需要交费。 二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。 三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
安装apache服务加密插件mod_ssl
cd /etc/httpd/conf.d 下有ssl.conf文件 添加https到防火墙中
重启服务,查看https的端口是否开启
此时在浏览器中输入 https://172.25.254.115会发现:授权部门没有授权,认为不安全,所以警告。
==解决方法:==Advice(高级选项)->Get Certificate(获得证书)。Confirm确定就可以看到信息。
以上生成的证书无签名无密钥,还没有自己的证书和密钥,所以需要自己制作证书和密钥。
自签名证书
yum install crypto-utils -y 安装相应的工具
genkey www.westos.com 对该域主机生成证书和钥匙
这里要选择No 否则会向CA申请
填完信息就会生成钥匙和密码,随机敲击键盘使得加密字符足够。
生成加密的密钥和证书,apache必须要知道,所以在配置文件中写入
vim /etc/httpd/conf.d/ssl.conf
然后重启服务 在浏览器中输入https://172.25.254.115
此时就可以使用https加密服务了
网页重定向
会发现如果在浏览器中输入http://172.25.254.115时候,不会自动跳到https://172.25.254.115下。 那如何配置才能让172.25.254.115:80 自动跳转至172.25.254.115:443呢?
创建发布目录和文件
重启服务
在真机的本地解析中加入login.westos.com
然后输入https://login.westos.com 可以看到
但输入http://login.westos.com不会自动跳转到https://login.westos.com
输入172.25.254.115/manual 选URL,查看网页重定向的写法
^(/.*)$ | 客户在浏览器地址栏中输入所有的字符 |
---|---|
https:// | 强制客户加密访问 |
%{HTTP_HOST} | 客户请求主机 |
$1 | 1表示(/.*)的值 |
[redirect=301] | 永久重定向,302是临时 |
重启服务
在真机中输入http://login.westos.com就可以自动跳入到https://login.westos.com了。