1、网厅系统apache安装配置详细操作网厅系统Apache安装详细步骤版本管理作者版本修改时间修改内容张俊学V1.02011年5月17日星期二张俊学V1.12011年5月31日星期二新增“查询主机内存”1 Apache软件下载 22 Apache软件升级 33 Aapche软件安装 43.1 步骤1 43.2 步骤2 63.3 步骤3 64 Apache服务配置 64.1 Httpd.conf配置 74.1.1 修改运行用户 74.1.2 修改服务端口号 74.1.3 加载需要的模块 84.2 httpd-vhosts.conf配置 84.3 httpd-mpm.conf配置 115 Apach
2、e服务起停 136 Apache服务查看 137 Apache相关查询 147.1 linux下如何查看apache的请求进程数 147.2 查询cpu数量 167.3 查询主机内存 167.4 查询使用的端口 178 Apache配置中遇到的问题 178.1 could not bind to address 171 Apache软件下载安装apache软件最好使用官网上面最新稳定的发布包,目前安装本人下载是的httpd-2.2.18的版本,该版本算是比较稳定的。下载地址:http:/httpd.apache.org/有一个2.3.11-beta (released 2011-03-07)发
3、布版本,考虑稳定性我还是选择2.2.18 (released 2011-05-11)版本。下载到的源码格式一般是.tar.gz格式的文件,把文件上传到服务器上,用以下命令解压:gzip d filename.tar.gz上面的命令会解压得到一个filename.tar文件,再用以下命令解压tar文件,生成apache的源文件目录:tar xvf filename.tar2 Apache软件升级升级的第一步是阅读源代码目录中的发布公告(release announcement)和CHANGES文件以寻找可能会对你的站点产生影响的变化。如果主板本号的变化(例如1.32.0或2.02.2)表明编译时
4、和运行时的配置发生了重大变化,需要手动调整,所有模块也需要升级以兼容新版本的模块API 。小幅度的版本升级(例如:2.2.552.2.57)很容易。make install 的过程不会改写任何已经存在的文档、日志、配置文件。此外,开发者也会尽量兼容上一版本的configure选项、运行时配置、模块API 。大多数情况下,你将能够使用与上一版本完全相同的configure命令行和运行时配置,而你原来的所有模块也将正常工作。如果你保存了上一次安装后build子目录中的config.nice文件,升级将更加平滑。这个文件精确地保存了所有对目录树进行配置的configure命令行。你只需要将confi
5、g.nice文件复制到新的源代码目录树的根文件夹并进行你希望的修改后,然后运行下面的命令即可完成升级:$ ./config.nice$ make$ make install$ PREFIX/bin/apachectl -k graceful-stop$ PREFIX/bin/apachectl -k start建议:你应该总是在将新版本的Apache投入正式运行前,对这个新版本进行足够的、针对你的实际运行环境的测试。比如,你可以使用一个不同的 -prefix 设置将新版本安装在一个不同的目录,并使用Listen指令在一个不同的端口监听。经过一段时间的测试以发现可能存在的问题,然后再做出最后的决
6、定。3 Aapche软件安装安装apache其实步骤很简单,只是有些细节需要注意,下面的安装步骤是本人的详细总结;在看步骤之前请要学习的朋友先看看自己安装apache服务的用途,本人安装apache服务的主要用途就是做一个网厅前置机的分发、安全过滤、负载均衡服务器,其角色起着中间转发作用。3.1 步骤1在apache的源文件目录下,执行以下命令,对apache进行编译前的环境检查,生成优化的编译文件选项。其中的-prefix=/apache/local/apache 是指定安装目录的,可以根据实际情况来指定。完整命令如下:./configure -prefix=/apache/local/ap
7、ache82 -enable-so -with-mpm=worker -enable-mods-shared=deflate alias cache headers proxy proxy_balancer proxy_connect proxy_ftp proxy_http rewrite注意:proxy_ajp、proxy_scgi和dumpio在前置系统暂不需要,如有其他需要可以加入。说明:根据自己所搭建服务器的要求,只需要选择性加载需要的模块用enable-mods-shared来区分值用单引号包含,模块名用空格分隔。详细的模块可以参考Apache2.2中文手册.chm-enable-
8、so:有两种使用模块的方法:一是静态连接进核心,二是作为DSO模块动态加载;如果编译中包含任何DSO模块,则mod_so会被自动包含进核心。如果希望核心能够装载DSO,但不实际编译任何DSO模块,则需明确指定-enable-so=static;如果写成-enable-so意味着是作为DSO模块动态加载。-with-mpm: Apache 2.x 支持插入式并行处理模块,称为多路处理模块(MPM)。在编译Apache时你必须选择也只能选择一个MPM,这里有几个针对非UNIX系统的MPM:beos, mpm_netware, mpmt_os2, mpm_winnt。对类UNIX系统,有几个不同的M
9、PM可供选择,他们都会影响到httpd的速度和可伸缩性: workerMPM使用多个子进程,每个子进程中又有多个线程。每个线程处理一个请求。该MPM通常对高流量的服务器是一个不错的选择。因为它比preforkMPM需要更少的内存且更具有伸缩性。 preforkMPM使用多个子进程,但每个子进程并不包含多线程。每个进程只处理一个链接。在许多系统上它的速度和workerMPM一样快,但是需要更多的内存。这种无线程的设计在某些情况下优于workerMPM:它可以应用于不具备线程安全的第三方模块(比如php3/4/5),且在不支持线程调试的平台上易于调试,而且还具有比workerMPM更高的稳定性。
10、关于MPM的更多内容,请参考其文档。注意:该操作需要花费较长时间,完成后再执行以下命令进行编译:3.2 步骤2进入httpd-2.2.18的目录,cd httpd-2.2.18Make 即可进行编译环节3.3 步骤3步骤2完成后,在同一目录下进行安装,命令:Make install安装完成后即可进行相关的服务配置。4 Apache服务配置Apache的配置主要是在apache的配置目录下的httpd.conf文件,按照我们安装的目录,该文件位于/apache/local/apache/conf/httpd.conf,在运行apache之前,需要先对该配置文件做些修改,才能正常启动apache。
11、4.1 Httpd.conf配置4.1.1 修改运行用户找到该配置文件,搜索User和Group并按以下修改:找到user和group的配置,修改如下:User nobodyGroup nobody不修改会提示的错误信息:httpd: bad group name daemon解决次问题有两种方法:4 添加一个名为daemon的aix操作系统用户和群组 4 vi /usr/local/apache2/conf/httpd.conf 修改User daemon行数据为User nobody,Group daemon 行数据为 Group nobody 执行命令:/usr/local/apache
12、2/bin/apachectl -k start 以便启动apache web服务器4.1.2 修改服务端口号因为80端口的监听需要root权限,所以把端口改成8080或其他可用端口。找到配置项Listen并修改。Listen 80804.1.3 加载需要的模块mod_wl_22.so(注意该模块apache是不会生成的)是weblogic和apache的插件,可以从weblogic的安装目录下找到。对就不同的apache会有不同的插件文件,需要选用正确的插件才能正常工作。LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_
13、http_module modules/mod_proxy_http.soLoadModule proxy_ftp_module modules/mod_proxy_ftp.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule weblogic_module modules/mod_wl_22.so如果没有以上的模块文件生成,也可以使用单个生成的方法来生成这些so文件。在apache的源文件目录下,执行命令如下:/apache/local/apache2/bin/apxs -i -a -c ./mod_
14、proxy.c proxy_util.c/apache/local/apache2/bin/apxs -i -a -c ./mod_proxy_connect.c/apache/local/apache2/bin/apxs -i -a -c ./mod_proxy_ftp.c/apache/local/apache2/bin/apxs -i -a -c ./mod_proxy_http.c/apache/local/apache2/bin/apxs -i -a -c ./mod_rewrite.c4.2 httpd-vhosts.conf配置增加虚拟机配置,修改Server Name,WebL
15、ogicCluster,WebLogicHost,WebLogicPort等配置,改成真正提供服务的地址和端口,注意WebLogicCluster与WebLogicHost,WebLogicPort不能同时开启,WebLogicHost,WebLogicPort是配置的单server的情况,WebLogicCluster是配置的集群的情况。为了让配置看起来更清晰,虚拟机的配置可以写到extra目录下的httpd-vhosts.conf文件里面,然后在httpd.conf里面用Include conf/extra/httpd-vhosts.conf语句把配置文件包含进来。 #ServerName
16、 218.202.0.240 ServerName 10.168.27.221 #ErrorDocument 403 http:/10.168.31.131:40009/err.htm ErrorLog logs/portal_error_log #CustomLog |/apache/local/apache/bin/rotatelogs /apache/local/apache/logs/ics_%Y%m%d.log 86400 combined Header add MyHeader %D %t #WebLogicCluster 10.168.31.131:40001,10.168.31
17、.131:40002,10.168.31.131:40003,10.168.31.131:40004 WebLogicHost 10.168.31.131 WebLogicPort 40009 WLCookieName ICS_JSESSIONID MatchExpression / MatchExpression /* MatchExpression /*.* RewriteCond %REQUEST_URI /.*$ RewriteCond %QUERY_STRING !$ RewriteCond %REQUEST_URI !/ExceptionInfo.htm.*$ RewriteRul
18、e /(.*)$ /ExceptionInfo.html R=301,L RewriteCond %QUERY_STRING .*.*$ OR RewriteCond %QUERY_STRING .*%3c.*$ OR RewriteCond %QUERY_STRING .*%3C.*$ OR RewriteCond %QUERY_STRING .*(.*$ OR RewriteCond %QUERY_STRING .*.*$ OR RewriteCond %QUERY_STRING .*%7b.*$ OR RewriteCond %QUERY_STRING .*%7B.*$ OR Rewri
19、teCond %QUERY_STRING .*script.*$ NC RewriteCond %QUERY_STRING .*.*$ OR RewriteRule /(.*)$ /ExceptionInfo.html R=301,L RewriteRule .*$ - F,L RewriteCond %QUERY_STRING .*t.*$ RewriteRule /(.*)$ /ExceptionInfo.html R=301,L RewriteCond % (TRACE|TRACK) 4.3 httpd-mpm.conf配置不同工作模式下的线程配置如下:在安装的时候可以指定apache的
20、工作模式,一般在unix下使用的是prefork工作模式,也可以通过在configure时指定apache的工作模式,在不同的工作模式下,对应的配置也是不同的,apache2.2下有专门的工作模式的配置文件httpd-mpm.conf。可以用以下的命令查看apache使用的工作模式:Httpd l 或者 apchectl l在输出的结果中如果有worker.c,则说明是worker工作模式,如果有prefork.c则说明是prefork工作模式。(1)Worker工作模式对应的配置段为 ServerLimit 240 StartServers 50 MaxClients 12000 MinSp
21、areThreads 75 MaxSpareThreads 200 ThreadsPerChild 50 MaxRequestsPerChild 1000说明如下:ServerLimit:服务数量限制StartServers为初始的启动进程数MaxClients 为最大的可连接客户端数MinSpareThreads 为最少的空闲线程数MaxSpareThreads 为最大的空闲线程数ThreadsPerChild 为每个进程的子线程数MaxRequestsPerChild 为每个线程可以处理的请求数,处理数达到这个数目时,会自动销毁,重新创建一个线程,为0时不限制(2)prefork工作模式对
22、应的配置段为 StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0说明:StartServers为初始的启动进程数MinSpareThreads 为最少的空闲进程数MaxSpareThreads 为最大的空闲进程数MaxClients 为最大的可连接客户端数MaxRequestsPerChild 为每个线程可以处理的请求数,处理数达到这个数目时,会自动销毁,重新创建一个进程,为0时不限制。完成以上的三项配置后即可进行apache服务启动检查服务运行情况5 Apache服务
23、起停启动服务:apachctl k start停止服务:apachectl k stop还有优雅重启等操作,详细区别请参考Apache2.2中文手册.chm启动成功后在浏览器中输入http:/10.168.27.221:82测试 服务是否可以访问。6 Apache服务查看Apache队列查看与统计netstat -na|grep EST|grep 8080|more上面的命令输出以下格式的信息:Recv-Q Send-Q tcp4 0 1483 10.168.27.221.8080 222.172.216.188.3684 ESTABLISHEDtcp4 0 0 10.168.27.221.8
24、080 221.213.33.58.4985 ESTABLISHEDtcp4 0 0 10.168.27.221.8080 221.213.33.58.4986 ESTABLISHEDtcp4 0 0 10.168.27.221.8080 221.213.33.58.4987 ESTABLISHED我们主要关注一下第二列和第三列的信息,第二列表示的是接收队列,第三列表示的是发送队列,如果数字不为0,说明还有这么多字节的数据没有接收或发送完成。在跟踪的过程中发现,如果接收队列有比较多的没有接收完成的数据的话,会导致前置机接入变得缓慢,如果严重的话,可能需要重新起动apache应用。而发送队列有一
25、些数据没有传送完成的话,好像没有太大的影响。使用以下命令可以统计当前的连接数:netstat -na|grep EST|grep 8080|wc -l7 Apache相关查询7.1 linux下如何查看apache的请求进程数在linux下如何查看apache的请求进程数: 要想在Linux系统下查看Apache的负载情况,最简单有效的方法就是查看Apache Server Status,在没有开启Apache Server Status的情况下,或安装的是其他的Web Server,比如Nginx的时候,可以使用下面的命令查看。 #ps -ef|grep httpd|wc -l 1388 统
26、计httpd进程数,这个请求会启动一个进程,使用于Apache服务器。 表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整,我这组服务器中每台的峰值曾达到过2002。 #netstat -nat|grep -i 80|wc -l 4342 netstat -an会打印系统当前网络链接状态,而grep -i “80是用来提取与80端口有关的连接的, wc -l进行连接数统计。 最终返回的数字就是当前所有80端口的请求总数。#netstat -na|grep ESTABLISHED|wc -l 376 netstat -an会打印系统当前网络链接状态,而grep
27、ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。 最终返回的数字就是当前所有80端口的已建立连接的总数。 #netstat -n | awk /tcp/ +S$NF END for(a in S) print a, Sa FIN_WAIT_1 286 FIN_WAIT_2 960 SYN_SENT 3 LAST_ACK 32 CLOSING 1 CLOSED 36 SYN_RCVD 144 TIME_WAIT 2520 ESTABLISHED 352 这条语句是在张宴那边看到,据说是从新浪互动社区事业部技术总监王老大那儿获得的,非常不错。返回参数的说明如下: SYN_RE
28、CV表示正在等待处理的请求数; ESTABLISHED表示正常数据传输状态; TIME_WAIT表示处理完毕,等待超时结束的请求数。7.2 查询cpu数量1、 aix和hp上面;UNIX上查看CPU个数和内存 lsdev -C | grep Process | wc lnmon:后的结果是目前的cpu都是双核,上面的cpu显示的双核数量是20,CPU个数为10个。2、 solaris上面:psrinfo -v | grep Status of processor | wc l7.3 查询主机内存 使用topas命令:如上图红色圈显示部分,内存为65535M,约64G7.4 查询使用的端口查看8
29、080端口启动没启动netstat -an | grep 80808 Apache配置中遇到的问题8.1 could not bind to addressPermission denied: make_sock: could not bind to address :82 Apache 虚拟主机想建立一个测试用的虚拟主机,遇到了这个问题:uH /apache/local/apache82/bin$apachectl -k startWarning: DocumentRoot /apache/local/apache82/docs/dummy- does not existWarning: D
30、ocumentRoot /apache/local/apache82/docs/dummy- does not exist(13)Permission denied: make_sock: could not bind to address :82(13)Permission denied: make_sock: could not bind to address 0.0.0.0:82no listening sockets available, shutting downUnable to open logs解决办法:semanage port -l|grep httpsemanage port -a -t http_port_t -p tcp 82这个两个命令一是查看,一个是添加,添加完再查看一遍,如果有