1、Apache的安装目录结构
目录名称 |
描 述 |
Bin |
是Apache执行文件所在的目录。例如,Apache的主要执行文件apachectl,使用这个命令可以用来控制Apache服务器开启或停止。还有Apache的密码保护文件htpasswd,当用户在某些网页需要输入账号与密码时,Apache本身提供一个最基本的密码保护方式,该密码的产生就是透过这个指令来完成的 |
cgi-bin |
预设给一些可执行的CGI网页程序存放的目录,当用户输入http://localhost/cgi-bin/时所显示的数据所存储的目录 |
error |
默认错误应答文件目录。如果因为服务器设置或者浏览器要求的数据错误时,在浏览器上出现的错误信息存放的位置 |
htdocs |
默认Web文档根目录,就是用户存放网页和存放默认首页的位置。用户通过浏览器中输入地址访问这个下面的文件,并将文件内容传回给用户浏览器,显示成美妙的页面供给用户浏览 |
icons |
这个目录提供Apache预设给予的一些小图示 |
Logs |
Apache日志文件存放的位置。其中包括访问日志access_log和错误日志error_log文件。访问日志access_log记录了所有对Web服务器的访问活动,例如,记录了客户端的IP地址和在什么时间访问了哪个页面等信息。错误日志error_log记录了所有对Web服务器的错误访问活动 |
Man |
Apache服务器配置文件的帮助手册所在目录 |
modules |
Apache服务器所支持的动态加载模块所在的位置 |
2、配置文件
除了要了解Apache家目录下的子目录的作用,还有两个比较重要的目录需要掌握,就是存入Apache配置文件和子配置文件的两个目录,如下所示:
/etc/httpd/目录:在通过源代码包安装Apache时,为Apache指定的主配置文件httpd.conf存放的目录。
/etc/httpd/extra/目录:该目录为Apache扩展及模块配置文件目录。最新版本Apache服务器不仅有一个httpd.conf作为主配置文件,还存在一些辅助配置文件被存放在这个目录下。
3、查看加载了哪些模块
apachectl -l
- oracle@b2b_plat_13619:/home/oracle/tmp/install/bin>./apachectl -l
- Compiled in modules:
- core.c
- mod_authn_file.c
- mod_authn_default.c
- mod_authz_host.c
- ..................
4、部分参数说明
(1)KeepAlive On
放动态网页的就 KeepAlive Off 以提高吞吐量,放静态内容如图片、js代码等就 KeepAlive On 以减少TCP连接建立次数。
(2)工作模式
apache 有两种工作模式profork、worker。
profork是默认的apache工作模式,apache1.3种采用的就是profork模式,prefork是进程工作,使用单独的子进程来处理请求,是最稳定的MPM之一。
worker是一种进程加线程的工作模式,系统开销要小于prefork模式,但稳定性方面要差一些。
编译apache时可以选择工作模式
例:
如想使用worker模式,可以使用如下参数
./configure -with-mpm=worker
MaxClients是这些指令中最为重要的一个,设定的是Apache可以同时处理的请求,是对Apache性能影响最大的参数。其缺省值150是远远不够的,如果请求总数已达到这个值(可通过ps -ef|grep http|wc -l来确认),那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下很多而HTTP访问却很慢的主要原因。系统管理员可以根据硬件配置和负载情况来动态调整这个值。虽然理论上这个值越大,可以处理的请求就越多,但Apache默认的限制不能大于256。如果把这个值设为大于256,那么 Apache将无法起动。事实上,256对于负载稍重的站点也是不够的。在Apache 1.3中,这是个硬限制。如果要加大这个值,必须在“configure”前手工修改的源代码树下的src/include/httpd.h中查找 256,就会发现“#define HARD_SERVER_LIMIT 256”这行。把256改为要增大的值(如4000),然后重新编译Apache即可。在Apache 2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients。
ServerLimit的最大值是20000,对于大多数站点已经足够。如果一定要再加大这个数值,对位于源代码树下server/mpm/prefork/prefork.c中以下两行做相应修改即可:
#define DEFAULT_SERVER_LIMIT 256
#define MAX_SERVER_LIMIT 20000
注:ServerLimit的值是MaxClients值的最大限制值,即 MaxClients<=ServerLimit
worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是 20000)。这两个值位于源码树server/mpm/worker/worker.c中的以下两行:
#define DEFAULT_SERVER_LIMIT 16
#define MAX_SERVER_LIMIT 20000
【注意】
1、在apache中设置循环写入log的方式:CustomLog /path combined
ErrorLog "|/usr/alibaba/cronolog/sbin/cronolog /home/qaadmin/work/deploy1.4.2_trunk/out/logs/error_log.%w"
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/qaadmin/work/deploy1.4.2_trunk/out/logs/access_log combined
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/403674,如需转载请自行联系原作者