温馨提示×

Apache2配置Ubuntu要注意啥

小樊
37
2026-08-16 12:57:47
栏目: 智能运维

Ubuntu 上配置 Apache2 时,有几个常见但容易踩坑的点,下面按「必看 → 常见 → 进阶」给你总结一下,适合生产环境也适合个人服务器。


一、必看基础注意事项

1️⃣ 安装方式

Ubuntu 下推荐用官方源:

sudo apt update
sudo apt install apache2

安装完成后确认状态:

sudo systemctl status apache2

2️⃣ 防火墙一定要放行 80 / 443

Ubuntu 常用 ufw

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

否则你会发现 本机能访问,外网访问不了


3️⃣ 默认站点目录

Ubuntu 的 Apache2 默认站点目录是:

/var/www/html

⚠️ 注意:

  • 不要手动改 /etc/apache2/sites-available/000-default.conf 里的路径
  • 自定义站点建议新建 conf,而不是改默认

二、配置文件结构(非常重要)

Ubuntu 的 Apache2 和 CentOS 不一样,配置是拆分的

/etc/apache2/
├── apache2.conf        # 主配置(一般不动)
├── ports.conf          # 监听端口
├── sites-available/    # 可用站点
├── sites-enabled/      # 启用的站点(软链接)
├── mods-available/
├── mods-enabled/

正确做法

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.conf
sudo a2ensite example.conf
sudo systemctl reload apache2

错误做法

  • 直接改 apache2.conf
  • 手动 ln -s 不生效

三、启用 / 禁用模块

常用模块:

sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod headers
sudo systemctl restart apache2

查看已启用模块:

apache2ctl -M

四、虚拟主机(最常用)

示例:一个 PHP / 静态站点

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example

    <Directory /var/www/example>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

⚠️ 注意:

  • AllowOverride All支持 .htaccess 的关键
  • Require all granted 必须写,否则 403

五、HTTPS(强烈建议)

1️⃣ 开启 SSL

sudo a2enmod ssl
sudo a2ensite default-ssl

2️⃣ 使用 Let’s Encrypt(推荐)

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

✅ 自动:

  • 生成证书
  • 配置 https
  • 自动续期

六、权限和 SELinux / AppArmor

1️⃣ Ubuntu 默认 没有 SELinux

但有 AppArmor

如果你遇到:

  • 403
  • 访问被拒
  • 写文件失败

检查一下:

sudo aa-status

如果确认不是代码问题,可以临时测试:

sudo systemctl stop apparmor

⚠️ 生产环境不建议直接关,建议改 profile


2️⃣ 目录权限

sudo chown -R www-data:www-data /var/www/example
sudo chmod -R 755 /var/www/example

Apache 运行用户是:

www-data

七、常见坑总结(重点)

问题 原因
403 Forbidden 目录权限 / Require 没写
.htaccess 不生效 AllowOverride None
端口无法访问 防火墙
改配置不生效 忘了 reload / restart
HTTPS 不生效 没开 ssl 模块
多个站点串了 ServerName 没配

八、调试命令(排错神器)

sudo apache2ctl configtest
sudo journalctl -u apache2
sudo tail -f /var/log/apache2/error.log

九、进阶建议(生产环境)

✅ 使用 虚拟主机 + HTTPS
✅ 禁用目录浏览:

Options -Indexes

✅ 隐藏服务器信息:

ServerTokens Prod
ServerSignature Off

✅ 开启 Gzip / HTTP/2(性能)


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

  • Ubuntu 版本(20.04 / 22.04 / 24.04)
  • 用途(PHP / 静态 / 反向代理 / Docker)
  • 是否搭配 Nginx / PHP / MySQL

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

0