离线安装Apache核心是提前下载齐全依赖并按序安装:必须包含apr、apr-util、pcre及httpd四个组件;RPM方式直接安装对应.rpm包,源码方式须严格按apr→apr-util→pcre→httpd顺序解压编译,且configure路径需精准指向已安装组件的xxx-config文件。

在无公网环境下离线安装 Apache,核心是提前在有网机器上下载全部依赖和主程序,再复制到目标服务器完成编译或 RPM 安装。关键不在于“能不能装”,而在于“依赖是否齐、路径是否对、顺序是否准”。
必须提前下载的四个核心组件
Apache 2.4+ 不再内置 APR 和 PCRE,需单独安装。缺一不可:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- apr(Apache Portable Runtime):提供跨平台底层支持,如内存管理、线程、文件 I/O
-
apr-util:APR 的扩展库,含 XML 解析、数据库连接等,依赖 expat(若编译报
expat.h not found,需额外下载expat-2.5.0.tar.gz) - pcre(Perl Compatible Regular Expressions):正则表达式引擎,Apache 模块路由、重写等功能依赖它
-
httpd(Apache 主程序):选择与系统架构匹配的源码包(如
httpd-2.4.62.tar.bz2),非 RPM 包(除非你用 RPM 方式)
两种主流离线安装方式选其一
RPM 方式(适合 CentOS/RHEL,推荐初学者):
从对应版本的官方镜像站(如 mirrors.bfsu.edu.cn/centos/7/os/x86_64/Packages/)下载以下 RPM 包(以 CentOS 7 为例):
httpd-2.4.6-97.el7.centos.x86_64.rpm-
apr-1.4.8-7.el7.x86_64.rpm+apr-devel-1.4.8-7.el7.x86_64.rpm -
apr-util-1.5.2-6.el7.x86_64.rpm+apr-util-devel-1.5.2-6.el7.x86_64.rpm -
pcre-8.32-17.el7.x86_64.rpm+pcre-devel-8.32-17.el7.x86_64.rpm -
openldap-devel-2.4.44-21.el7_6.x86_64.rpm(apr-util 可能依赖)
上传后执行:rpm -ivh *.rpm(按依赖顺序装,或直接 rpm -Uvh --force --nodeps *.rpm 强制装,但不建议跳过依赖检查)
源码编译方式(适合定制化或新版需求):
解压顺序严格为:apr → apr-util → pcre → httpd,每步 ./configure --prefix=指定路径 后必须 make && make install。
- apr-util 的 configure 必须带
--with-apr=/path/to/apr/bin/apr-1-config - pcre 和 httpd 的 configure 中,
--with-apr、--with-apr-util、--with-pcre路径要精确指向已安装的bin/xxx-config文件 - httpd 编译时加
--enable-so(启用动态模块)、--enable-ssl(如需 HTTPS)
安装后必须做的三件事
1. 配置生效
编辑 /usr/local/apache2/conf/httpd.conf(源码安装)或 /etc/httpd/conf/httpd.conf(RPM 安装):
– 取消注释 ServerName localhost:80
– 确认 Listen 80 未被注释
– 若需代理或重写,确保 LoadModule rewrite_module modules/mod_rewrite.so 等行已启用
2. 启动与验证
源码安装:/usr/local/apache2/bin/apachectl start
RPM 安装:systemctl start httpd && systemctl enable httpd
检查端口:ss -tlnp | grep :80,访问 http://本机IP 应见 “It works!” 页面
3. 防火墙放行(常被忽略)
CentOS/RHEL:firewall-cmd --permanent --add-service=http && firewall-cmd --reload
若 SELinux 启用且反向代理异常,临时放开:setsebool -P httpd_can_network_connect 1
常见失败点与快速排查
• 启动失败报 Cannot load modules/mod_so.so → httpd 编译漏了 --enable-so,重编译
• 报 undefined symbol: apr_sockaddr_info_get → apr-util 没装或路径错,检查 apu-1-config 是否存在
• 访问返回 403 → 检查 DocumentRoot 目录权限(需 apache 用户可读)及 <Directory> 块中是否含 Require all granted
• 日志空白 → 查 /usr/local/apache2/logs/error_log 或 /var/log/httpd/error_log,看具体错误行

















