apache源码安装多版本共存核心在于隔离安装路径、独立配置文件、分开启动服务;需为各版本指定不同--prefix路径、监听端口、pidfile及systemd服务单元,并分别编译适配对应apr版本。

各自独立安装目录
每个版本必须指定互不重叠的 `--prefix` 路径,这是共存的前提:例如:
- Apache 2.4.54 → /opt/apache24
- Apache 2.2.34 → /opt/apache22
编译时明确指定:
./configure --prefix=/opt/apache24 --enable-so --enable-rewrite --with-mpm=event
./configure --prefix=/opt/apache22 --enable-so --enable-rewrite --with-mpm=worker
务必不要共用 `/usr/local/apache2` 或 `/etc/httpd` 这类默认路径,否则配置、日志、pid 文件会冲突。
配置文件与端口完全分离
每个实例需绑定不同监听端口(如 8080 / 8081),并使用专属配置文件:- Apache 2.4 配置文件:/opt/apache24/conf/httpd.conf,Listen 8080
- Apache 2.2 配置文件:/opt/apache22/conf/httpd.conf,Listen 8081
DocumentRoot、ErrorLog、PidFile、LockFile 等路径也必须指向各自目录下,例如:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
PidFile "/opt/apache24/logs/httpd.pid"
LockFile "/opt/apache24/logs/accept.lock"
否则两个实例可能因争抢同一 pid 文件或锁文件而无法同时启动。
分别管理服务进程
不能共用 systemd 或 init 脚本。推荐方式是:- 为每个版本写独立的 systemd unit 文件(如 apache24.service 和 apache22.service)
- Unit 中指定各自二进制路径:
ExecStart=/opt/apache24/bin/apachectl start - 设置不同环境变量(如
APACHE_HOME=/opt/apache24)避免混淆
启动命令互不影响:
sudo systemctl start apache24
sudo systemctl start apache22
注意依赖与 APR 的版本兼容性
Apache 2.2 和 2.4 对 APR(Apache Portable Runtime)要求不同:
- Apache 2.2.x 通常配 APR 1.4.x
- Apache 2.4.x 推荐 APR 1.6+,且需同时提供 apr-util
建议为每个版本单独编译并嵌入对应 APR 源码(按知识库做法:将 apr/apr-util 拷贝进 `srclib/` 目录),而不是全局安装 APR 库——否则容易因 ABI 不兼容导致 segfault。










