Loading... <p>一、前言:</p> <p> httpd-2.2与 httpd-2.4版本相比增加了许多新特性:</p> <p> 1、MPM支持运行时装载</p> <p> 2、支持event</p> <p> 3、支持异步读写</p> <p> 4、支持每模块每目录使用不同的日志级别</p> <p> 5、每请求配置<IF></p> <p> 6、增强版的表达式分析器</p> <p> 7、支持毫秒级的keeplive timeout</p> <p> 8、基于主机名的虚拟主机不在需要NameVirtaulHost</p> <p> 9、支持用户自定义变量</p> <p> 10、新增一些模块:mod_proxy,fcgi,mod_ratelimit,mod_request,mode_remoteip</p> <p> 11、修改了一些配置机制,不在使用order,allow,deny来实现基于ip的访问控制</p> <p></p> <p>一次web请求响应的交换过程:<img src="//cto.wang/usr/uploads/2016/07/20160703180332-45.png" title="1433931068984811.png" alt="web1.png" /></p> <p> </p> <p> 1、建立连接:接收客户端连接请求</p> <p> 2、接收请求:从来自于网络的请求报文中读取一次特定的资源请求</p> <p> 3、处理请求:对请求报文进行解析,获取请求的资源等信息;根据请求报文的首部来判断用户请求的资料</p> <p> 4、访问资源:获取报文指定请求的资源,web服务器及web资源服务器,负责发送预先创建好的或动态生成的内容,这些的存放位置是docroot</p> <p> 5、构建相应报文:</p> <p> 6、发送相应报文:有长连接和短连接模式</p> <p> 7、记录日志</p> <p></p> <p>并发响应模型:</p> <p> 单进程web服务器:启动一个进程接收请求,而且一次只能处理一个请求,当当前请求处理结束后再接收并处理后续的请求;</p> <p> 多进程web服务器:进程尺(线程池);启动多个进程,每个进程处理一个请求,预生成模式,事先生成过个进程(线程池);</p> <p> 复用的I/0的web服务器:一个进程响应多个请求,基于事件驱动</p> <p> 复用的I/0多线程web服务器:一个进程响应n个请求,启动m个进程:</p> <p></p> <p>Apache的工作模式:</p> <p> prefork:多进程模型,每个进程响应一个请求;稳定性好,但并发能力有限;预先生成多个空闲进程;(selec()调用,最大1024个)</p> <p> worker:多进程模型,每个进程可生成多个线程,每个线程响应一个请求,预先生成多个空闲线程</p> <p> event:一个进程直接响应n个请求,可同时启动多个进程,(httpd-2.2中测试使用,httpd-2.4可生产使用)</p> <p></p> <p></p> <p>二、Apache编译安装过程</p> <p>安装编译环境:Development Toos 和 Server Platform Development</p> <p> 1、编译安装apr</p> <p> 解压</p> <p> # tar xf apr-1.5.2.tar.gz -C /usr/src</p> <p> # cd /usr/src/apr-1.5.2/</p> <p> 执行安装目录</p> <p> # ./configure –prefix=/usr/local/lamp/apr</p> <p> 编译安装</p> <p> # make && make install </p> <p></p> <p> 2、编译安装呢apr-util</p> <p> 解压</p> <p> # tar xf apr-util-1.5.4.tar.gz -C /usr/src/</p> <p> # cd /usr/src/apr-util-1.5.4/</p> <p> 指定安装路径,指明apr安装路径</p> <p> # ./configure –prefix=/usr/local/lamp/apr-util –with-apr=/usr/local/lamp/apr/</p> <p> 编译安装</p> <p> # make && make install</p> <p></p> <p> 3、编译安装httpd</p> <p> (1)解压</p> <p> # tar xf httpd-2.4.12.tar.bz2 -C /usr/src</p> <p> # cd /usr/src/httpd-2.4.12/</p> <p> (2)配置编译选项(可使用./configure –help查看所需要的选项)</p> <p> # ./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/ </p> <p> 选项解释:</p> <p> –prefix:指定安装路径</p> <p> –enable-so:启用动模块的动态装卸载功能,及启用DSO</p> <p> –eanble-ssl:启用ssl加密模块</p> <p> –sysconfdir:指定配置文件路径</p> <p> –enable-moudles: 启用那些模块</p> <p> –enable-mods-shared: 启动那些共享模块</p> <p> –enable-expires: 启用exprires标题控制</p> <p> –enable-remoteip:作用将http头部中的客户端ip修改为代理服务器或者负载均衡服务器的ip</p> <p> –with-pcre: 兼容性正则表达式模块</p> <p> –enable-proxy:启用代理模块</p> <p> –enable-mpms-sahred:启用那些动态装卸载模块</p> <p> –enable-cgi:启动cgi模块</p> <p> –enable-rewrite:启动重写模块</p> <p> –enable-libxml2:启用xml解释器模块</p> <p> –with-mpm:设定默认工作模式</p> <p> –with-apr:指明arp位置</p> <p> –with-apr-util: 指明arp-util的安装位置</p> <p></p> <p> (3)编译安装</p> <p> # make && make install </p> <p></p> <p> (4)提取httpd的二进制文件,在/etc/profile.d/目录中创建http.sh,添加内容如下:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-6.png" title="1433172120121472.png" alt="8.png" /></p> <p> </p> <p> (5)重新读取配置文件 <img src="//cto.wang/usr/uploads/2016/07/20160703180333-97.png" title="1433172129941737.png" alt="7.png" /></p> <p></p> <p> (6)验证头文件信息</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-35.png" title="1433172670767556.png" alt="10.png" /></p> <p> </p> <p> 4、启动httpd服务,有两种方法:</p> <p> 第一种方法:使用编译安装时,httpd自带的启动服务脚本启动</p> <p> (1)确认编译安装完成后自带服务启动脚本</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180333-84.png" title="1433173509373817.png" alt="14.png" /></p> <p></p> <p> (2)使用此脚本启动服务:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-63.png" title="1433173601102455.png" alt="15.png" /></p> <p> </p> <p> (3)查看启动是否成功,如果没有成功,查看日志,分析原因 <img src="//cto.wang/usr/uploads/2016/07/20160703180333-42.png" title="1433173899944153.png" alt="3.png" /></p> <p></p> <p> (4)根据错误提示,编辑httpd的配置文件,检查错误日志提到的模块信息</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-66.png" title="1433174055116815.png" alt="4.png" /></p> <p></p> <p> (5)在此运行脚本,启动httpd服务</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180333-77.png" title="1433174245552809.png" alt="16.png" /></p> <p></p> <p> (6)使用浏览器测试是否可以正常访问</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-100.png" title="1433174376856264.png" alt="17.png" /></p> <p></p> <p></p> <p> 第二种方法:如果已安装了rpm格式的httpd,可以修改httpd服务,让其可以控制编译安装的httpd</p> <p> (1)确认系统已经安装rpm格式的httpd</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-2.png" title="1433127724123392.png" alt="2.png" /></p> <p> (2) 修改rpm格式的httpd启动脚本,修改内容如下</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-75.png" title="1433173009220845.png" alt="11.png" /></p> <p> (3)启动httpd服务</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-72.png" title="1433173147960700.png" alt="12.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703180333-93.png" title="1433173154543602.png" alt="13.png" /></p> <p></p> <p> (4)使用浏览器测试访问</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-96.png" title="1433174412794593.png" alt="17.png" /> </p> <p> </p> <p> 三、虚拟主机配置</p> <p> 编辑/etc/apache/httpd.conf文件,注释掉主服务器的文档目录,启动虚拟主机的配置文件目录,监听在多个端口</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-30.png" title="1433227691113426.png" alt="24.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-43.png" title="1433214663905772.png" alt="21.png" /> </p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-63-1.png" title="1433214672643808.png" alt="22.png" /> </p> <p></p> <p> 1、配置虚拟主机</p> <p> (1)基于端口的虚拟主机</p> <p> ①编辑/etc/apache/extra/httpd-vhosts.conf,添加虚拟主机</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-54.png" title="1433227654723829.png" alt="23.png" /></p> <p> </p> <p> ②创建/var/www/{a.com,b.com},并在其目录下创建index.html默认文件</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703180333-10.png" title="1433227895153083.png" alt="26.png" /></p> <p> </p> <p> ③重新启动httpd服务 <img src="/upload/sx3evol0et2.png" title="1433227746476851.png" alt="25.png" /></p> <p> </p> <p> ④测试基于端口的虚拟主机是否可以成功访问</p> <p> <img src="/upload/t3drqvt3pvm.png" title="1433302716126394.png" alt="27.png" /></p> <p> <img src="/upload/faqjm5n3lm1.png" title="1433302724932822.png" alt="29.png" /></p> <p> </p> <p></p> <p> ⑤访问被拒绝,解决办法,编辑/etc/apache/extra/httpd-vhosts.conf,添加授权信息</p> <p> <img src="/upload/yu1uimjgtst.png" title="1433228019201368.png" alt="30.png" /> </p> <p></p> <p> ⑥重新载入httpd配置文件,重新访问</p> <p> <img src="/upload/wtpx3xf0f2a.png" title="1433228106529695.png" alt="31.png" /></p> <p> <img src="/upload/f5j3qrz0hjz.png" title="1433302692126362.png" alt="32.png" /></p> <p> <img src="/upload/lwzd2r3a4vj.png" title="1433302701600270.png" alt="33.png" /></p> <p> </p> <p></p> <p> (2)配置基于IP地址的虚拟主机</p> <p> ①编辑/etc/apache/extra/httpd-vhosts.conf,修改内容如下</p> <p><img src="/upload/vo3gf3tq3y3.png" title="1433303487116594.png" alt="34.png" /></p> <p></p> <p> ②给主机配置多个ip地址</p> <p> <img src="/upload/qjkk32du5pc.png" title="1433303715140939.png" alt="35.png" /></p> <p> </p> <p> ③重启httpd服务器,用不同的ip访问web服务 </p> <p> <img src="/upload/4f5f3n1p4wp.png" title="1433308509520514.png" alt="38.png" /></p> <p> <img src="/upload/xi1ljibmzgt.png" title="1433308379138566.png" alt="36.png" /></p> <p> <img src="/upload/2xtyuip5u1u.png" title="1433308388113807.png" alt="37.png" /></p> <p></p> <p> (3)配置基于主机名的虚拟主机</p> <p> ①编辑/etc/apache/extra/httpd-vhosts.conf,修改虚拟主机配置文件</p> <p> <img src="/upload/f3hzkjtmuys.png" title="1433309136328852.png" alt="39.png" /> </p> <p> </p> <p> ②修改本地主机的host文件,添加以下信息</p> <p> <img src="/upload/wdowim0aqng.png" title="1433309366341744.png" alt="40.png" /></p> <p></p> <p> ③重启httpd服务,使用主机名进行访问</p> <p> <img src="/upload/lgxkgsolhc2.png" title="1433309769507710.png" alt="41.png" /></p> <p> <img src="/upload/doubeuiqz4f.png" title="1433309778617971.png" alt="42.png" /></p> <p> <img src="/upload/ivmp1wesag1.png" title="1433309788625557.png" alt="43.png" /></p> <p></p> <p></p> <p> </p> <p> </p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信