一、前言:
httpd-2.2与 httpd-2.4版本相比增加了许多新特性:
1、MPM支持运行时装载
2、支持event
3、支持异步读写
4、支持每模块每目录使用不同的日志级别
5、每请求配置<IF>
6、增强版的表达式分析器
7、支持毫秒级的keeplive timeout
8、基于主机名的虚拟主机不在需要NameVirtaulHost
9、支持用户自定义变量
10、新增一些模块:mod_proxy,fcgi,mod_ratelimit,mod_request,mode_remoteip
11、修改了一些配置机制,不在使用order,allow,deny来实现基于ip的访问控制
一次web请求响应的交换过程:
1、建立连接:接收客户端连接请求
2、接收请求:从来自于网络的请求报文中读取一次特定的资源请求
3、处理请求:对请求报文进行解析,获取请求的资源等信息;根据请求报文的首部来判断用户请求的资料
4、访问资源:获取报文指定请求的资源,web服务器及web资源服务器,负责发送预先创建好的或动态生成的内容,这些的存放位置是docroot
5、构建相应报文:
6、发送相应报文:有长连接和短连接模式
7、记录日志
并发响应模型:
单进程web服务器:启动一个进程接收请求,而且一次只能处理一个请求,当当前请求处理结束后再接收并处理后续的请求;
多进程web服务器:进程尺(线程池);启动多个进程,每个进程处理一个请求,预生成模式,事先生成过个进程(线程池);
复用的I/0的web服务器:一个进程响应多个请求,基于事件驱动
复用的I/0多线程web服务器:一个进程响应n个请求,启动m个进程:
Apache的工作模式:
prefork:多进程模型,每个进程响应一个请求;稳定性好,但并发能力有限;预先生成多个空闲进程;(selec()调用,最大1024个)
worker:多进程模型,每个进程可生成多个线程,每个线程响应一个请求,预先生成多个空闲线程
event:一个进程直接响应n个请求,可同时启动多个进程,(httpd-2.2中测试使用,httpd-2.4可生产使用)
二、Apache编译安装过程
安装编译环境:Development Toos 和 Server Platform Development
1、编译安装apr
解压
# tar xf apr-1.5.2.tar.gz -C /usr/src
# cd /usr/src/apr-1.5.2/
执行安装目录
# ./configure –prefix=/usr/local/lamp/apr
编译安装
# make && make install
2、编译安装呢apr-util
解压
# tar xf apr-util-1.5.4.tar.gz -C /usr/src/
# cd /usr/src/apr-util-1.5.4/
指定安装路径,指明apr安装路径
# ./configure –prefix=/usr/local/lamp/apr-util –with-apr=/usr/local/lamp/apr/
编译安装
# make && make install
3、编译安装httpd
(1)解压
# tar xf httpd-2.4.12.tar.bz2 -C /usr/src
# cd /usr/src/httpd-2.4.12/
(2)配置编译选项(可使用./configure –help查看所需要的选项)
# ./configure –prefix=/usr/local/lamp/apache –enable-so –enable-ssl –sysconfdir=/etc/apache/ –enable-modules=most –enable-mods-shared=all –enable-expires –enable-remoteip –enable-proxy –enable-mpms-shared=all –enable-cgi –enable-rewrite –with-pcre –with-libxml2 –with-mpm=worker –with-apr=/usr/local/lamp/apr –with-apr-util=/usr/local/lamp/apr-util/
选项解释:
–prefix:指定安装路径
–enable-so:启用动模块的动态装卸载功能,及启用DSO
–eanble-ssl:启用ssl加密模块
–sysconfdir:指定配置文件路径
–enable-moudles: 启用那些模块
–enable-mods-shared: 启动那些共享模块
–enable-expires: 启用exprires标题控制
–enable-remoteip:作用将http头部中的客户端ip修改为代理服务器或者负载均衡服务器的ip
–with-pcre: 兼容性正则表达式模块
–enable-proxy:启用代理模块
–enable-mpms-sahred:启用那些动态装卸载模块
–enable-cgi:启动cgi模块
–enable-rewrite:启动重写模块
–enable-libxml2:启用xml解释器模块
–with-mpm:设定默认工作模式
–with-apr:指明arp位置
–with-apr-util: 指明arp-util的安装位置
(3)编译安装
# make && make install
(4)提取httpd的二进制文件,在/etc/profile.d/目录中创建http.sh,添加内容如下:
(5)重新读取配置文件
(6)验证头文件信息
4、启动httpd服务,有两种方法:
第一种方法:使用编译安装时,httpd自带的启动服务脚本启动
(1)确认编译安装完成后自带服务启动脚本
(2)使用此脚本启动服务:
(3)查看启动是否成功,如果没有成功,查看日志,分析原因
(4)根据错误提示,编辑httpd的配置文件,检查错误日志提到的模块信息
(5)在此运行脚本,启动httpd服务
(6)使用浏览器测试是否可以正常访问
第二种方法:如果已安装了rpm格式的httpd,可以修改httpd服务,让其可以控制编译安装的httpd
(1)确认系统已经安装rpm格式的httpd
(2) 修改rpm格式的httpd启动脚本,修改内容如下
(3)启动httpd服务
(4)使用浏览器测试访问
三、虚拟主机配置
编辑/etc/apache/httpd.conf文件,注释掉主服务器的文档目录,启动虚拟主机的配置文件目录,监听在多个端口
1、配置虚拟主机
(1)基于端口的虚拟主机
①编辑/etc/apache/extra/httpd-vhosts.conf,添加虚拟主机
②创建/var/www/{a.com,b.com},并在其目录下创建index.html默认文件
③重新启动httpd服务
④测试基于端口的虚拟主机是否可以成功访问
⑤访问被拒绝,解决办法,编辑/etc/apache/extra/httpd-vhosts.conf,添加授权信息
⑥重新载入httpd配置文件,重新访问
(2)配置基于IP地址的虚拟主机
①编辑/etc/apache/extra/httpd-vhosts.conf,修改内容如下
②给主机配置多个ip地址
③重启httpd服务器,用不同的ip访问web服务
(3)配置基于主机名的虚拟主机
①编辑/etc/apache/extra/httpd-vhosts.conf,修改虚拟主机配置文件
②修改本地主机的host文件,添加以下信息
③重启httpd服务,使用主机名进行访问
原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/4900