我的 httpd.conf 详解

发布时间:2020-03-26编辑:脚本学堂
apache配置文件httpd.conf详解
    apche配置参数比较多,这里只写了我平时经常用到的几点:黑色文字是网上找的资料,蓝色是配置参数红色是我自己的看法,仅供参考

    Worker 由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients 设置了同时连入的clients最大总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。MinSpareThreads和 MaxSpareThreads的最大缺省值分别是75和250。这两个参数对apache的性能影响并不大,可以按照实际情况相应调节。

    ThreadsPerChild是worker MPM中与性能相关最密切的指令。ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用 ThreadLimit指令,它的最大缺省值是20000。Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild 值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是20000)。

    需要注意的是,如果显式声明了ServerLimit,那么它乘以 ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,否则 Apache将会自动调节到一个相应值。

<IfModule worker.c>
ServerLimit 25
ThreadLimit 200
StartServers 3
MaxClients 2000
MinSpareThreads 50
MaxSpareThreads 200
ThreadsPerChild 100
MaxRequestsPerChild 0
</IfModule>


-----
#ServerRoot:指出服务器保存其配置、出错和日志文件等的根目录
ServerRoot "/usr/loacl/apache2"
如虚机a站点配置的日志在 logs/test.log,那完整路径就/usr/loacl/apache2/logs/test.log
-----
#Timeout:接收和发送前超时秒数
Timeout 150
#KeepAlive:是否允许稳固的连接(每个连接有多个请求),
#设为"Off"则停用。
KeepAlive On
#KeepAliveTimeout:在同一个连接上从同一台客户上接收请求的秒数
KeepAliveTimeout 5
这3个值我一般都配合使用,如果网站的访问量很高,php占用的系统资源较高,就把KeepAliveTimeout往小调,或者直接把KeepAlive设置成Off试试。
------
#MaxKeepAliveRequests:在稳固连接期间允许的最大请求数,
#设为0表示无限制接入。
MaxKeepAliveRequests 1000
推荐将其设为一个较大的值,以提高性能
--------
# DocumentRoot:你的文档的根目录。默认情况下,所有的请求从这个目录进行应答。
DocumentRoot "/home/redhat/public_html"
DocumentRoot配置在全局参数里面,如果直接用IP来访问服务器,默认的就去读取这里面的文件。一般我把这里配置到一个错误页面,不允许IP来直接访问,正式的站点都通过虚拟主机模块来配置。
------
# DirectoryIndex:定义请求是一个目录时,Apache向用户提供服务的文件名
DirectoryIndex index.php index.html index.htm
定于默认首页的访问顺序,越前优先级越高,这个参数一般放在虚机主机模块里面定义,毕竟每个网站的默认首页文件可能不一样。
-------
# Typeconfig:定义在哪里查询mime.types文件。
TypeConfig conf/mime.types
# DefaultType:定义当不能确定MIME类型时服务器提供的默认MIME类型。
DefaultType text/plain
这个参数我的理解就是配置站点要识别哪些后缀名文件的配置参数,如果不认识,直接用text本文模式来显示。
-------
# LogLevel:控制记录在错误日志文件中的日志信息数量。
# 可能的值包括:debug,info,notice,warn,error,crit,alert,emerg。
LogLevel error
日志文件的
记录等级,这个根据站点情况来定,线上站点,一般配置成error来减少对磁盘的写操作。
-----
# 下面的指令为CustomLog指令定义格式别名。
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
这个是定于记录日志的格式,具体每个参数的作用可以自己google下。
-------------
指定接入日志文件的定位和格式(一般日志格式)。
CustomLog logs/access_log common
全局参数,默认的
正确日志记录文件和格式。一般一个服务器上都有多个站点,建议在虚拟主机模块里为每个站点定义一个日志文件。
-----------
# 这里是添加php 4支持的指令
AddType application/x-httpd-php .php
LoadModule php5_module modules/libphp5.so

配置apache支持php模块。
--------
下面是公司的一个虚拟主机配置,要增加一个主机,只要复制一份修改下站点名字,文件路径,日志名称即可。//后为注释
<VirtualHost *>
    ServerAdmin a12333a_li@163.com  
    DocumentRoot /www/lks.test.com    //配置网站文件位置
    ServerName
lks.test.com //站点域名
    Serveralias  zby.test.com  //站点别名
    ErrorLog  /dev/null  //错误日志记录位置
    CustomLog /dev/null common  //正常日志记录位置
    DirectoryIndex index.html index.php index.htm   //默认首页文件
</VirtualHost>