在 Ubuntu 上配置 Apache(通常是 apache2)时,有几个常见但容易踩坑的点。下面按「安装 → 配置 → 安全 → 排错」给你梳理一下。
sudo apt update
sudo apt install apache2
常用命令:
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2
⚠️ 注意:
apache2,不是 httpd/etc/apache2/,不是 /etc/httpd/Ubuntu Apache 的目录结构:
/etc/apache2/
├─ apache2.conf # 主配置(尽量少改)
├─ ports.conf # 端口监听
├─ sites-available/ # 可用站点(虚拟主机)
├─ sites-enabled/ # 已启用站点(软链接)
├─ mods-available/
├─ mods-enabled/
└─ conf-available/
✅ 正确做法:
sites-available/sudo a2ensite your-site.conf
sudo systemctl reload apache2
❌ 不要直接改 apache2.conf 来加站点
示例(/etc/apache2/sites-available/example.conf):
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example
<Directory /var/www/example>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example_error.log
CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>
启用:
sudo a2ensite example.conf
sudo a2dissite 000-default.conf # 可选
sudo systemctl reload apache2
⚠️ 注意:
DocumentRoot 目录必须存在sudo chown -R www-data:www-data /var/www/example
Ubuntu 默认 没有 SELinux,但有 AppArmor
常见问题:
/home 下可能无权访问/var/wwwsudo apt install certbot python3-certbot-apache
sudo certbot --apache
✅ 自动:
⚠️ 注意:
sudo ufw allow 'Apache Full'
sudo ufw enable
查看:
sudo ufw status
启用模块:
sudo a2enmod rewrite
sudo systemctl reload apache2
常见模块:
rewrite:URL 重写(WordPress 等必需)ssl:HTTPSheaders:安全头sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/access.log
典型错误:
403 Forbidden → 权限 / Directory 配置404 → DocumentRoot 错AH00558 → ServerName 未设置(可忽略或加)ServerTokens Prod
ServerSignature Off
Options -Indexes
<Directory /var/www/admin>
Require ip 1.2.3.4
</Directory>
❌ 改了配置不 reload
❌ 忘了 a2ensite
❌ 文件权限不是 www-data
❌ 端口被 Nginx 占用
❌ 云服务器安全组没开 80/443
如果你愿意,可以告诉我:
我可以直接给你一份可用配置文件模板。