源码安装apache的核心是先装依赖、再配路径、最后编译安装:必须按序手动编译安装apr(--prefix=/usr/local/apr)、apr-util(--with-apr=/usr/local/apr)、pcre,再在apache configure中显式指定--with-apr、--with-apr-util和--with-pcre路径,并确保expat-devel等系统依赖已就绪。

Linux 中用源码包编译安装 Apache,核心是“先装依赖、再配路径、最后编译安装”,不是直接解压就完事。关键在于 Apache 2.4+ 版本强制依赖 APR、APR-Util 和 PCRE,缺一不可,否则 configure 阶段就会失败。
提前装好必要依赖
不装依赖,configure 直接报错退出。以下命令一次性装齐(适用于 CentOS/RHEL 系统):
-
编译工具链:gcc、make、autoconf 等 ——
yum -y install gcc make autoconf - 运行时基础库:expat-devel(XML 解析)、openssl-devel(HTTPS 支持)
-
Apache 强制依赖:
- APR 及开发头文件:
yum -y install apr apr-devel - APR-Util 及开发头文件:
yum -y install apr-util apr-util-devel - PCRE 正则引擎及开发头文件:
yum -y install pcre pcre-devel
- APR 及开发头文件:
注意:如果系统自带的 APR 版本太低(如 CentOS 7 默认 apr-1.4.x),而你用的是较新 httpd(如 2.4.66+),仍可能报 “apr version too old”。此时需手动编译安装新版 APR 和 APR-Util(推荐 1.7.x 系列),并指定路径。
按顺序解压并安装依赖组件
若系统自带版本不满足要求,就自己编译安装 APR/APR-Util/PCRE:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 下载
apr-1.7.6.tar.gz、apr-util-1.6.3.tar.gz、pcre-8.45.tar.gz(选稳定版即可) - 依次解压、配置、编译、安装(以 APR 为例):
tar -zxf apr-1.7.6.tar.gz -C /usr/src/cd /usr/src/apr-1.7.6./configure --prefix=/usr/local/aprmake && make install - APR-Util 需指定 APR 路径:
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr - PCRE 安装后默认在
/usr/local,无需额外参数
配置并编译 Apache 主程序
进入 httpd 源码目录(如 /usr/src/httpd-2.4.66),执行:
- 设置环境变量(确保能找到刚装的库):
export LD_LIBRARY_PATH=/usr/local/apr/lib:/usr/local/apr-util/lib:/usr/local/lib:$LD_LIBRARY_PATH - 运行 configure,关键参数示例:
./configure \ --prefix=/usr/local/apache \ --enable-so \ --enable-rewrite \ --enable-ssl \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util \ --with-pcre=/usr/local - 检查输出末尾是否显示
checking for pcre-config... /usr/local/bin/pcre-config等成功信息,再执行make && make install - 验证编译结果:
echo $?返回0表示无错误
启动服务并简单调通
安装完成后不是立刻能访问,还需几步收尾:
- 修改主配置文件:
/usr/local/apache/conf/httpd.conf,取消注释或添加ServerName localhost:80(否则启动会警告) - 启动服务:
/usr/local/apache/bin/apachectl start - 检查端口监听:
ss -tlnp | grep :80或netstat -tuln | grep :80 - 关闭防火墙或放行 80 端口(CentOS 7+):
systemctl stop firewalld或firewall-cmd --add-port=80/tcp --permanent && firewall-cmd --reload - 本地测试:
curl http://localhost应返回It works!;远程访问用服务器 IP 测试
后续可加开机自启(复制 apachectl 到 /etc/init.d/httpd,补充 chkconfig 注释,再 chkconfig --add httpd),也可软链接命令到 /usr/local/bin 方便调用。










