Linux Apache2 配置介绍
转自:http://blog.csdn.net/hursing/article/details/18730813
apache原指http server程序,后来成为了该程序的组织名,所以把原程序名定成了httpd,在2.0版后又叫apache2。目前在windows上还叫 httpd,在debian/ubuntu/linux mint系列的linux上,程序名是apache2。所以网上说httpd的资料,对apache2是部分适用的。官网本身也用httpd的说法,可以 理解为httpd是产品名,apache2的可执行程序名。
使用 sudo apt-get install apache2 就可以安装,我的linux mint装的是2.2版,Ubuntu13装的是2.4版,两者还有有点差别的。官方有指导文档说从2.2升级到2.4要做什么。http://httpd.apache.org/docs/2.4/upgrading.html。对用户来说最直接的就是模块数和名字有不同、配置文件位置有不同。
把网站根目录改去用户分区,可避免修改个文件都要root权限。方法:
2.2版:
/etc/apache2/sites-enabled/default
修改 DocumentRoot,并修改对应写有原路径(默认是/var/www)的Directory标签,即要改两处。DocumentRoot末尾
不要加 / ,Directory标签要加 / 。
2.4版:
/etc/apache2/sites-enabled/000-default.conf 修改 DocumentRoot,
/etc/apache2/apache2.conf 修改对应的Directory标签
(以上两种版本的sites-enabled下的配置文件名可能和这里的例子不同,各发行版会有自己的命名)
修改任何设置后,用命令sudo service apache2 restart重启服务。转载请注明出处:http://blog.csdn.net/hursing
/etc/apache2/envvars 是apache程序的参数配置文件,包括log路径,程序使用的用户名等。默认的log位置:/var/log/apache2/下有错误日志 error.log和访问日志access.log。这些配置都会export出来, service apache2在运行前会source envvars文件。如果手动运行apache2,就应该自己先source,否则会报一些参数未设置。
因为apache2在/usr/bin/下,所以命令行可在任何路径下使用apache2命令。 apache2 -h会列出可用的命令。有用的:
-v 查看版本
-V 查看编译时的设置
-l 查看编译时就集成的模块
-L 查看可用的配置文件指令
-t 检查所有配置文件是否有语法错误
/etc/apache2/mods-available/下表示可用的模块,load后缀存放模块的路径,conf后缀表示该模块的配置。
/etc/apache2/mods-enabled/下表示已启用的模块,主配置文件apache2.conf会引用到此目录的所有文件。此目录
下全是软链接,可用ls
-l看出来。把/etc/apache2/mods-available/下的文件软链接到/etc/apache2/mods-enabled/就会启
用对应的模块。
配置文件中 IfModule xxx 标签表示xxx模块启用的话才加入里面的参数
apache2有多种并发处理模型MPM,可查看http://httpd.apache.org/docs/current/mpm.html了解详情。默认是perfork模型,每个并发处理机都在一个独立进程里,其配置参数直接影响并发处理的性能。
2.2版:
打开/etc/apache2/apache2.conf,找到<IfModule mpm_prefork_module>标签
StartServers 启动程序时就启动多少个server进程
MinSpareServers 最小空闲server数
MaxSpareServers 最大空闲server数
MaxRequestsPerChild 每个server最多接受多少次请求。达到后就退出,这样可避免内存泄露。设为0则不限。
2.4版:
修改/etc/apache2/mods-enabled/mpm_perfork.conf,比2.2多一个参数。MaxRequestWorkers,最多的server数。如果这个数想填超过256,则要在之前加个参数MaxClients xxx。 http://httpd.apache.org/docs/current/mod/mpm_common.html有更多介绍。
以上可通过命令ps -ef | grep apache2 | wc -l 知道当前有几个进程在运行。(实际为那个数字-2,因为会算上命令本身和service主进程)
apache2.conf里面的参数属于core module,这4个常用:
Timeout 超时时间
KeepAlive On/Off 启动或关闭KeepAlive
MaxKeepAliveRequests 最大的KeepAlive连接数
KeepAliveTimeout 最大的KeepAlive时间,超时将关闭连接