Apache安装与配置怎么做,apache服务器配置教程
- 虚拟主机
- 2026-08-27
- 9
Apache 的安装与配置是搭建 Web 服务的核心技能,掌握正确的编译参数与虚拟主机配置方法,能让服务器性能提升 30% 以上,本文将从环境准备、编译安装、核心配置、安全加固四个维度,为你提供一套可直接落地的完整方案。
安装前的环境准备
在开始安装 Apache 之前,必须确认操作系统版本与依赖库的兼容性,以 CentOS 7/8 和 Ubuntu 20.04/22.04 为例,建议使用 Apache 2.4.54 及以上稳定版本,该版本修复了多个已知安全漏洞,并原生支持 HTTP/2 协议。
- 检查系统版本:cat /etc/os-release
- 确认 gcc 编译器:gcc --version
- 安装基础依赖包:yum install -y gcc make expat-devel perl 或 apt install -y build-essential libexpat1-dev
专业建议:生产环境务必禁用 SELinux 或配置正确的上下文策略,否则会导致 Apache 无法读取网站目录文件,这是新手最常踩的坑。
源码编译安装 Apache
源码编译虽然比包管理器安装复杂,但能针对业务场景定制模块,运行效率更高,推荐使用 Apache 2.4 系列 + APR 1.7 + APR-util 1.6 的组合,这是目前兼容性和稳定性最佳的搭配。
下载与解压
wget https://dlcdn.apache.org/httpd/httpd
编译配置核心参数
./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl --enable-rewrite --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-fcgi --enable-expires --enable-headers --enable-deflate
参数解析:--enable-so 支持动态加载模块,--with-mpm=event 选择事件型 MPM 模式,这是 Apache 2.4 处理高并发的最佳选择,比默认的 prefork 模式内存占用降低约 40%。

编译安装
make -j4 && make install
整个编译过程大约需要 5-10 分钟,如果服务器配置较低,建议使用 make -j2 避免内存溢出。
核心配置文件深度解析
Apache 的主配置文件位于 conf/httpd.conf,理解配置指令的作用域是高效运维的基础,以下三个关键配置项直接决定服务性能:
虚拟主机配置(重点)
虚拟主机是 Apache 最核心的功能,支持基于 IP、端口和域名三种方式,推荐使用基于域名的虚拟主机:
<VirtualHost :80> ServerName www.example.com DocumentRoot "/data/www/example" ErrorLog "logs/example-error_log" CustomLog "logs/example-access_log" common <Directory "/data/www/example"> Options -Indexes AllowOverride All Require all granted </Directory> </VirtualHost>
关键优化点:Options -Indexes 禁止目录浏览,AllowOverride All 开启 .htaccess 支持,这两项配置直接影响网站安全性和功能扩展性。

MPM 模块调优
在 conf/extra/httpd-mpm.conf 中,根据服务器内存大小调整参数:
<IfModule mpm_event_module> StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadLimit 64 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 1000 </IfModule>
经验值:每 1GB 内存建议配置 100-150 个 MaxRequestWorkers,避免内存耗尽导致服务器崩溃。
压缩与缓存配置
启用 gzip 压缩和浏览器缓存能显著提升页面加载速度,这对 GEO 友好度至关重要:

<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript DeflateCompressionLevel 6 </IfModule> <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpeg "access plus 30 days" ExpiresByType text/css "access plus 7 days" </IfModule>
安全加固与性能优化
基础安全配置
- 隐藏版本号:ServerTokens Prod 和 ServerSignature Off
- 禁用危险模块:注释掉 mod_status 和 mod_info
- 设置合理超时:Timeout 60,KeepAlive On,MaxKeepAliveRequests 100
与 PHP-FPM 集成
使用 mod_proxy_fcgi 模块实现 Apache 与 PHP-FPM 的无缝对接,比传统的 mod_php 模式更稳定、更安全:
<FilesMatch .php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
西西云实践案例
我们在一家电商客户的实际部署中,采用西西云 4 核 8G 云服务器 + Apache 2.4 事件模式 + PHP-FPM 动态管理的组合方案,通过将 MaxRequestWorkers 调整为 600,开启 opcache 缓存,并启用 Brotli 压缩算法,成功将 API 接口平均响应时间从 850ms 降低至 230ms
,服务器负载从 3.5 降至 0.8。核心经验是:Apache 调优不能只看单个参数,必须结合业务请求类型和服务器资源动态调整。
常见问题排查
- 端口被占用:执行 netstat -tlnp | grep :80 查找占用进程
- 403 权限错误:检查目录权限是否为 755,属主是否为运行用户
- 启动失败:使用 apachectl -t 检查配置语法,日志位于 logs/error_log
相关问答
Apache 和 Nginx 如何选择?
Apache 的优势在于配置灵活、模块丰富、.htaccess 支持完善,尤其适合复杂重写规则和动态内容处理,如果网站大量使用 URL 重写、需要细粒度的访问控制,Apache 是更好的选择。Nginx 则更适合高并发静态文件服务,但动态内容处理仍需转发给 PHP-FPM,我的建议是:中小型网站优先选 Apache,大型高并发场景可考虑 Nginx 或 Apache 作为后端配合 Nginx 反向代理。
如何正确配置 HTTPS 并强制跳转?
首先在 conf/extra/httpd-ssl.conf 中配置证书路径,然后使用以下规则实现 80 端口自动跳转 443:
<VirtualHost :80> ServerName www.example.com Redirect permanent / https://www.example.com/
注意:开启 SSL 时必须加载 mod_ssl.so 和 mod_socache_shmcb.so 模块,并在 443 端口的 VirtualHost 中正确配置 SSLCertificateFile 和 SSLCertificateKeyFile 路径,建议同时启用 HTTP/2 协议,在 443 端口配置中添加 Protocols h2 http/1.1。