• 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]# 
  • 相关阅读:
    [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍
    [连载]《C#通讯(串口和网络)框架的设计与实现》- 0.前言
    [注意]SerialPort操作PCI-1621D多串口卡,出现异常"参数不正确"
    [发布]SuperIO v2.2.5 集成OPC服务端和OPC客户端
    【发布】工业串口和网络软件通讯平台(SuperIO v2.2.4)
    【工业串口和网络软件通讯平台(SuperIO)教程】九.重写通讯接口函数,实现特殊通讯方式
    【工业串口和网络软件通讯平台(SuperIO)教程】八.SuperIO通讯机制与设备驱动对接的说明
    【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动
    【工业串口和网络软件通讯平台(SuperIO)教程】六.二次开发导出数据驱动
    【工业串口和网络软件通讯平台(SuperIO)教程】五.二次开发图形显示界面
  • 原文地址:https://www.cnblogs.com/52php/p/5668845.html
Copyright © 2020-2023  润新知