apache2配置参数详解--转自网络
2)指定目录的默认配置,不安装以上默认的某个module(以不安装mod_status.c为例),另外还要加安mod_expires、headers、deflate模块。
[root@yy httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --disable-status --enable-expires --enable-headers --enable-deflate
(以下配置不可以执行:
[root@yy httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --disable-modules=status --enable-modules=expires --enable-modules=headers --enable-modules=deflate)make
make install[root@yy bin]# ./httpd -l
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_deflate.c
mod_log_config.c
mod_env.c
mod_expires.c
mod_headers.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c
[root@yy httpd-2.2.9]# ls /usr/local/apache2/modules
httpd.exp 3)指定目录的默认配置,通过DSO安装expires、headers、deflate模块。
[root@yy httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-expires=shared --enable-headers=shared --enable-deflate=shared[root@yy apache2]# ./bin/httpd -l
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_log_config.c
mod_env.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c[root@yy apache2]# ls /usr/local/apache2/modules
httpd.exp
mod_deflate.so
mod_expires.so
mod_headers.so[root@yy apache2]# grep "Load" /usr/local/apache2/conf/httpd.conf
# have to place corresponding `LoadModule' lines at this location so the
# LoadModule foo_module modules/mod_foo.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
4)指定目录的默认配置,并用—enable-modules=most安装模块。
[root@yy httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-modules="most"
[root@yy httpd-2.2.9]# make
[root@yy httpd-2.2.9]# make install[root@yy bin]# ./httpd -l
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_dbm.c
mod_authn_anon.c
mod_authn_dbd.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_dbm.c
mod_authz_owner.c
mod_authz_default.c
mod_auth_basic.c
mod_auth_digest.c
mod_dbd.c
mod_dumpio.c
mod_ext_filter.c
mod_include.c
mod_filter.c
mod_substitute.c
mod_deflate.c
mod_log_config.c
mod_logio.c
mod_env.c
mod_expires.c
mod_headers.c
mod_ident.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_dav.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_info.c
mod_cgi.c
mod_dav_fs.c
mod_vhost_alias.c
mod_negotiation.c
mod_dir.c
mod_imagemap.c
mod_actions.c
mod_speling.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c[root@yy apache2]# ls /usr/local/apache2/modules
httpd.exp[root@yy conf]# grep "LoadModule" httpd.conf
# have to place corresponding `LoadModule' lines at this location so the
# LoadModule foo_module modules/mod_foo.so 5)指定目录的默认配置,并用--enable-modules=all安装模块。
略:本方法应与4)相同,1)、2)、4)5)都为静态的方法安装。 6)指定目录的默认配置,并用--enable-mods-shared=most安装模块。
[root@yy httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most
[root@yy httpd-2.2.9]# make
[root@yy httpd-2.2.9]# make install[root@yy bin]# ll /usr/local/apache2/modules/
total 2292
-rw-r--r-- 1 root root?? 8998 Sep 28 22:46 httpd.exp
-rwxr-xr-x 1 root root 24645 Sep 28 22:51 mod_actions.so
-rwxr-xr-x 1 root root 32884 Sep 28 22:51 mod_alias.so
-rwxr-xr-x 1 root root 22789 Sep 28 22:51 mod_asis.so
-rwxr-xr-x 1 root root 26076 Sep 28 22:51 mod_auth_basic.so
-rwxr-xr-x 1 root root 61070 Sep 28 22:51 mod_auth_digest.so
-rwxr-xr-x 1 root root 23170 Sep 28 22:50 mod_authn_anon.so
-rwxr-xr-x 1 root root 26478 Sep 28 22:50 mod_authn_dbd.so
-rwxr-xr-x 1 root root 24001 Sep 28 22:50 mod_authn_dbm.so
-rwxr-xr-x 1 root root 21213 Sep 28 22:50 mod_authn_default.so
-rwxr-xr-x 1 root root 23760 Sep 28 22:50 mod_authn_file.so
-rwxr-xr-x 1 root root 26441 Sep 28 22:51 mod_authz_dbm.so
-rwxr-xr-x 1 root root 21161 Sep 28 22:51 mod_authz_default.so
-rwxr-xr-x 1 root root 26916 Sep 28 22:50 mod_authz_groupfile.so
-rwxr-xr-x 1 root root 26206 Sep 28 22:50 mod_authz_host.so
-rwxr-xr-x 1 root root 23938 Sep 28 22:51 mod_authz_owner.so
-rwxr-xr-x 1 root root 22122 Sep 28 22:50 mod_authz_user.so
-rwxr-xr-x 1 root root 71215 Sep 28 22:51 mod_autoindex.so
-rwxr-xr-x 1 root root 57287 Sep 28 22:51 mod_cgi.so
-rwxr-xr-x 1 root root 144418 Sep 28 22:51 mod_dav_fs.so
-rwxr-xr-x 1 root root 273184 Sep 28 22:51 mod_dav.so
-rwxr-xr-x 1 root root 42317 Sep 28 22:51 mod_dbd.so
-rwxr-xr-x 1 root root 48280 Sep 28 22:51 mod_deflate.so
-rwxr-xr-x 1 root root 24606 Sep 28 22:51 mod_dir.so
-rwxr-xr-x 1 root root 26682 Sep 28 22:51 mod_dumpio.so
-rwxr-xr-x 1 root root 23639 Sep 28 22:51 mod_env.so
-rwxr-xr-x 1 root root 30009 Sep 28 22:51 mod_expires.so
-rwxr-xr-x 1 root root 46463 Sep 28 22:51 mod_ext_filter.so
-rwxr-xr-x 1 root root 38425 Sep 28 22:51 mod_filter.so
-rwxr-xr-x 1 root root 41942 Sep 28 22:51 mod_headers.so
-rwxr-xr-x 1 root root 27530 Sep 28 22:51 mod_ident.so
-rwxr-xr-x 1 root root 37834 Sep 28 22:51 mod_imagemap.so
-rwxr-xr-x 1 root root 93876 Sep 28 22:51 mod_include.so
-rwxr-xr-x 1 root root 41403 Sep 28 22:51 mod_info.so
-rwxr-xr-x 1 root root 60413 Sep 28 22:51 mod_log_config.so
-rwxr-xr-x 1 root root 25039 Sep 28 22:51 mod_logio.so
-rwxr-xr-x 1 root root 39079 Sep 28 22:51 mod_mime.so
-rwxr-xr-x 1 root root 78354 Sep 28 22:51 mod_negotiation.so
-rwxr-xr-x 1 root root 121464 Sep 28 22:51 mod_rewrite.so
-rwxr-xr-x 1 root root 31179 Sep 28 22:51 mod_setenvif.so
-rwxr-xr-x 1 root root 30849 Sep 28 22:51 mod_speling.so
-rwxr-xr-x 1 root root 44365 Sep 28 22:51 mod_status.so
-rwxr-xr-x 1 root root 31780 Sep 28 22:51 mod_substitute.so
-rwxr-xr-x 1 root root 25972 Sep 28 22:51 mod_userdir.so
-rwxr-xr-x 1 root root 29320 Sep 28 22:51 mod_vhost_alias.so
[root@yy bin]# ./httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c[root@yy conf]# grep "LoadModule" httpd.conf
# have to place corresponding `LoadModule' lines at this location so the
# LoadModule foo_module modules/mod_foo.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule dbd_module modules/mod_dbd.so
LoadModule dumpio_module modules/mod_dumpio.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule ident_module modules/mod_ident.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule info_module modules/mod_info.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so 7)指定目录的默认配置,并用--enable-mods-shared=all安装模块。
略:本方法应与6)相同,为动态的方法安装。 8)指定目录的默认配置,以上所有配置方法安装后Server MPM都为Prefork,可以用--with-mpm定制运行方式。
[root@yy httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --with-mpm=worker
[root@yy httpd-2.2.9]# make
[root@yy httpd-2.2.9]# make install
[root@yy apache2]# cd bin/
[root@yy bin]# ./httpd -V
Server version: Apache/2.2.9 (Unix)
Server built:?? Sep 28 2008 23:28:26
Server's Module Magic Number: 20051115:15
Server loaded: APR 1.3.0, APR-Util 1.3.0
Compiled using: APR 1.3.0, APR-Util 1.3.0
Architecture:?? 32-bit
Server MPM:???? Worker
threaded:???? yes (fixed thread count)
??? forked:???? yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/worker"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/usr/local/apache2"
-D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
安装完apache的一定要做的一件事情,就是把默认连接数调到最大。
一、
在/usr/local/apache/httpd.conf中加载MPM配置(去掉前面的注释):
# Server-pool management (MPM specific)
Include etc/apache22/extra/httpd-mpm.conf
二、
改httpd-mpm.conf 中的mpm_prefork_module模块设置为
<IfModule mpm_prefork_module>
??????????????? StartServers????????????????????? 5
??????????????? MinSpareServers?????????????????? 5
??????????????? MaxSpareServers????????????????? 10
??????????????? ServerLimit??????????????????? 5500
??????????????? MaxClients???????????????????? 5000
??????????????? MaxRequestsPerChild?????????????? 100
</IfModule>
为什么这么改,点击这里
三 、重启apache ,观察连接数,不要超过MaxClients
重 启httpd后,通过反复执行pgrep httpd|wc -l 来观察连接数,可以看到连接数在达到MaxClients的设值后不再增加,但此时访问网站也很流畅,那就不用贪心再设置更高的值了,不然以后如果网站访 问突增不小心就会耗光服务器内存,可根据以后访问压力趋势及内存的占用变化再逐渐调整,直到找到一个最优的设置值。
(MaxRequestsPerChild不能设置为0,可能会因内存泄露导致服务器崩溃)
实时检测HTTPD连接数:
watch -n 1 -d "pgrep httpd|wc -l"
?
MaxClients默认最大为250,若要超过这个值就要显式设置ServerLimit,且ServerLimit要放在MaxClients之前,值要不小于MaxClients,不然重启httpd时会有提示。
重 启httpd后,通过反复执行pgrep httpd|wc -l 来观察连接数,可以看到连接数在达到MaxClients的设值后不再增加,但此时访问网站也很流畅,那就不用贪心再设置更高的值了,不然以后如果网站访 问突增不小心就会耗光服务器内存,可根据以后访问压力趋势及内存的占用变化再逐渐调整,直到找到一个最优的设置值。
(MaxRequestsPerChild不能设置为0,可能会因内存泄露导致服务器崩溃)
更佳最大值计算的公式:
apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5