Ubuntu Apache 设置
相对于不是基于Debian的系统来说,Ubuntu使用一种不同的设计。我们来看一下主要的配置文件apache2.conf和ports.conf。
我们并不是真的要去改许多东西,仅仅是看一下主要的设置,并且明白它意味着什么,对它做改变会起到什么样的作用。
默认值
给出一个万能的配置是几乎不可能的,因为你要考虑很多实际的问题,比如预期的站点流量,分片大小,站点类型等等。
请记住:默认的Apache配置是不可能成为你站点的理想配置的。不要被优化安装的想法吓住,接下来的几篇文章将带你去理解定义之后的含义。
我的建议非常简单:试验。找到在你的配置下工作最好的。
ports.conf
我们由ports.conf文件开始:
sudo nano /etc/apache2/ports.conf
默认的条目是:
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
这似乎很显然。80端口是标准的HTTP端口。如果你加载了ssl模块,将会侦听443端口(HTTPS)。
配置Apache侦听其他的端口,比如说8080,只需要简单的添加:
Listen 8080
一旦添加了这条并且重新启动Apache,就会侦听8080端口。
apache2.conf
现在打开主要的Apache配置文件:
sudo nano /etc/apache2/apache2.conf
我将不在这里列出文件的内容,但是如果你对这些设置不熟悉,读一下注释,这些注释信息丰富并且直中要害。
你可能惊讶于配置文件记录的是多么好。我经常推荐去读一读它们,当然,可能刚开始的时候需要一些时间去理解它们,但是随着时间的推移,你将能够看一眼就理解怎么去修改。
让我们看一下一些主要的设置和它们的意义:
Timeout
默认值:
Timeout 300
简单的说,这个条目以秒为单位,设置了等待一个请求,执行它并且响应这个请求的最大时长。
默认值故意调高来适应不同的情况。你可以减小这个值使它更合理,比如说45或者更低。值的减小也有助于减小拒绝服务攻击的影响。
KeepAlive
默认值:
KeepAlive On
将其设置为On来支持持久连接到客户端,这样,每个文件,图片等等就不需要再通过建立新的连接来获取,这样可以使效率更高。下面是更进一步的设置:
MaxKeepAliveRequests
默认值:
MaxKeepAliveRequests 100
现在我们可以拥有持久连接了,设置每个连接最大的请求数,把这个值调高可以更加高效。如果你的站点有许多图片和javascript等等,试着把这个值调高到200。
KeepAliveTimeout
默认值:
KeepAliveTimeout 15
过多长时间一个连接断开来等待下一个连接呢?默认设置是很高的,你可以轻松的减少这个值到2或者3秒。如果在这个时间内没有收到新的请求,连接将会被中止。
这意味着什么呢?一旦一个连接建立,客户端请求页面上的文件,这个设置就会说:“呆在那儿别动,忽略掉其他的任何请求,直到你达到了时间限制,或者你从客户端得到了一个新的请求。”
为什么你需要一个更高的时间?这是为了防止这个站点有许多的交互。然而,大多数情况下,人们将访问一个页面,阅读一会,然后点击下个页面。你不需要连接呆在那儿什么也不干,并且忽略其它用户的请求。
prefork MPM
在Ubuntu Apache安装的时候,我们可以选择apache2-mpm-prefork而不是apache2-mpm-worker。如果你想要了解更多关于二者之间的区别,我推荐你阅读官方的apache文档。
默认值:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
在这里给出一个最适合你的站点的建议依旧是艰难的。读一下下面的定义,找找看是否有针对你站点运行有可以提高的地方。
StartServers:在启动时创建的子服务进程数量。
MinSpareServers:最小空闲子服务进程数量。
MaxSpareServers:最大空闲子服务进程数量――任何超过最大值的服务将会被中止。
不要把最大数量设置的小于最小值,否则apache会自动设置最大值为最小值加一。
MaxClients:设置apache可以处理的最大连接请求数,任何超过这个值的请求将会等待直到一个进程空闲下来。
MaxClients和最大访客数量不同,他是最大的请求数量。
还记得KeepAliveTimeout吗?它被调低来使得下一个请求可以执行并且原来的连接将会发起新的请求或者会等待下一个可能的空闲进程。
在大多数情况下,客户端并不是活跃的,那这个页面为例,你请求这个页面,并且花费一段时间阅读它,但是这个时候是不占用进程的,你是处于空闲状态。
MaxRequestsPerChild:设置在一个子进程终止之前可以处理多少个请求。默认值是0,意思是他将永远不会终止。
为什么要修改这个值呢?因为它可以帮助你管理内存分片的使用。
如果你修改默认值来给它限制一个有限的数值,这样将会在服务器不忙的时候减少进程数量,释放内存。
原文:Ubuntu Hardy - Apache configuration #1
翻译:Liu Bing
文章来源:unixoss.com
转载请保留出处。