下面给你一个从零到可用的 Ubuntu + Apache2 配置流程,覆盖安装、目录结构、虚拟主机、HTTPS、常用优化与安全,适合大多数网站和服务器场景。
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
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
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>
sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf # 禁用默认站点
sudo systemctl reload apache2
访问 http://example.com 即可。
sudo a2enmod rewrite
sudo systemctl restart apache2
确保目录中有:
AllowOverride All
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache
会自动:
sudo certbot renew --dry-run
Options -Indexes
sudo nano /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off
sudo a2enconf security
sudo systemctl reload apache2
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 |
如果你愿意,可以告诉我:
我可以给你完全定制的 Apache2 配置方案。