温馨提示×

ubuntu apache配置要注意啥

小樊
32
2026-10-16 19:55:55
栏目: 智能运维

在 Ubuntu 上配置 Apache(通常是 apache2)时,有几个常见但容易踩坑的点。下面按「安装 → 配置 → 安全 → 排错」给你梳理一下。


一、安装与基本管理

sudo apt update
sudo apt install apache2

常用命令:

sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2

⚠️ 注意:

  • Ubuntu 用 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 来加站点


三、虚拟主机(VirtualHost)

示例(/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

四、权限与 SELinux / AppArmor

Ubuntu 默认 没有 SELinux,但有 AppArmor

常见问题:

  • 网站目录在 /home 下可能无权访问
  • 解决方法:
    • 放 /var/www
    • 或修改 AppArmor 规则(不推荐新手)

五、开启 HTTPS(强烈建议)

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

✅ 自动:

  • 配置 SSL
  • 设置 80 → 443 跳转
  • 自动续期

⚠️ 注意:

  • 域名要解析到服务器 IP
  • 防火墙要放行 80/443

六、防火墙(UFW)

sudo ufw allow 'Apache Full'
sudo ufw enable

查看:

sudo ufw status

七、常用模块

启用模块:

sudo a2enmod rewrite
sudo systemctl reload apache2

常见模块:

  • rewrite:URL 重写(WordPress 等必需)
  • ssl:HTTPS
  • headers:安全头

八、日志排查(非常重要)

sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/access.log

典型错误:

  • 403 Forbidden → 权限 / Directory 配置
  • 404 → DocumentRoot 错
  • AH00558 → ServerName 未设置(可忽略或加)

九、安全建议(生产必看)

  1. 隐藏版本信息
ServerTokens Prod
ServerSignature Off
  1. 禁止目录浏览
Options -Indexes
  1. 限制访问
<Directory /var/www/admin>
    Require ip 1.2.3.4
</Directory>

十、常见坑总结

❌ 改了配置不 reload
❌ 忘了 a2ensite
❌ 文件权限不是 www-data
❌ 端口被 Nginx 占用
❌ 云服务器安全组没开 80/443


如果你愿意,可以告诉我:

  • Ubuntu 版本(20.04 / 22.04 / 24.04)
  • 用途(静态站 / PHP / Laravel / WordPress)
  • 是否用域名 + HTTPS

我可以直接给你一份可用配置文件模板。

0 踩