温馨提示×

ubuntu apache2如何配置好

小樊
42
2026-07-17 12:03:08
栏目: 智能运维

下面给你一个从零到可用的 Ubuntu + Apache2 配置流程,覆盖安装、目录结构、虚拟主机、HTTPS、常用优化与安全,适合大多数网站和服务器场景。


一、安装 Apache2

sudo apt update
sudo apt install apache2 -y

安装完成后:

sudo systemctl status apache2

访问服务器 IP,看到 Apache2 Ubuntu Default Page 即成功。


二、目录与文件结构(重点)

/etc/apache2/
├── apache2.conf        # 主配置文件(不建议频繁改)
├── ports.conf          # 监听端口(80 / 443)
├── sites-available/    # 可用站点配置
├── sites-enabled/      # 启用站点(软链接)
├── mods-available/     # 可用模块
├── mods-enabled/       # 已启用模块
└── envvars             # 环境变量

网站文件默认位置:

/var/www/html

推荐:每个站点一个目录

/var/www/example.com/public_html

三、配置虚拟主机(最重要)

1️⃣ 新建站点目录

sudo mkdir -p /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www

2️⃣ 新建虚拟主机配置

sudo nano /etc/apache2/sites-available/example.com.conf

示例(HTTP):

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

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

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

3️⃣ 启用站点

sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf   # 禁用默认站点
sudo systemctl reload apache2

访问 http://example.com 即可。


四、开启 URL 重写(如 WordPress / Laravel)

sudo a2enmod rewrite
sudo systemctl restart apache2

确保目录中有:

AllowOverride All

五、配置 HTTPS(强烈推荐)

1️⃣ 安装 Certbot

sudo apt install certbot python3-certbot-apache -y

2️⃣ 申请证书

sudo certbot --apache

会自动:

  • 申请证书
  • 修改虚拟主机
  • 配置 HTTP → HTTPS 跳转

3️⃣ 自动续期测试

sudo certbot renew --dry-run

六、常用安全配置

1️⃣ 关闭目录浏览

Options -Indexes

2️⃣ 隐藏 Apache 版本

sudo nano /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off
sudo a2enconf security
sudo systemctl reload apache2

七、防火墙(UFW)

sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable

八、性能基础优化

sudo a2enmod deflate
sudo a2enmod expires
sudo systemctl restart apache2

开启 Gzip 和缓存头(示例):

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

九、常用命令速查

sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2

sudo apache2ctl configtest   # 检查配置错误

十、典型场景建议

场景 建议
WordPress 开启 rewrite + HTTPS
Laravel Apache + rewrite + public 目录
多站点 每个站点一个 vhost
生产环境 禁用 000-default,开启 HTTPS

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

  • ✅ Ubuntu 版本(20.04 / 22.04 / 24.04)
  • ✅ 网站类型(PHP / Laravel / 静态 / 反向代理)
  • ✅ 是否需要多站点

我可以给你完全定制的 Apache2 配置方案

0