Linux编译安装Apache
准备工作
在开始编译安装Apache之前,需确保系统满足基本要求并完成必要的环境配置,更新系统软件包列表并安装编译所需的依赖工具,如gcc、make、openssl-devel等,以CentOS系统为例,可通过以下命令安装:

sudo yum update -y sudo yum groupinstall "Development Tools" -y sudo yum install openssl-devel pcre-devel expat-devel libtool -y
建议创建一个专用用户(如apache)以提升安全性,避免使用root用户运行服务:
sudo useradd -r -M -s /sbin/nologin apache
下载源码包
从Apache官方镜像站获取最新稳定版源码包,以当前较新的2.4.57版本为例,使用wget下载:
wget https://archive.apache.org/dist/httpd/httpd-2.4.57.tar.gz tar -zxvf httpd-2.4.57.tar.gz cd httpd-2.4.57
解压后进入源码目录,可查看INSTALL文件获取详细的安装说明。
配置编译选项
编译安装的核心在于./configure脚本,通过参数自定义安装路径、功能模块等,常用配置选项包括:
- 安装路径:
--prefix=/usr/local/apache2 - 启用模块:如
--enable-so(支持动态加载模块)、--enable-ssl(支持HTTPS)、--enable-proxy(支持反向代理) - 依赖路径:
--with-apr=/usr/local/apr(若安装了独立版本的APR) - 用户与组:
--with-mpm=event(选择多路处理模型,如event、prefork或worker)
示例配置命令:

./configure --prefix=/usr/local/apache2 \
--enable-so \
--enable-ssl \
--enable-proxy \
--with-mpm=event \
--with-included-apr
若配置成功,会显示“Configuration complete”提示,若报错,需根据错误信息安装缺失的依赖库。
编译与安装
执行make命令进行编译,根据系统性能可能需要几分钟到十几分钟,若需加快编译速度,可使用-j参数指定并行任务数(如make -j4):
make -j$(nproc) # 自动检测CPU核心数
编译完成后,执行make install完成安装:
sudo make install
安装完成后,Apache的目录结构如下:
/usr/local/apache2/bin:可执行文件(如httpd、apachectl)/usr/local/apache2/conf:配置文件/usr/local/apache2/htdocs:网站根目录/usr/local/apache2/logs:日志文件
配置与启动
- 修改配置文件:编辑
conf/httpd.conf,检查关键参数:ServerName:设置服务器域名或IPListen:监听端口(默认80)User和Group:指定运行用户(如apache)
- 启动服务:通过
apachectl工具启动:sudo /usr/local/apache2/bin/apachectl start
检查服务状态:
sudo systemctl status httpd(需创建systemd服务文件)或直接访问http://服务器IP,显示Apache测试页面即成功。
创建systemd服务(可选)
为方便管理,可创建systemd服务文件/etc/systemd/system/httpd.service:
[Unit] Description=The Apache HTTP Server After=network.target [Service] Type=forking User=apache Group=apache ExecStart=/usr/local/apache2/bin/apachectl start ExecReload=/usr/local/apache2/bin/apachectl graceful ExecStop=/usr/local/apache2/bin/apachectl stop PIDFile=/usr/local/apache2/logs/httpd.pid [Install] WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable httpd --now
常见问题与优化
- 端口冲突:若80端口被占用,修改
Listen指令为其他端口(如8080),并检查防火墙设置。 - 模块加载失败:确认编译时启用所需模块,或通过
LoadModule指令手动加载动态模块。 - 性能优化:调整
mpm_event_module参数(如ThreadsPerChild、MaxRequestWorkers),结合ab工具进行压力测试。
通过以上步骤,即可完成Apache的编译安装,相较于二进制包,编译安装提供了更高的灵活性和定制化能力,适合生产环境对性能和功能有特殊需求的场景。



















