编译安装Apache需先装齐依赖(Development Tools、APR、PCRE、OpenSSL),再用合理configure参数(--prefix、--enable-so等)配置编译,安装后手动配置systemd服务并调优httpd.conf。

CentOS 编译安装 Apache 后,配置比 YUM 安装更灵活,但也更依赖手动操作。核心在于编译参数合理、路径明确、服务可管理、配置可生效。
编译前先装齐依赖
缺依赖会导致 configure 失败或功能缺失。必须安装:
- 开发工具:
yum groupinstall "Development Tools" -y - APR 及其开发包:
yum install apr apr-devel apr-util apr-util-devel -y - PCRE(正则支持):
yum install pcre pcre-devel -y - OpenSSL(HTTPS 支持):
yum install openssl openssl-devel -y
注意:Apache 2.4+ 强制依赖 APR,若下载的是源码包但 srclib/ 下无 apr 和 apr-util,需单独下载对应版本解压后移入 srclib/ 并重命名(如 apr-1.7.6 → apr)。
configure 配置关键选项
进入解压后的源码目录,执行 ./configure,推荐基础组合:
-
--prefix=/usr/local/apache2:指定安装根目录(后续所有路径以此为基准) -
--enable-so:启用动态模块加载(必需,否则无法用LoadModule) -
--enable-ssl:开启 HTTPS 支持(配了才可加载mod_ssl) -
--enable-rewrite:启用 URL 重写(SEO、伪静态常用) -
--enable-cgi:支持 CGI 脚本 -
--with-pcre:绑定系统 PCRE 库 -
--enable-mpms-shared=all:把 prefork、worker、event 都编译成共享模块,便于后期切换
运行 ./configure ... && make && make install 完成安装。成功后,/usr/local/apache2/bin/httpd -v 应能正常输出版本信息。
配置 systemd 服务(让 systemctl 可控)
默认不带 service 文件,需手动创建:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
新建 /usr/lib/systemd/system/httpd.service,内容如下:
[Unit] Description=Apache HTTP Server After=network.target [Service] Type=forking ExecStart=/usr/local/apache2/bin/apachectl start ExecReload=/usr/local/apache2/bin/apachectl graceful ExecStop=/usr/local/apache2/bin/apachectl stop PrivateTmp=true [Install] WantedBy=multi-user.target
然后启用服务:
systemctl daemon-reloadsystemctl enable httpdsystemctl start httpd
检查状态:systemctl status httpd,确认 Active: active (running)。
主配置与基本调优
主配置文件在 /usr/local/apache2/conf/httpd.conf,重点修改几处:
-
ServerName localhost:80:取消注释并设值,避免启动警告 -
DocumentRoot "/usr/local/apache2/htdocs":确认网站根目录路径 -
<directory></directory>块内设:Require all granted(允许外部访问)AllowOverride All(允许 .htaccess 覆盖规则) -
DirectoryIndex index.html index.php:追加常见首页文件 - 如需启用模块,取消对应行的注释,例如:
LoadModule rewrite_module modules/mod_rewrite.soLoadModule ssl_module modules/mod_ssl.so
改完后执行 /usr/local/apache2/bin/apachectl configtest 测试语法,再 systemctl reload httpd 生效。

















