Apache 配置指南
什么是 Apache?
Apache HTTP Server 是一个开源、跨平台的 Web 服务器软件,广泛用于托管静态和动态网站。它支持模块化扩展,兼容多种操作系统(如 Linux、Windows、macOS),并常与 PHP、Python 等语言结合使用。其核心功能包括:
- 处理 HTTP 请求
- 支持虚拟主机、URL 重写、负载均衡
- 提供安全认证和访问控制
- 常与 MySQL、PHP 组成 LAMP 栈(Linux、Apache、MySQL、PHP)
安装 Apache
Linux(以 Ubuntu 为例)
sudo apt update
sudo apt install apache2
sudo systemctl start apache2
sudo systemctl enable apache2
Windows
- 下载 Apache 二进制文件(推荐从 Apache Lounge 获取)
- 解压到指定目录(如
C:\Apache24
) - 修改配置文件
conf/httpd.conf
,设置服务器根目录 - 运行
bin/httpd.exe
启动服务
验证安装
访问 http://localhost
或 http://服务器IP
,若显示 Apache 默认页面,说明安装成功。
Apache 核心配置文件
Apache 的主要配置文件位于 conf/httpd.conf
(Windows)或 /etc/apache2/apache2.conf
(Linux)。常用配置文件包括:
- httpd.conf / apache2.conf:主配置文件,定义全局设置
- sites-available/:虚拟主机配置文件目录
- mods-available/:模块配置目录
- conf-available/:其他配置片段
配置虚拟主机
虚拟主机允许一台服务器托管多个网站。以下是一个简单的虚拟主机配置示例:
示例:配置虚拟主机
- 创建虚拟主机配置文件(Linux 示例:
/etc/apache2/sites-available/example.com.conf
)
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
<Directory /var/www/example.com/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
- 启用虚拟主机(Linux)
sudo a2ensite example.com.conf
sudo systemctl reload apache2
- 创建网站目录并添加测试页面
sudo mkdir -p /var/www/example.com/public_html
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
常用 Apache 模块
Apache 通过模块扩展功能,常用模块包括:
模块 | 说明 |
---|---|
mod_rewrite | 启用 URL 重写(如实现伪静态) |
mod_ssl | 支持 HTTPS 和 SSL/TLS 加密 |
mod_proxy | 反向代理功能(如与 Gunicorn 结合) |
mod_authz | 访问控制和用户认证 |
mod_cgi | 支持 CGI 脚本(如 Python、Perl) |
启用模块(Linux 示例):
sudo a2enmod rewrite
sudo systemctl restart apache2
配置 HTTPS
- 获取 SSL 证书(如使用 Let’s Encrypt)
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
- 更新虚拟主机配置以支持 HTTPS
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/example.com/public_html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
- 重启 Apache
sudo systemctl restart apache2
常用配置指令详解
指令 | 说明 |
---|---|
ServerName | 设置主域名(如 example.com ) |
ServerAlias | 设置别名(如 www.example.com ) |
DocumentRoot | 指定网站文件根目录 |
ErrorLog | 错误日志路径 |
CustomLog | 访问日志路径及格式 |
Listen | 指定监听端口(如 80 、443 ) |
<Directory> | 设置目录权限和选项 |
AllowOverride | 允许 .htaccess 文件覆盖配置(All / None ) |
Require | 访问控制(如 Require all granted ) |
RewriteEngine | 启用 URL 重写 |
RewriteRule | 定义 URL 重写规则 |
使用 .htaccess 文件
.htaccess
文件用于目录级配置,需确保主配置文件中 AllowOverride
设置为 All
。示例:
# .htaccess 示例
RewriteEngine On
RewriteRule ^old-page$ new-page [R=301,L]
日志管理
- 访问日志:记录客户端请求,路径如
/var/log/apache2/access.log
- 错误日志:记录服务器错误,路径如
/var/log/apache2/error.log
- 日志格式可通过
LogFormat
和CustomLog
自定义
推荐部署组合
生产环境中推荐以下组合:
- Apache + PHP/Flask/Django
- Apache:处理 HTTP 请求、静态文件和反向代理
- PHP/Flask/Django:处理动态内容
- Certbot:自动化 HTTPS 配置
- UFW/Firewall:限制端口访问
注意事项
- 权限管理:确保网站目录(如
/var/www
)具有正确权限(通常为www-data
用户和组) - 性能优化:启用
mod_deflate
(压缩)、mod_cache
(缓存)以提升性能 - Windows 兼容性:Windows 下路径分隔符使用反斜杠
\
,需注意配置文件格式 - 重启服务:修改配置后需重启 Apache(
sudo systemctl restart apache2
或httpd -k restart
)