http: HyperText Transfer Protocol: 超链接文本协议,监听在tcp:80端口。
http:应用层协议,客户端请求报文(request)→服务器端响应报文(response)。
http:事务一个请求以及与其对应的响应报文。
http:缓存机制分为(私有缓存)和(公共缓存)
http的响应码:
1xx:信息性状态码
100, 101
2xx:成功状态码
200:OK
3xx:重定向状态码
301:永久重定向, Location响应首部的值仍为当前URL,因此为隐藏重定向;
302:临时重定向,显式重定向, Location响应首部的值为新的URL
304:Not Modified
4xx:客户端错误状态码
404: Not Found
5xx:服务器端错误状态码
500: Internal Server Error
502: Bad Gateway
504:Gateway Timeout
一次http事务的完成过程:
建立连接→接受请求→处理请求→获取资源→构建响应→回送响应→记录日志
http是被高度模块化的DSO:MPM:Multipath Processing Module分为三个模块:
prefork模块 | worker模块 | event模块 |
一个进程响应一个请求 | 一个进程生成多个线程,一个线程响应一个请求 | 事件驱动模式,也可以理解成多线程 |
httpd的配置文件:
服务脚本 | 运行目录 | 配置文件 |
/etc/rc.d/init.d/httpd | /etc/httpd | /etc/httpd/conf/httpd.conf |
扩展配置 | 网页文件目录 | CGI |
/etc/httpd/conf.d/*.conf | /var/www/html | /var/www/cgi-bin/ |
配置文件的构成:主服务器和虚拟主机不能同时启用
全局配置:对主服务器或虚拟机都有效,且有些功能是服务器自身的工作属性
虚拟主机:虚拟主机及属性定义
修改配置文件使其生效命令:
service httpd reload 立即生效;而修改监听的地址和端口通常需要重启服务
service httpd start|stop|restart|
配置文件语法测试命令:
service httpd configtest 或 httpd -t 还是后边这个好记
1.配置所选用的MPM的属性:
配置使用编译进不同MPM的httpd,编辑/etc/sysconfig/httpd配置文件,定义如下行:
HTTPD=/usr/sbin/httpd.worker
MPM:多道处理模块
prefork:一个进程响应一个请求;
主进程功能
(1)绑定特权端口
(2)派发或回收子进程
(3)读取分析主配置文件
worker:一个进程生成多个线程,一个线程响应一个请求
event:多线程工作模式,减少等待时间
2.配置服务器支持keep-alived保存链接时间:
保持连接是否开启 | 链接超时时间 | 最大请求链接 |
KeepAlive {On|Off | KeepAliveTimeout | MaxKeepAliveRequests |
3.配置加载的模块:
LoadModule foo_module modules/mod_foo.so
下面我们就来配置一个web服务:
tar xf apr-1.4.6.tar.bz2 #httpd依赖包 ./configure --prefix=/usr/local/apr make && make install #编译安装 tar xf apr-util-1.5.2.tar.bz2 #这个也的装 ./configure --prefix=/usr/local/apr-util --prefix=/usr/local/apr-util --with-apr=/usr/local/apr #编译安装 yum install pcre-devel #依赖包 tar xf httpd-2.4.6.tar.bz2 #httpd源码包 ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event #检查httpd模块 make && make install #编译安装 ln -sv /usr/local/apache/include /usr/include #链接头文件到系统 echo /usr/local/apache/bin > /etc/ld.so/.conf.d/httpd.conf #指定二进制文件路径 vim /etc/profile.d/http.sh #添加环境变量 export PATH=/usr/local/apache/bin:$PATH #设置环境变量 . /etc/profile.d/http.sh #重新载入 cp httpd httpd24 #cp服务脚本 apachectl=/usr/local/apache/bin/apachectl#编辑服务脚本的启动程序 httpd=${HTTPD-/usr/local/apache/bin/httpd#编辑服务脚本的httpd路径 /var/run/httpd/httpd.pid #添加主配置文件的pid路径 chkconfig --add httpd24 #添加服务运行 [root@yulong init.d]# service httpd24 restart Stopping httpd: [ OK ] Starting httpd: [ OK ] 启动成功 搞定
上面这个是默认主页,下面通过虚拟主机配置来进行访问
1.先把主配置文件里面的主服务器给禁用掉,就是DocumentRoot
2.开启虚拟主机模块:# Virtual hosts
Include /etc/httpd24/extra/httpd-vhosts.conf
3.我们编译安装的httpd默认虚拟主机配置文件在/etc/httpd24/extra/httpd-vhosts.conf
4.在文件最下方添加如下内容:
<VirtualHost *:80> #虚拟主机监听的端口号
DocumentRoot "/web/like" #网页文件的存放路径
ServerName www.qq.com #要访问的服务名字
ErrorLog "/usr/local/apache/log" #错误日志存放路径,可以自己定义的
CustomLog "/usr/local/apache/log" common #被访问的日志,也可以自己定义的
<Directory /web/like> #定义的目录标签
AllowOverride none #是否允许覆盖
Require ip 172.16.0.0/16 #允许那个IP段访问
</Directory>
</VirtualHost>