zoukankan      html  css  js  c++  java
  • Apache静态编译与动态编译详解

    Apache拥有4层结构,从核心到外层的module。而外层的module可以用通过静态和动态两种方式与Apache共同工作。这也就引入下文的“动态”和“静态”两种编译安装方式:

    静态编译:

    编译的时候,所有的模块自己编译进 httpd 这个文件中 ,启动Apache的时候这些模块就已经加载进来了,可以直接来使用,而不用再 httpd.conf 中在 LoadModule 来加载,只要在 <ifmodule></ifmodule> 中来配置就可以了。

    动态编译:

    编译的时候,使用enable-MODULE=shared 或者enable-mods-shared=MODULE来动态编译。 动态显然就不编译到httpd里面去了,启动的时候根本不会加载这个模块, 而是给你一个module.so 文件。你想用,就在httpd.conf中使用 loadmodule 这个语法来加载,这个模块才有效。

    区别是:

    静态的模块通常在http.conf中用<ifmodule></ifmodule> 来配置,动态的要先loadmoule来加载,然后再<ifmodule></ifmodule>配置。

    官方说静态的比动态的在性能方面多5%左右。

    相对来说,静态的效率高些,而动态方式配置方面灵活。想想如果编译进去的C这个module你想升级或者去掉,静态方式的就只能重新编译Apache了。

    下面这句在Apache源文件夹下运行,可以查看默认情况下Apache都给你装了那些module进去:

    ./configure –help | grep disable

    让Apache日后可以动态编译和加载模块:

    如果想让Apache日后可以支持动态编译(DSO)更多的module,需要在初次安装时把so这个模块编译到核心(即,静态编译)。

    如果编译中包含任何DSO模块,则mod_so会被自动包含进核心。如果希望核心以后能够装载DSO,但不实际编译任何DSO模块,则需明确指定:

    针对apache1.x: --enable-module=so

    针对apache2.x: --enable-so=static

    Apache模块的类型:

    基本(B)模块默认包含,必须明确禁用;

    扩展(E)/实验(X)模块默认不包含,必须明确启用。

    那么,针对以上这些类型的模块,有以下几种操作方式:

    --disable-MODULE

    禁用MODULE模块(仅用于基本模块)

    --enable-MODULE=shared

    将MODULE编译为DSO(可用于所有模块)

    --enable-MODULE=static

    将MODULE静态连接进核心(仅用于扩展和实验模块)

    --enable-mods-shared=MODULE-LIST

    将MODULE-LIST中的所有模块都编译成DSO(可用于所有模块)

    --enable-modules=MODULE-LIST

    将MODULE-LIST静态连接进核心(可用于所有模块)

    针对--enable-modules和--enable-mods-shared有两个懒办法就是 most参数和all参数,分别表示“很多的”和“所有”。

    例如:

    mod_alias是个基本模块,不想安装的话就: --disable-alias

    mod_rewrite是个扩展模块,想动态加载它:--enable-rewrite=shared,想静态加载就是:--enable-rewrite=static

    想静态编译mod_alias和mod_rewrite:--enable-modules='alias rewrite'

    想动态编译mod_alias和mod_rewrite:--enable-mods-shared='alias rewrite'

    针对Apache2.2.x的一些例子:

    最大化静态安装Apache:

    ./configure --prefix=/usr/local/apache --enable-modules=all

    最大化动态安装Apache:

    ./configure --prefix=/usr/local/apache --enable-mods-shared=all

    静态安装rewrite、动态安装deflate以及headers

    ./configure --prefix=/usr/local/apache --enable-rewrite=static --enable-deflate=shared --enable-headers=shared

    不安装基本的alais,保留以后的扩展DSO能力:

    ./configure --prefix=/usr/local/apache --enable-so=static --disable-alias

    在Apache的源码目录,运行命令 ./configure -help 可查看所有编译参数解释

    [root@localhost ~]# cd /usr/local/src/httpd-2.2.22
    [root@localhost httpd-2.2.22]# ./configure -help
    `configure' configures this package to adapt to many kinds of systems.
    
    Usage: ./configure [OPTION]... [VAR=VALUE]...
    
    To assign environment variables (e.g., CC, CFLAGS...), specify them as
    VAR=VALUE.  See below for descriptions of some of the useful variables.
    
    Defaults for the options are specified in brackets.
    
    Configuration:
      -h, --help              display this help and exit
          --help=short        display options specific to this package
          --help=recursive    display the short help of all the included packages
      -V, --version           display version information and exit
      -q, --quiet, --silent   do not print `checking...' messages
          --cache-file=FILE   cache test results in FILE [disabled]
      -C, --config-cache      alias for `--cache-file=config.cache'
      -n, --no-create         do not create output files
          --srcdir=DIR        find the sources in DIR [configure dir or `..']
    
    Installation directories:
      --prefix=PREFIX         install architecture-independent files in PREFIX
                              [/usr/local/apache2]
      --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                              [PREFIX]
    
    By default, `make install' will install all the files in
    `/usr/local/apache2/bin', `/usr/local/apache2/lib' etc.  You can specify
    an installation prefix other than `/usr/local/apache2' using `--prefix',
    for instance `--prefix=$HOME'.
    
    For better control, use the options below.
    
    Fine tuning of the installation directories:
      --bindir=DIR            user executables [EPREFIX/bin]
      --sbindir=DIR           system admin executables [EPREFIX/sbin]
      --libexecdir=DIR        program executables [EPREFIX/libexec]
      --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
      --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
      --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
      --libdir=DIR            object code libraries [EPREFIX/lib]
      --includedir=DIR        C header files [PREFIX/include]
      --oldincludedir=DIR     C header files for non-gcc [/usr/include]
      --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
      --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
      --infodir=DIR           info documentation [DATAROOTDIR/info]
      --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
      --mandir=DIR            man documentation [DATAROOTDIR/man]
      --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
      --htmldir=DIR           html documentation [DOCDIR]
      --dvidir=DIR            dvi documentation [DOCDIR]
      --pdfdir=DIR            pdf documentation [DOCDIR]
      --psdir=DIR             ps documentation [DOCDIR]
    
    System types:
      --build=BUILD     configure for building on BUILD [guessed]
      --host=HOST       cross-compile to build programs to run on HOST [BUILD]
      --target=TARGET   configure for building compilers for TARGET [HOST]
    
    Optional Features:
      --disable-option-checking  ignore unrecognized --enable/--with options
      --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
      --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
      --enable-layout=LAYOUT
      --enable-v4-mapped      Allow IPv6 sockets to handle IPv4 connections
      --enable-exception-hook Enable fatal exception hook
      --enable-maintainer-mode
                              Turn on debugging and compile time warnings
      --enable-pie            Build httpd as a Position Independent Executable
      --enable-modules=MODULE-LIST
                              Space-separated list of modules to enable | "all" |
                              "most"
      --enable-mods-shared=MODULE-LIST
                              Space-separated list of shared modules to enable |
                              "all" | "most"
      --disable-authn-file    file-based authentication control
      --enable-authn-dbm      DBM-based authentication control
      --enable-authn-anon     anonymous user authentication control
      --enable-authn-dbd      SQL-based authentication control
      --disable-authn-default authentication backstopper
      --enable-authn-alias    auth provider alias
      --disable-authz-host    host-based authorization control
      --disable-authz-groupfile
                              'require group' authorization control
      --disable-authz-user    'require user' authorization control
      --enable-authz-dbm      DBM-based authorization control
      --enable-authz-owner    'require file-owner' authorization control
      --enable-authnz-ldap    LDAP based authentication
      --disable-authz-default authorization control backstopper
      --disable-auth-basic    basic authentication
      --enable-auth-digest    RFC2617 Digest authentication
      --enable-isapi          isapi extension support
      --enable-file-cache     File cache
      --enable-cache          dynamic file caching
      --enable-disk-cache     disk caching module
      --enable-mem-cache      memory caching module
      --enable-dbd            Apache DBD Framework
      --enable-bucketeer      buckets manipulation filter
      --enable-dumpio         I/O dump filter
      --enable-echo           ECHO server
      --enable-example        example and demo module
      --enable-case-filter    example uppercase conversion filter
      --enable-case-filter-in example uppercase conversion input filter
      --enable-reqtimeout     Limit time waiting for request from client
      --enable-ext-filter     external filter module
      --disable-include       Server Side Includes
      --disable-filter        Smart Filtering
      --enable-substitute     response content rewrite-like filtering
      --disable-charset-lite  character set translation
      --enable-charset-lite   character set translation
      --enable-deflate        Deflate transfer encoding support
      --enable-ldap           LDAP caching and connection pooling services
      --disable-log-config    logging configuration
      --enable-log-forensic   forensic logging
      --enable-logio          input and output logging
      --disable-env           clearing/setting of ENV vars
      --enable-mime-magic     automagically determining MIME type
      --enable-cern-meta      CERN-type meta files
      --enable-expires        Expires header control
      --enable-headers        HTTP header control
      --enable-ident          RFC 1413 identity check
      --enable-usertrack      user-session tracking
      --enable-unique-id      per-request unique ids
      --disable-setenvif      basing ENV vars on headers
      --disable-version       determining httpd version in config files
      --enable-proxy          Apache proxy module
      --enable-proxy-connect  Apache proxy CONNECT module
      --enable-proxy-ftp      Apache proxy FTP module
      --enable-proxy-http     Apache proxy HTTP module
      --enable-proxy-scgi     Apache proxy SCGI module
      --enable-proxy-ajp      Apache proxy AJP module
      --enable-proxy-balancer Apache proxy BALANCER module
      --enable-ssl            SSL/TLS support (mod_ssl)
      --enable-distcache      Select distcache support in mod_ssl
      --enable-optional-hook-export
                              example optional hook exporter
      --enable-optional-hook-import
                              example optional hook importer
      --enable-optional-fn-import
                              example optional function importer
      --enable-optional-fn-export
                              example optional function exporter
      --enable-static-support Build a statically linked version of the support
                              binaries
      --enable-static-htpasswd
                              Build a statically linked version of htpasswd
      --enable-static-htdigest
                              Build a statically linked version of htdigest
      --enable-static-rotatelogs
                              Build a statically linked version of rotatelogs
      --enable-static-logresolve
                              Build a statically linked version of logresolve
      --enable-static-htdbm   Build a statically linked version of htdbm
      --enable-static-ab      Build a statically linked version of ab
      --enable-static-checkgid
                              Build a statically linked version of checkgid
      --enable-static-htcacheclean
                              Build a statically linked version of htcacheclean
      --enable-static-httxt2dbm
                              Build a statically linked version of httxt2dbm
      --enable-http           HTTP protocol handling
      --disable-mime          mapping of file-extension to MIME
      --enable-dav            WebDAV protocol handling
      --disable-status        process/thread monitoring
      --disable-autoindex     directory listing
      --disable-asis          as-is filetypes
      --enable-info           server information
      --enable-suexec         set uid and gid for spawned processes
      --disable-cgid          CGI scripts
      --enable-cgi            CGI scripts
      --disable-cgi           CGI scripts
      --enable-cgid           CGI scripts
      --enable-dav-fs         DAV provider for the filesystem
      --enable-dav-lock       DAV provider for generic locking
      --enable-vhost-alias    mass virtual hosting module
      --disable-negotiation   content negotiation
      --disable-dir           directory request handling
      --enable-imagemap       server-side imagemaps
      --disable-actions       Action triggering on requests
      --enable-speling        correct common URL misspellings
      --disable-userdir       mapping of requests to user-specific directories
      --disable-alias         mapping of requests to different filesystem parts
      --enable-rewrite        rule based URL manipulation
      --enable-so             DSO capability
    
    Optional Packages:
      --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
      --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
      --with-included-apr     Use bundled copies of APR/APR-Util
      --with-apr=PATH         prefix for installed APR or the full path to
                                 apr-config
      --with-apr-util=PATH    prefix for installed APU or the full path to
                                 apu-config
      --with-pcre=PATH        Use external PCRE library
      --with-port=PORT        Port on which to listen (default is 80)
      --with-sslport=SSLPORT  Port on which to securelisten (default is 443)
      --with-z=DIR            use a specific zlib library
      --with-sslc=DIR         RSA SSL-C SSL/TLS toolkit
      --with-ssl=DIR          OpenSSL SSL/TLS toolkit
      --with-mpm=MPM          Choose the process model for Apache to use.
                              MPM={beos|event|worker|prefork|mpmt_os2|winnt}
      --with-module=module-type:module-file
                              Enable module-file in the modules/<module-type>
                              directory.
      --with-program-name     alternate executable name
      --with-suexec-bin       Path to suexec binary
      --with-suexec-caller    User allowed to call SuExec
      --with-suexec-userdir   User subdirectory
      --with-suexec-docroot   SuExec root directory
      --with-suexec-uidmin    Minimal allowed UID
      --with-suexec-gidmin    Minimal allowed GID
      --with-suexec-logfile   Set the logfile
      --with-suexec-safepath  Set the safepath
      --with-suexec-umask     umask for suexec'd process
    
    Some influential environment variables:
      CC          C compiler command
      CFLAGS      C compiler flags
      LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
                  nonstandard directory <lib dir>
      LIBS        libraries to pass to the linker, e.g. -l<library>
      CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
                  you have headers in a nonstandard directory <include dir>
      CPP         C preprocessor
    
    Use these variables to override the choices made by `configure' or to help
    it to find libraries and programs with nonstandard names/locations.
    
    Report bugs to the package provider.
    [root@localhost httpd-2.2.22]# 
  • 相关阅读:
    洛谷 P1194 飞扬的小鸟 题解
    洛谷 P1197 星球大战 题解
    洛谷 P1879 玉米田Corn Fields 题解
    洛谷 P2796 Facer的程序 题解
    洛谷 P2398 GCD SUM 题解
    洛谷 P2051 中国象棋 题解
    洛谷 P1472 奶牛家谱 Cow Pedigrees 题解
    洛谷 P1004 方格取数 题解
    洛谷 P2331 最大子矩阵 题解
    洛谷 P1073 最优贸易 题解
  • 原文地址:https://www.cnblogs.com/52php/p/5668845.html
Copyright © 2011-2022 走看看