一、软件下载

二、环境检查

# rpm -qa|grep zlib
zlib-devel-1.2.3-3
zlib-1.2.3-3
# rpm -qa|grep ssl
openssl-devel-0.9.8b-10.el5
openssl-0.9.8b-10.el5
如果需要依赖包,安装其对应的devel包即可,此处仅用到zlib和ssl。另,如果有httpd包,要先卸载掉或停止其服务。

三、编译安装

1、针对安装目的的说明(来自INSTALL文件)

如果是开发者则使用此选项,--with-included-apr利于连接apache的代码或者是调试apache,其消除了由于版本或者编译中跟APR或者APR-util代码产生的不匹配;
如果从子版本编译apache,要先运行buildconf(需要Python,GNU autoconf和libtool),然后运行configure。发行包不用。
如果要在FreeBSD5.4之前编译时包含apache的threaded MPM,需要使用--enable-threads和--with-mpm 参数
在Mac上编译子版本,要使用GNU Libtool 1.4.2及以上版本

2、关于SSL加密和正则表达式(来自文件README)

    Apache2.0及以上版本在目录modules/ssl/下包含了mod_ssl模块用于配置和监听ssl网络接口的连接。(另外,一些apr-util版本在目录srclib/apr-util/ssl/下提供了ssl网络接口)带有单词crypto的包的名字,可能包含openssl加密库的目标代码。如果apache的加密功能不理想或者要排除再重分配,则可以使用包的名字包含nossl的发布包。
    Apache使用PCRE包包含的正则表达式。

3、对configure参数的说明

配置帮助表:
-h, --help 显示帮助信息 display this help and exit
--help=short 用short参数将只显示正在运行的当前脚本的选项,而不能列出适用于Apache配置脚本所运行的外部配置脚本的选项 display options specific to this package
--help=recursive 使用recursive参数将显示所有程序包的简短描述 display the short help of all the included packages
-V, --version 显示版本 display version information and exit
-q, --quiet, --silent 不显示checking……信息 do not print`checking...' messages
--cache-file=FILE
在指定文件中存储测试结果
cache test results in FILE [disabled]

-C, --config-cache
在文件config.cache中存储测试结果 alias for `--cache file=config.cache'
-n, --no-create configure脚本运行结束后不输出结果文件,常用于正式编译前的测试。 do not create output files
--srcdir=DIR 源文件库所在目录 find the sources in DIR [configure dir or `..']
安装目录:
--prefix=PREFIX 体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录 install architecture-independent files in PREFIX
[/usr/local/apache2]
--exec-prefix=EPREFIX 体系相关文件的顶级安装目录EPREFIX ,把体系相关的文件安装到不同的位置可以方便地在不同主机之间共享体系相关的文件 install architecture-dependent files in EPREFIX
[PREFIX]
默认情况下,make install 将会把所有文件分别安装到/usr/local/apache2/bin , /usr/local/apache2/lib 目录下。可以用 --prefix 指定一个不同于/usr/local/apache2的安装前缀,比如:--prefix=$HOME 。
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'.
详细安装目录设置:
默认安装目录参考config.layout,其中RHEL的默认目录设置如下:
    prefix:        /usr
    exec_prefix:   ${prefix}
    bindir:        ${prefix}/bin
    sbindir:       ${prefix}/sbin
    libdir:        ${prefix}/lib
    libexecdir:    ${prefix}/lib/apache
    mandir:        ${prefix}/man
    sysconfdir:    /etc/httpd/conf
    datadir:       /var/www
    installbuilddir: ${datadir}/build
    errordir:      ${datadir}/error
    iconsdir:      ${datadir}/icons
    htdocsdir:     ${datadir}/html
    manualdir:     ${datadir}/manual
    cgidir:        ${datadir}/cgi-bin
    includedir:    ${prefix}/include/apache
    localstatedir: /var
    runtimedir:    ${localstatedir}/run
    logfiledir:    ${localstatedir}/log/httpd
    proxycachedir: ${localstatedir}/cache/httpd
自设定详细安装目录
--bindir=DIR 用户可执行目录DIR。用于存放对网站管理员很有帮助的htpasswd, dbmmanage之类的支持程序 user executables [EPREFIX/bin]
--sbindir=DIR 系统管理员可执行目录DIR ,用于存放运行HTTP服务器所必须的httpd, apachectl, suexec之类的服务程序 system admin executables [EPREFIX/sbin]
--libexecdir=DIR 程序可执行目录DIR ,也就是动态加载模块目录 program executables [EPREFIX/libexec]
--sysconfdir=DIR 只读的单一机器数据目录DIR ,用于存放httpd.conf和mime.types之类的服务器配置文件 read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR 可改写的体系无关数据目录DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR 可改写的单一机器数据目录DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR 对象代码库目录DIR object code libraries [EPREFIX/lib]
--includedir=DIR Apache的C头文件目录DIR C header files [PREFIX/include]
--oldincludedir=DIR 非gcc的C头文件目录DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR Web服务器只读的体系无关数据根目录 read-only arch.-independent data root [PREFIX/share]
--datadir=DIR Web服务器只读的体系无关数据目录DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR 信息文档目录DIR info documentation [DATAROOTDIR/info]
--localedir=DIR 地区相关数据DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR 手册文档目录DIR man documentation [DATAROOTDIR/man]
--docdir=DIR 手册目录 documentation root [DATAROOTDIR/doc/PACKAGE]
--htmldir=DIR HTML格式帮助文档目录 html documentation [DOCDIR]
--dvidir=DIR dvi格式帮助文档目录 dvi documentation [DOCDIR]
--pdfdir=DIR pdf格式帮助文档目录 pdf documentation [DOCDIR]
--psdir=DIR ps格式帮助文档目录 ps documentation [DOCDIR]
交叉编译选项:
这些选项用于交叉编译在其他平台上运行的Apache HTTP服务器。在同一平台上编译和运行Apache HTTP服务器通常不需要使用这些选项,脚本会自动检测并设置。
--build=BUILD 指定编译工具所在系统的系统类型BUILD configure for building on BUILD [guessed]
--host=HOST 指定Apache HTTP服务器将要进行交叉编译时运行的目标系统类型HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET 指定交叉编译所产生的目标代码类型 configure for building compilers for TARGET [HOST]
特征选项:
--disable-option-checking 忽略无法识别的enable或with选项 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 预定义的安装路径布局。选项使用config.layout文件中的配置。只使用"--enable-layout", 而不指定LAYOUT, 相当于"--enable-layout=Apache"  
--enable-v4-mapped 使用相同的套接字同时处理IPv4和IPv6的连接,也就是启用地址映射。在FreeBSD、NetBSD、OpenBSD以外的平台上是默认值。 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
编译http作为一个独立的可执行文件。 Build httpd as a Position Independent Executable
--enable-modules=MODULE-LIST 启用的模块,用空格分别列出,或使用all,most列出所有或常用的模块。 Space-separated list of modules to enable | "all" |
"most"
--enable-mods-shared=MODULE-LIST 启用的共享DSO模块,用空格分别列出,或使用all,most列出所有或常用的共享DOS模块。(注1) Space-separated list of shared modules to enable |
"all" | "most"
--disable-authn-file 禁用基于文件的验证控制 file-based authentication control
--enable-authn-dbm 启用基于DBM的验证机制 DBM-based authentication control

--enable-authn-anon

启用匿名的验证机制 anonymous user authentication control
--enable-authn-dbd 启用基于SQL的验证机制 SQL-based authentication control
--disable-authn-default 禁止默认的验证机制方式backstopper 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数据库的授权机制 DBM-based authorization control
--enable-authz-owner 基于文件所有者的授权机制 'require file-owner' authorization control
--enable-authnz-ldap 启用基于LDAP的的授权方式 LDAP based authentication
--disable-authz-default 禁用默认的backstopper授权方式 authorization control backstopper
--disable-auth-basic 禁用基本验证 basic authentication
--enable-auth-digest 启用RFC2617摘要式身份验证 RFC2617 Digest authentication
--enable-isapi 启用ISAPI扩展支持(注2) 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框架 Apache DBD Framework
--enable-bucketeer 水桶操作过滤器 buckets manipulation filter
--enable-dumpio I/O转储过滤器 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-ext-filter 扩展过滤模块 external filter module
--disable-include 禁用服务器端嵌入(SSI) 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的高速缓存和连接池服务 LDAP caching and connection pooling services
--disable-log-config 禁用日志配置 logging configuration
--enable-log-forensic 启用forensic日志记录 forensic logging
--enable-logio 输入和输出记录 input and output logging
--disable-env 禁用环境变量,清除设置环境变量 clearing/setting of ENV vars
--enable-mime-magic 自动确定MIME类型 automagically determining MIME type
--enable-cern-meta 启用CERN类型元文件 CERN-type meta files
--enable-expires 头部有效期控制 Expires header control
--enable-headers HTTP头控制HTTP header control
--enable-ident RFC 1413身份检查 RFC 1413 identity check
--enable-usertrack 用户session跟踪 user-session tracking
--enable-unique-id 启用每个请求唯一的ID per-request unique ids
--disable-setenvif 基于头部的环境变量 basing ENV vars on headers
--disable-version 通过配置文件中决定http版本 determining httpd version in config files
--enable-proxy apache 代理模块 Apache proxy module
--enable-proxy-connect apache 代理连接模块 Apache proxy CONNECT module
--enable-proxy-ftp apache代理ftp模块 Apache proxy FTP module
--enable-proxy-http apache代理http模块 Apache proxy HTTP module
--enable-proxy-ajp apache代理ajp模块 Apache proxy AJP module
--enable-proxy-balancer apache代理balancer模块 Apache proxy BALANCER module
--enable-ssl 启用ssl支持 SSL/TLS support (mod_ssl)
--enable-distcache 在mod_ssl模块中启用Distcache。磁盘缓存(Distcache)用于分布式的会话缓存。主要用在 SSL/TLS 服务器。它可以被 Apache 使用。大多数的台式机应该关闭它。 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 建立静态版本的htpasswd Build a statically linked version of htpasswd
--enable-static-htdigest 建立htdigest的静态版本 Build a statically linked version of htdigest
--enable-static-rotatelogs 建立rotatelogs的静态版本 Build a statically linked version of rotatelogs
--enable-static-logresolve 建立logresolve的静态版本 Build a statically linked version of logresolve
--enable-static-htdbm 建立htdbm的静态版本 Build a statically linked version of htdbm
--enable-static-ab 建立ab的静态版本 Build a statically linked version of ab
--enable-static-checkgid 建立checkgid的静态版本 Build a statically linked version of checkgid
--enable-static-htcacheclean 建立htcacheclean的静态版本 Build a statically linked version of htcacheclean
--enable-static-httxt2dbm 建立httxt2dbm的静态版本 Build a statically linked version of httxt2dbm
--enable-http 启用http协议处理 HTTP protocol handling
--disable-mime 禁用映射文件扩展名到mime类型 mapping of file-extension to MIME
--enable-dav 启用webdav协议处理 WebDAV protocol handling
--disable-status 禁用进程或线程的监控 process/thread monitoring
--disable-autoindex 禁用目录列表 directory listing
--disable-asis 禁用as-is文件类型 as-is filetypes
--enable-info 启用服务器信息 server information
--enable-suexec 启用suexec,为产生的进程设置uid和gid set uid and gid for spawned processes
--disable-cgid 禁用CGID CGI scripts
--enable-cgi 启用CGI CGI scripts
--disable-cgi 禁用CGI CGI scripts
--enable-cgid 启用CGID CGI scripts
--enable-dav-fs 启用DAV文件系统提供者 DAV provider for the filesystem
--enable-dav-lock 启用DAV提供者的一般锁定 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 启用常见的URL拼写错误纠正 correct common URL misspellings
--disable-userdir
禁用特定用户目录的请求的映射
mapping of requests to user-specific directories
--disable-alias 禁用不同文件系统部分的请求的映射 mapping of requests to different filesystem parts
--enable-rewrite 基本的URL操纵规则,即启用URL重写规则 rule based URL manipulation
--enable-so 启用DSO性能 DSO capability
注:
1、模块列表:
基本(B)模块默认包含,必须明确禁用;扩展(E)/实验(X)模块默认不包含,必须明确启用
模块名称 状态 简要描述
mod_actions (B) 基于媒体类型或请求方法,为执行CGI脚本而提供
mod_alias (B) 提供从文件系统的不同部分到文档树的映射和URL重定向
mod_asis (B) 发送自己包含HTTP头内容的文件
mod_auth_basic (B) 使用基本认证
mod_authn_default (B) 在未正确配置认证模块的情况下简单拒绝一切认证信息
mod_authn_file (B) 使用纯文本文件为认证提供支持
mod_authz_default (B) 在未正确配置授权支持模块的情况下简单拒绝一切授权请求
mod_authz_groupfile (B) 使用纯文本文件为组提供授权支持
mod_authz_host (B) 供基于主机名、IP地址、请求特征的访问控制
mod_authz_user (B) 基于每个用户提供授权支持
mod_autoindex (B) 自动对目录中的内容生成列表,类似于"ls"或"dir"命令
mod_cgi (B) 在非线程型MPM(prefork)上提供对CGI脚本执行的支持
mod_cgid (B) 在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本
mod_dir (B) 指定目录索引文件以及为目录提供"尾斜杠"重定向
mod_env (B) 允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量
mod_filter (B) 根据上下文实际情况对输出过滤器进行动态配置
mod_imagemap (B) 处理服务器端图像映射
mod_include (B) 实现服务端包含文档(SSI)处理
mod_isapi (B) 仅限于在Windows平台上实现ISAPI扩展
mod_log_config (B) 允许记录日志和定制日志文件格式
mod_mime (B) 根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码)
mod_negotiation (B) 提供内容协商支持
mod_nw_ssl (B) 仅限于在NetWare平台上实现SSL加密支持
mod_setenvif (B) 根据客户端请求头字段设置环境变量
mod_status (B) 生成描述服务器状态的Web页面
mod_userdir (B) 允许用户从自己的主目录中提供页面(使用"/~username")
mod_auth_digest (X) 使用MD5摘要认证(更安全,但是只有最新的浏览器才支持)
mod_authn_alias (E) 基于实际认证支持者创建扩展的认证支持者,并为它起一个别名以便于引用
mod_authn_anon (E) 提供匿名用户认证支持
mod_authn_dbd (E) 使用SQL数据库为认证提供支持
mod_authn_dbm (E) 使用DBM数据库为认证提供支持
mod_authnz_ldap (E) 允许使用一个LDAP目录存储用户名和密码数据库来执行基本认证和授权
mod_authz_dbm (E) 使用DBM数据库文件为组提供授权支持
mod_authz_owner (E) 基于文件的所有者进行授权
mod_cache (E) 基于URI键的内容动态缓冲(内存或磁盘)
mod_cern_meta (E) 允许Apache使用CERN httpd元文件,从而可以在发送文件时对头进行修改
mod_charset_lite (X) 允许对页面进行字符集转换
mod_dav (E) 允许Apache提供DAV协议支持
mod_dav_fs (E) 为mod_dav访问服务器上的文件系统提供支持
mod_dav_lock (E) 为mod_dav锁定服务器上的文件提供支持
mod_dbd (E) 管理SQL数据库连接,为需要数据库功能的模块提供支持
mod_deflate (E) 压缩发送给客户端的内容
mod_disk_cache (E) 基于磁盘的缓冲管理器
mod_dumpio (E) 将所有I/O操作转储到错误日志中
mod_echo (X) 一个很简单的协议演示模块
mod_example (X) 一个很简单的Apache模块API演示模块
mod_expires (E) 允许通过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容
mod_ext_filter (E) 使用外部程序作为过滤器
mod_file_cache (X) 提供文件描述符缓存支持,从而提高Apache性能
mod_headers (E) 允许通过配置文件控制任意的HTTP请求和应答头信息
mod_ident (E) 实现RFC1413规定的ident查找
mod_info (E) 生成Apache配置情况的Web页面
mod_ldap (E) 为其它LDAP模块提供LDAP连接池和结果缓冲服务
mod_log_forensic (E) 实现"对比日志",即在请求被处理之前和处理完成之后进行两次记录
mod_logio (E) 对每个请求的输入/输出字节数以及HTTP头进行日志记录
mod_mem_cache (E) 基于内存的缓冲管理器
mod_mime_magic (E) 通过读取部分文件内容自动猜测文件的MIME类型
mod_proxy (E) 提供HTTP/1.1的代理/网关功能支持
mod_proxy_ajp (E) mod_proxy的扩展,提供Apache JServ Protocol支持
mod_proxy_balancer (E) mod_proxy的扩展,提供负载平衡支持
mod_proxy_connect (E) mod_proxy的扩展,提供对处理HTTP CONNECT方法的支持
mod_proxy_ftp (E) mod_proxy的FTP支持模块
mod_proxy_http (E) mod_proxy的HTTP支持模块
mod_rewrite (E) 一个基于一定规则的实时重写URL请求的引擎
mod_so (E) 允许运行时加载DSO模块
mod_speling (E) 自动纠正URL中的拼写错误
mod_ssl (E) 使用安全套接字层(SSL)和传输层安全(TLS)协议实现高强度加密传输
mod_suexec (E) 使用与调用web服务器的用户不同的用户身份来运行CGI和SSI程序
mod_unique_id (E) 为每个请求生成唯一的标识以便跟踪
mod_usertrack (E) 使用Session跟踪用户(会发送很多Cookie),以记录用户的点击流
mod_version (E) 提供基于版本的配置段支持
mod_vhost_alias (E) 提供大批量虚拟主机的动态配置支持
2、Apache HTTP服务器是一个模块化的软件,管理员可以通过选择服务器中包含的模块进行功能增减。模块可以在编译时被静态包含进httpd二进制文件,也可以编译成独立于httpd二进制文件的动态共享对象(DSO)。DSO模块可以与服务器一起编译,也可以用Apache扩展工具(apxs)单独编译。
3、ISAPI 服务器扩展是可以被 HTTP 服务器加载和调用的 DLL。Internet 服务器扩展也称为 Internet 服务器应用程序 (ISA),用于增强符合 Internet 服务器 API (ISAPI) 的服务器的功能。ISA 通过浏览器应用程序调用,并且将相似的功能提供给通用网关接口 (CGI) 应用程序。
可选包选项:
--with-PACKAGE[=ARG] 包含包的语法 use PACKAGE [ARG=yes]
--without-PACKAGE 不使用该包语法 do not use PACKAGE (same as --with-PACKAGE=no)
--with-included-apr 捆绑拷贝apr/apr-util信息 Use bundled copies of APR/APR-Util
--with-apr=PATH apr的安装目录 prefix for installed APR or the full path to
--with-apr-util=PATH apu的安装目录 prefix for installed APU or the full path to apu-config
--with-pcre=PATH 使用扩展的PCRE正则表达式库 Use external PCRE library
--with-port=PORT 监听端口 Port on which to listen (default is 80)
--with-sslport=SSLPORT ssl的监听端口 Port on which to securelisten (default is 443)
--with-z=DIR zlib的库文件位置 use a specific zlib library
--with-sslc=DIR RSA SSL-C SSL/TLS软件包目录 RSA SSL-C SSL/TLS toolkit
--with-ssl=DIR openssl包的位置。 OpenSSL SSL/TLS toolkit
--with-mpm=MPM 选择apache所使用的处理模块。(注1) Choose the process model for Apache to use.
MPM={beos|event|worker|prefork|mpmt_os2}
--with-module=module-type:module-file 添加第三方模块。(注2) Enable module-file in the modules/<module-type>directory.
--with-program-name 指定可执行程序的名字[默认为:httpd],若使用此选项则默认配置文件的名字将同时变成"NAME.conf"。 alternate executable name
--with-suexec-bin suexec二进制文件目录[默认--sbindir] Path to suexec binary
--with-suexec-calle 允许调用suexec的用户,改用户必须和运行httpd子进程的用户相同 User allowed to call SuExec
--with-suexec-userdir 用户主目录下允许suexec对其中的文件具有执行权限的子目录,仅在将suexec和用户网站目录(由mod_userdir提供支持)一起使用的情况下才需要设置此选项[public_html] User subdirectory
--with-suexec-docroot 允许suexec对其中的文件具有执行权限的根目录[--datadir/htdocs] SuExec root directory
--with-suexec-uidmin 允许执行suexec的最小UID[100] Minimal allowed UID
--with-suexec-gidmin 允许执行suexec的最小GID[100] Minimal allowed GID

--with-suexec-logfile
suexec日志文件名[默认文件名为:suexec_log ,位于--logfiledir目录下] Set the logfile
--with-suexec-safepath 对suexec"安全"的PATH环境变量的值[/usr/local/bin:/usr/bin:/bin] Set the safepath
--with-suexec-umask suexec进程的umask[取决于系统的设定] umask for suexec'd process
注:1、MPM是你想要使用的多路处理模块的名字。如果你不使用这个选项,那么将会使用对应于各平台的默认MPM。
2、module-file是模块的源代码文件名,该文件必须位于Apahe源代码目录树的"modules/module-type"目录下,如果configure没有在那里找到module-file ,则将它看作一个绝对路径名并尝试将其复制到"modules/module-type"目录中,如果"modules/module-type"目录不存在,configure将新建一个"modules/module-type"目录并在其中放置一个标准的Makefile.in文件。这种方法有两个明显的缺陷:模块的源代码必须是单一文件;模块只能静态连接进核心,而不能作为DSO模块。所以一般并不使用此方法,而是使用apxs(Apache扩展工具)来添加第三方模块支持。
编译器选项:
CC 指定的C编译器 C compiler command
CFLAGS C编译器的FLAGS C compiler flags
LDFLAGS 连接器flags,比如使用"-L-Llibdir"指定一个非标准的库文件目录libdir 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++预处理程序flags,比如使用"-Iincludedir"指定一个非标准的头文件目录includedir C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CPP C预处理程序 C preprocessor

4、编译安装

./configure --prefix=/usr/local/apache --enable-authn-dbm --enable-authz-dbm --enable-ssl --enable-vhost-alias --enable-rewrite --enable-so --enable-charset-lite --enable-deflate --with-z --with-ssl --with-mpm=prefork
make
make install

四、服务配置

1、配置文件概述

1>Apache的配置文件是包含若干指令的纯文本文件。主配置文件通常叫httpd.conf ,其位置是编译时确定的,但可以用命令行参数 -f 来改变。Apache配置文件的每一行包含一个指令,在行尾使用反斜杠"\"可以表示续行,但是反斜杠与下一行之间不能有任何其他字符(包括空白字符)。配置文件中的指令是不区分大小写的,但是指令的参数(argument)通常是大小写敏感的。以"#"开头的行被视为注解并被忽略。注解不能出现在指令的后边。空白行和指令前的空白字符将被忽略,因此可以采用缩进以保持配置层次的清晰。主配置文件更改后重新启动Apache后才会生效。可以用 apachectl configtest 或者命令行选项 -t 检查配置文件中的错误,而无须启动Apache服务器。
2>配置文件中可以用Include指令和通配符附加许多其他配置文件。任何配置文件都可以使用任何指令。
3>服务器还会读取一个包含MIME文件类型的文件,其文件名由TypesConfig指令确定,默认值是mime.types。
4>Apache是模块化的服务器,这意味着核心中只包含实现最基本功能的模块。扩展功能可以作为模块动态加载。默认情况下,只有base组的模块被编译进了服务器。如果服务器在编译时包含了DSO模块,那么各模块可以独立编译,并可随时用LoadModule指令加载;否则,要增加或删除模块必须重新编译整个Apache。用于特定模块的指令可以用<IfModule>指令包含起来,使之有条件地生效。命令行参数 -l 可以查看已经编译到服务器中的模块。