2.2 Apache HTTP Server 2.2 安装与配置指南 摘要:本文详细说明在 CentOS 7 环境下源码编译安装 Apache HTTP Server 2.2.34 的完整流程,涵盖环境准备、依赖安装、源码编译、基础配置及服务验证。内容聚焦生产就绪实践,强调安全性、可维护性与兼容性,适用于遗留系统迁移、安全合规审计及深度定制化部署场景。 环境准备 在部署 Apache HTTP Server 2.2 前,需确保操作系统环境稳定、基础工具链完整,并满足编译依赖要求。以下操作均基于 CentOS 7(x8664) 验证通过,其他 RHEL 系衍生发行版(如 Rocky Linux 7、AlmaLinux 7)适用性一致。
摘要:本文详细说明在 CentOS 7 环境下源码编译安装 Apache HTTP Server 2.2.34 的完整流程,涵盖环境准备、依赖安装、源码编译、基础配置及服务验证。内容聚焦生产就绪实践,强调安全性、可维护性与兼容性,适用于遗留系统迁移、安全合规审计及深度定制化部署场景。
在部署 Apache HTTP Server 2.2 前,需确保操作系统环境稳定、基础工具链完整,并满足编译依赖要求。以下操作均基于 CentOS 7(x86_64) 验证通过,其他 RHEL 系衍生发行版(如 Rocky Linux 7、AlmaLinux 7)适用性一致。
# 同步系统时间(推荐,避免证书校验异常) sudo timedatectl set-ntp true # 更新所有已安装软件包至最新稳定版本 sudo yum update -y # 安装核心编译工具链及 Apache 2.2 所需开发库 sudo yum install -y \ gcc \ make \ pcre-devel \ openssl-devel \ apr-devel \ apr-util-devel \ wget \ tar \ gzip
说明:Apache HTTP Server 2.2 不支持系统默认的
apr-1.6+及pcre2,因此需确保apr-devel和pcre-devel为 CentOS 7 仓库中提供的apr-1.4.8和pcre-8.32版本。若系统已升级至更高版本 APR,需手动降级或从源码编译匹配版本。
Apache HTTP Server 2.2 系列已于 2018 年正式结束生命周期(EOL),仅建议用于离线环境、遗留系统维护或合规性强制要求场景。生产环境应优先选用 Apache 2.4.x 或现代替代方案(如 Nginx、Caddy)。
访问 Apache HTTP Server 归档站点 获取官方签名发布包。推荐使用 2.2.34(最终稳定版):
# 创建专用工作目录 mkdir -p /opt/src/apache && cd /opt/src/apache # 下载源码包及对应 SHA512 校验文件 wget https://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz wget https://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz.sha512 # 验证完整性(输出应显示 "OK") sha512sum -c httpd-2.2.34.tar.gz.sha512
# 解压源码 tar xzvf httpd-2.2.34.tar.gz cd httpd-2.2.34 # 执行 configure 脚本(关键参数说明见下表) ./configure \ --prefix=/usr/local/apache2 \ --enable-so \ --enable-rewrite \ --enable-mods-shared=all \ --with-pcre=/usr/bin/pcre-config \ --with-ssl=/usr \ --with-apr=/usr/bin/apr-1-config \ --with-apr-util=/usr/bin/apu-1-config \ --enable-suexec \ --with-suexec-caller=apache \ --with-suexec-docroot=/var/www \ --disable-userdir \ --disable-status \ --disable-info
| 参数 | 说明 |
|---|---|
--prefix=/usr/local/apache2 |
指定安装根路径,避免与系统包管理器冲突 |
--enable-so |
启用动态模块加载(DSO),必需 |
--enable-rewrite |
启用 mod_rewrite,支持 URL 重写规则 |
--with-pcre / --with-apr* |
显式指定 PCRE、APR 及 APR-Util 路径,防止版本不匹配 |
--with-ssl=/usr |
指向系统 OpenSSL 安装路径(头文件位于 /usr/include/openssl) |
--enable-suexec |
启用安全执行模块,隔离多用户 CGI 环境 |
--disable-* |
关闭非必要模块(如 mod_status、mod_info),减少攻击面 |
注意:若
apr-1-config或apu-1-config不可用,请先安装apr-devel和apr-util-devel,或从 Apache Portable Runtime 归档 下载匹配版本源码编译安装。
# 编译(使用全部 CPU 核心加速) make -j$(nproc) # 安装至 --prefix 指定路径 sudo make install # 验证安装结果 /usr/local/apache2/bin/httpd -v # 输出应为:Server version: Apache/2.2.34 (Unix)
安装完成后,主配置文件位于 /usr/local/apache2/conf/httpd.conf。以下为生产环境推荐的基础配置项,兼顾安全性、可维护性与功能性。
# 编辑 /usr/local/apache2/conf/httpd.conf Listen 8080 ServerName localhost:8080 ServerAdmin admin@example.com # 禁用服务器签名(降低信息泄露风险) ServerSignature Off ServerTokens Prod
# 确保以下模块已加载(取消注释) LoadModule so_module modules/mod_so.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule ssl_module modules/mod_ssl.so # 安全日志配置(建议使用 syslog 或集中式日志系统) ErrorLog "|/usr/bin/logger -t httpd -p local6.error" CustomLog "|/usr/bin/logger -t httpd -p local6.info" combined # 限制目录遍历与敏感文件访问 <Directory /> Options None AllowOverride None Require all denied </Directory>
在 httpd.conf 末尾追加:
# 启用虚拟主机支持 NameVirtualHost *:8080 <VirtualHost *:8080> DocumentRoot "/var/www/html" ServerName example.com ServerAlias www.example.com <Directory "/var/www/html"> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> # 强制 HTTPS 重定向(需启用 mod_ssl) # RewriteEngine On # RewriteCond %{HTTPS} off # RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </VirtualHost>
# 创建网站根目录并放置测试页 sudo mkdir -p /var/www/html echo "<h1>Apache HTTP Server 2.2.34 is running</h1>" | sudo tee /var/www/html/index.html # 启动服务(首次运行前检查配置语法) sudo /usr/local/apache2/bin/httpd -t # 应返回 "Syntax OK" # 启动并设置开机自启(System V init 方式) sudo /usr/local/apache2/bin/apachectl start # 验证监听状态 sudo ss -tlnp | grep :8080 # 浏览器访问或命令行测试 curl -I http://localhost:8080 # 响应头应包含:HTTP/1.1 200 OK
安全加固建议:
- 使用
chown -R root:root /usr/local/apache2锁定安装目录权限;- 将
ServerRoot配置为非 root 可写路径;- 通过
iptables或firewalld限制 8080 端口仅允许可信 IP 访问;- 定期审计
logs/error_log中的client denied by server configuration类错误。
下图直观呈现 HTTP 请求在 Apache 2.2 架构中的关键流转路径,涵盖网络层接入、进程模型调度、模块化处理及响应生成全过程:
该流程基于 prefork MPM(多进程模型),是 Apache 2.2 在 Linux 上的默认且最稳定运行模式,适用于 CPU 密集型、低并发但高可靠性要求的场景。
Apache HTTP Server 2.2 是一个成熟稳定但已停止维护的 Web 服务器版本。本文提供的安装与配置方案严格遵循最小权限、纵深防御与可审计性原则,适用于以下典型场景:
重要提醒:
通过本文配置,您已成功部署一个安全基线达标的 Apache HTTP Server 2.2 实例,为后续 Web 应用集成与运维监控奠定坚实基础。