• 安装apache2参数详解


    解压缩apache安装包,进入apache文件夹。

    安装:

    apache2.2.9
    ./configure --prefix=/usr/local/apache2 --enable-http --enable-modules=all --enable-rewrite --enable-so --enable-cgi --enable-cgid --enable-deflate=shared --enable-cache --enable-file-cache

    make
    make install

    注解:
    ./configure //配置源代码树
    --prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。
    --enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
    --enable-deflate=shared //支持网页压缩
    --enable-expires=shared //支持 HTTP 控制
    --enable-rewrite=shared //支持 URL 重写
    --enable-cache   //支持缓存
    --enable-file-cache   //支持文件缓存
    --enable-mem-cache   //支持记忆缓存
    --enable-disk-cache   //支持磁盘缓存
    --enable-static-support //支持静态连接(默认为动态连接)
    --enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
    --enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
    --enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序
    --enable-static-logresolve //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名
    --enable-static-htdbm //使用静态连接编译 htdbm - 操作 DBM 密码数据库
    --enable-static-ab //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具
    --enable-static-checkgid //使用静态连接编译 checkgid
    --disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本
    --disable-cgi //禁止编译 CGI 版本的 PHP
    --disable-userdir //禁止用户从自己的主目录中提供页面
    --with-mpm=worker // 让apache以worker方式运行
    --enable-authn-dbm=shared // 对动态数据库进行操作。Rewrite时需要。

    /usr/local/apache/bin/apachectl -M   =-t -D DUMP_MODULES 安装了哪些模块
    /usr/local/apache/bin/apachectl -t    测试安装是否成功
    /usr/local/apache/bin/apachectl -k start|restart|stop 查看详细
     

    说明:
    本学习记录是在Redhat Linux4u4和apache2.2.9环境下进行测试记录的。
    //源文件
    httpd-2.2.9.tar.gz
    //upload apache源文件
    存放路径:/usr/local/src/下
    //解压
    # cd /usr/local/src
    # tar zxvf httpd-2.2.9.tar.gz
    //配置、编译、安装

    配置方法知识:
    最简要的安装概述:
    下载  $ wget http://apache.mirror.phpchina.com/httpd/httpd-2.2.9.tar.gz
    (http://httpd.apache.org/download.cgi )
    解压  $ gzip -d httpd-NN.tar.gz
    $ tar xvf httpd-NN.tar
    $ cd httpd-NN
    配置  $ ./configure --prefix=PREFIX
    编译  $ make
    安装  $ make install
    配置  $ vi PREFIX/conf/httpd.conf
    测试  $ PREFIX/bin/apachectl -k start
    其中NN必须用当前的副版本号替代;PREFIX是服务器被安装到文件系统中的路径名,如果没有指定PREFIX,默认会装到/usr/local/apache2。

    要想用所有的默认值配置源代码树只要简单的执行 ./configure 命令就可以了,同时configure还可以接受命令行参数以改变默认值。
    最重要的选项是Apache安装目录的前缀:--prefix ,因为Apache需要知道这个目录才能正常运作。
    可以通过在配置选项中指定要启用或禁用哪些模块来定制Apache的特性。Base组的模块默认包含在Apache中。其他组的模块可以通过 --enable-module 指令启用。其中module是模块名去掉"mod_"并将下划线转换成连字符后的字符串。你也可以使用 --enable-module=shared 指令将模块编译为可在运行时加载和卸载的动态共享对象(DSO)。同样的,你也可以使用 --disable-module 指令禁用Base组的模块。注意,使用这些指令的时候configure不会对你拼写错误的模块发出警告说找不到某某模块,而只是简单的忽略这个选项。

    另外,有时候还必须提供给configure脚本关于编译器、库、头文件位置的更多信息。这些可以通过环境变量或者命令行选项传递给configure脚本。
    我对安装的理解总结:
    1)Base组的模块默认包含在Apache之中,如要禁用Base组模块,可用--disable-module指令。
    2)其它非Base组模块可以通过--enable-module指令启用。
    3)也可以使用—enable-module=shared将模块编译为可在运行时加裁和卸载的动态共享对象(DSO)。
    4)configure不进行拼写检查,而是忽略些选项。
    5)有时还要为特殊的需求,提供给configure脚本关于编译器、库、头文件的更多信息。

    ##########################################################
    #### 以下为8种不同configuer参数的安装实例以及说明 ####
    ##########################################################
    1)仅指定目录的默认配置
    ./configure --prefix=/usr/local/apache2
    Make
    Make install
    默认安装的module有:(共26个,这26个module就是BASE组模块)
    [root@yy httpd-2.2.9]# /usr/local/apache/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 httpd-2.2.9]# ls /usr/local/apache2/modules
    httpd.exp
    [root@yy bin]# ./apachectl -V
    Server version: Apache/2.2.9 (Unix)
    Server built:   Sep 27 2008 01:01:51
    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:     Prefork
    threaded:     no
        forked:     yes (variable process count)
    Server compiled with....
    -D APACHE_MPM_DIR="server/mpm/prefork"
    -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_PIDLOG="logs/httpd.pid"
    -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
    -D DEFAULT_LOCKFILE="logs/accept.lock"
    -D DEFAULT_ERRORLOG="logs/error_log"
    -D AP_TYPES_CONFIG_FILE="conf/mime.types"
    -D SERVER_CONFIG_FILE="conf/httpd.conf"
    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

  • 相关阅读:
    struts2接收参数的几种形式
    oracle merge into函数中插入clob字段
    程序员能力矩阵
    spring mvc工作原理
    struts2核心和工作原理
    mysql主从复制(windows下)
    mysql主从复制(linux下)
    spring 注解事务
    异常错误集锦
    Redis 作为缓存服务器的配置
  • 原文地址:https://www.cnblogs.com/jamin/p/1592300.html
Copyright © 2020-2023  润新知