下面是在 Ubuntu 上正确、规范地配置 Apache2 的常用做法,从安装 → 基础配置 → 虚拟主机 → 权限 → 常见优化/安全,按步骤来即可。
sudo apt update
sudo apt install apache2 -y
安装完成后,Apache 会自动启动。
检查状态:
sudo systemctl status apache2
如果没启动:
sudo systemctl start apache2
sudo systemctl enable apache2
浏览器访问服务器 IP:
http://服务器IP
看到 Apache2 Ubuntu Default Page 表示成功。
/etc/apache2/
├── apache2.conf # 主配置文件
├── ports.conf # 端口配置
├── sites-available/ # 可用站点配置
├── sites-enabled/ # 已启用站点(软链接)
├── mods-available/
├── mods-enabled/
└── conf-available/
网站根目录默认:
/var/www/html
sudo nano /var/www/html/index.html
sudo nano /etc/apache2/sites-available/000-default.conf
示例:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
保存后:
sudo systemctl reload apache2
example.comsudo 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/example.com
sudo nano /etc/apache2/sites-available/example.com.conf
内容:
<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}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>
sudo a2ensite example.com.conf
sudo systemctl reload apache2
(停用默认站点)
sudo a2dissite 000-default.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
确认:
apache2ctl -M | grep rewrite
ps aux | grep apache
一般是:
www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www
如果是 Laravel / ThinkPHP:
sudo chmod -R 775 storage bootstrap/cache
sudo ufw allow 'Apache Full'
sudo ufw reload
查看:
sudo ufw status
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache
自动配置 HTTPS + 自动续期。
Options -Indexes
sudo nano /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off
启用:
sudo a2enconf security
sudo systemctl reload apache2
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
sudo apache2ctl configtest # 检查配置
| 场景 | 建议 |
|---|---|
| PHP 网站 | 安装 libapache2-mod-php |
| Laravel | 开启 rewrite + storage 权限 |
| 多站点 | 每个站点一个 sites-available |
| 高并发 | 调 mpm_prefork / event |
如果你愿意,可以告诉我:
我可以给你一套完全贴合你服务器的配置方案。