Apache HTTP服务器 实战教程
作为Web开发入门首选的老牌开源服务器,Apache HTTP Server(以下简称Apache)凭借跨平台、模块化、稳定易用的特性,至今仍在全球保持30%以上的市场份额。本文聚焦新手/小团队常用的核心场景,用精简的步骤和代码带你快速上手。
1. 快速安装与启动
我们覆盖最主流的3种环境:Linux、Docker和Docker Compose(便于统一管理)。
1.1 Linux原生安装
Linux是Apache的黄金搭档,不同发行版仅需调整包管理器即可。
Ubuntu/Debian系
# 更新源并安装
sudo apt update && sudo apt install -y apache2
# 核心操作
sudo systemctl start apache2 # 启动
sudo systemctl enable apache2 # 开机自启
sudo systemctl status apache2 # 检查状态
apache2 -v # 查看版本
CentOS/RHEL系
# 安装(CentOS8+/RHEL8+用dnf)
sudo dnf install -y httpd
# 核心操作
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd
httpd -v
安装成功后,访问服务器IP(80端口)就能看到Apache的默认欢迎页!
1.2 Docker/Docker Compose一键部署
适合本地测试、开发环境隔离或快速搭建微服务网关。
Docker单容器
# 拉取官方最新镜像
docker pull httpd:latest
# 启动(挂载本地目录简化配置修改)
docker run -d \
--name my-local-apache \
-p 8080:80 \
-p 8443:443 \
-v $(pwd)/html:/usr/local/apache2/htdocs \
-v $(pwd)/logs:/usr/local/apache2/logs \
httpd:latest
启动后访问 http://localhost:8080 即可,本地 html/ 目录下的文件会直接作为Web根目录内容。
2. 核心基础配置
Apache的核心配置分全局配置和虚拟主机配置,Linux原生和Docker部署的路径不同:
2.1 全局配置的关键优化
全局配置不用大改,新手只需要调整这3个地方提高安全性和易用性:
# 1. 隐藏Apache版本号(防止攻击者利用已知漏洞)
ServerTokens Prod
ServerSignature Off
# 2. 启用 KeepAlive(减少TCP握手次数,提升静态资源加载速度)
KeepAlive On
MaxKeepAliveRequests 100 # 单次连接最多请求数
KeepAliveTimeout 5 # 空闲连接超时时间(秒)
# 3. 启用常用核心模块(后续配置会用到)
# Ubuntu/Debian用 a2enmod 命令更方便:a2enmod rewrite deflate headers ssl
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
2.2 虚拟主机配置(最常用!)
虚拟主机可以让一台服务器托管多个域名/站点,我们以Ubuntu为例配置HTTP基础虚拟主机。
步骤1:创建站点目录与测试文件
# 为站点创建专属目录(建议按域名命名)
sudo mkdir -p /var/www/example.com/html
# 修改权限让Apache能访问
sudo chown -R www-data:www-data /var/www/example.com
# 创建测试首页
sudo nano /var/www/example.com/html/index.html
测试首页内容:
<!DOCTYPE html>
<html>
<head><title>Hello Apache!</title></head>
<body><h1>Welcome to example.com!</h1></body>
</html>
步骤2:编写虚拟主机配置
# 创建配置文件 /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
# 站点基础信息
ServerName example.com
ServerAlias www.example.com # 别名,多个域名指向同一站点
DocumentRoot /var/www/example.com/html
# 目录权限与特性
<Directory "/var/www/example.com/html">
Options Indexes FollowSymLinks # 允许列目录(可选,生产环境建议关Indexes)
AllowOverride All # 允许用 .htaccess 覆盖配置(SEO重写必备)
Require all granted # 允许所有人访问
</Directory>
# 日志配置(便于排查问题)
ErrorLog ${APACHE_LOG_DIR}/example_error.log
CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>
步骤3:启用配置并重启
# 禁用默认的 000-default.conf(可选,生产环境建议禁用)
sudo a2dissite 000-default.conf
# 启用我们的新配置
sudo a2ensite example.com.conf
# 验证配置语法(重要!避免重启失败)
sudo apache2ctl configtest
# 语法没问题则优雅重启(不影响在线用户)
sudo systemctl reload apache2
3. 实用进阶配置
3.1 Let's Encrypt免费SSL证书(强制HTTPS)
现在HTTPS是标配,Let's Encrypt提供免费90天自动续期的证书,搭配 certbot 工具一键搞定。
Ubuntu安装与配置
# 安装 certbot 和 Apache插件
sudo apt update && sudo apt install -y certbot python3-certbot-apache
# 一键获取证书并配置HTTPS(自动修改虚拟主机配置)
sudo certbot --apache -d example.com -d www.example.com
# 验证自动续期
sudo certbot renew --dry-run
执行 certbot 时会提示输入邮箱、同意协议,最后会问是否强制HTTP跳转到HTTPS,选 2: Redirect 即可!
3.2 URL重写(SEO友好)
用 .htaccess 实现URL美化,比如把 article.php?id=123 改成 /article/123。
步骤1:在站点根目录创建 .htaccess
sudo nano /var/www/example.com/html/.htaccess
步骤2:编写重写规则
RewriteEngine On
# 1. 强制HTTPS(如果certbot没配置成功可以手动加)
# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 2. www跳转到非www(也可以反过来)
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# 3. 隐藏PHP扩展名
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
# 4. SEO友好的文章链接
RewriteRule ^article/([0-9]+)/?$ article.php?id=$1 [L]
3.3 Gzip压缩(提升加载速度)
压缩HTML、CSS、JS等文本资源,能减少60%-80%的传输体积,直接在全局配置或虚拟主机配置中加:
<IfModule mod_deflate.c>
# 启用压缩
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/json
# 压缩级别(1-9,推荐6:速度和压缩率平衡)
DeflateCompressionLevel 6
</IfModule>
4. 最佳实践总结
- 安全第一:隐藏版本号、强制HTTPS、禁止列生产环境的目录、用防火墙限制端口。
- 性能优先:启用KeepAlive、Gzip压缩、静态资源缓存(可以用
mod_expires 加在 .htaccess 或虚拟主机里)。
- 规范管理:虚拟主机按域名命名、配置前先验证语法(
apache2ctl configtest)、部署后优雅重启(systemctl reload apache2)。
- 日志监控:定期检查错误日志,用
tail -f 实时观察访问量和异常请求。
Apache虽然没有Nginx的高并发性能,但它的模块化架构和丰富的文档对新手更友好,适合部署中小规模的静态站点、博客或作为简单的反向代理。