日期:2014-05-16  浏览次数:20815 次

apache2配置详解

1、ServerRoot

ServerRoot "/usr/local/apache2"??? #apache 软件安装的位置。配置文件中其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。

?

2、PidFile logs/httpd.pid #第一个httpd 进程(所有其他进程的父进程)的进程号文件位置。在httpd-mpm.conf文件里

?

3、Listen 80 #服务器监听的端口号。可以监听多个

Listen 80
Listen 6200
Listen 6201
Listen 6101

?

4、ServerName www.kong.com:80 #主站点名称(网站的主机名)。

?

5、ServerAdmin admin@kong.com #管理员的邮件地址。

?

6、DocumentRoot "/mnt/web/clusting" #主站点的网页存储位置。

以下是对主站点的目录进行访问控制:
<Directory "/mnt/web/clusting">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

?

? Options:配置在特定目录使用哪些特性,常用的值和基本含义如下:

??? ExecCGI: 在该目录下允许执行CGI 脚本。
??? FollowSymLinks: 在该目录下允许文件系统使用符号连接。

??? SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。

??? Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex 指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。

?

??AllowOverride:允许存在于.htaccess 文件中的指令类型(.htaccess 文件名是可以改变的,其文件名由AccessFileName 指令决定),即.htaccess可以覆盖该命令:

???? None: 当AllowOverride 被设置为None 时。不搜索该目录下的.htaccess 文件(可以减小服务器开销)。?

???? All: 在.htaccess 文件中可以使用所有的指令,即.htaccess文件中的命令优先。

???? Order:控制在访问时Allow 和Deny 两个访问规则哪个优先:
???? Allow : 允许访问的主机列表( 可用域名或子网, 例如: Allow from192.168.0.0/16)。
???? Deny:拒绝访问的主机列表。

?

7、DirectoryIndex index.html index.htm index.php #首页文件的设置

?

?

8、apache2的工作方式

apache2?主要的优势就是对多处理器的支持更好,在编译时同过使用--with-mpm
选项来决定apache2 的工作模式。如果知道当前的apache2 使用什么工作机制,可以
通过httpd -l 命令列出apache 的所有模块,就可以知道其工作方式:

?

(1)prefork(进程)工作方式:如果httpd -l 列出prefork.c,则需要对下面的段进行配置:
<IfModule prefork.c>
StartServers 5 #启动apache 时启动的httpd 进程个数。
MinSpareServers 5 #服务器保持的最小空闲进程数。
MaxSpareServers 10 #服务器保持的最大空闲进程数。
MaxClients 150 #最大并发连接数。
MaxRequestsPerChild 1000 #每个子进程被请求服务多少次后被kill 掉。0 表示
不限制,推荐设置为1000。
</IfModule>
在该工作模式下,服务器启动后起动5 个httpd 进程(加父进程共6 个,通过ps -ax|grep httpd 命令可以看到)。当有用户连接时,apache 会使用一个空闲进程为该连接服务, 同时父进程会fork(复制)一个子进程。直到内存中的空闲进程达到MaxSpareServers。该模式是为了兼容一些旧版本的程序。缺省编译时的选项。

?

?(2)worker(线程)工作方式:如果httpd -l 列出worker.c,则需要对下面的段进行配置:
<IfModule worker.c>
StartServers 2 #启动apache 时启动的httpd 进程个数。
MaxClients 150 #最大并发连接数。
MinSpareThreads 25 #服务器保持的最小空闲线程数。
MaxSpareThreads 75 #服务器保持的最大空闲线程数。
ThreadsPerChild 25 #每个子进程的产生的线程数。
MaxRequestsPerChild 0 #每个子进程被请求服务多少次后被kill 掉。0 表示不限制,推荐设置为1000。
</IfModule>

该模式是由线程来监听客户的连接。当有新客户连接时,由其中的一个空闲线程接受连接。服务器在启动时启动两个进程, 每个进程产生的线程数是固定的(ThreadsPerChild 决定),因此启动时有50 个线程。当50 个线程不够用时,服务器自动fork 一个进程,再产生25 个线程。

?

?(3)perchild:如果httpd -l 列出perchild.c,则需要对下面的段进行配置:
<IfModule perchild.c>
NumServers 5 #服务器启动时启动的子进程数

StartThreads 5 #每个子进程启动时启动的线程数
MinSpareThreads 5 #内存中的最小空闲线程数
MaxSpareThreads 10 #最大空闲线程数
MaxThreadsPerChild 2000 #每个线程最多被请求多少次后退出。0 不受限制。
MaxRequestsPerChild 10000 #每个子进程服务多少次后被重新fork。0 表示不受
限制。
</IfModule>
该模式下,子进程的数量是固定的,线程数不受限制。当客户端连接到服务器时,又空闲的线程提供服务。如果空闲线程数不够,子进程自动产生线程来为新的连接服务。该模式用于多站点服务器。

?

?9、持久性连接设置

Timeout 300 #超时,发送或接收两个TCP 包之间的时间间隔(单位秒)
KeepAlive On #开启持久性连接功能。即当客户端连接到服务器,下载完数据后仍然保持连接状态。
MaxKeepAliveRequests 100 #一个连接服务的最多请求次数。
KeepAliveTimeout 30 #持续连接多长时间,该连接没有再请求数据,则断开该连接。缺省为15 秒

?

?