Debian Apache 虚拟主机配置方法
一 准备与安装
- 更新索引并安装 Apache:sudo apt update && sudo apt install apache2
- 启动并设置开机自启:sudo systemctl start apache2 && sudo systemctl enable apache2
- 启用常用模块(按需):sudo a2enmod rewrite ssl
- 防火墙放行(如使用 UFW):sudo ufw allow ‘Apache Full’
二 创建站点目录与测试页
- 创建目录:sudo mkdir -p /var/www/example.com
- 写入测试页:echo “
Welcome to example.com
” | sudo tee /var/www/example.com/index.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>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>
- 说明:使用 -Indexes 可避免目录无索引文件时列目录;AllowOverride All 便于 .htaccess 生效(如 WordPress 固定链接);日志建议按站点拆分便于排错。
四 启用站点与生效
- 启用站点:sudo a2ensite example.com.conf
- 可选禁用默认站点:sudo a2dissite 000-default.conf
- 语法检查:sudo apache2ctl configtest
- 重新加载或重启:sudo systemctl reload apache2(或 restart)
五 DNS 与访问测试
- 在域名注册商添加 A 记录 指向服务器 IP;如需 www,可同时添加 www 的 A 记录或 CNAME 指向主域。
- 本机测试可临时修改 /etc/hosts:例如 “1.2.3.4 example.com www.example.com”,然后访问 http://example.com 验证。
六 启用 HTTPS 与常见问题
- 使用 Let’s Encrypt 获取并自动配置证书:sudo apt install certbot python3-certbot-apache,随后执行 sudo certbot --apache -d example.com -d www.example.com;证书会自动续期。
- 常见问题与排查:
- 配置未生效:先执行 sudo apache2ctl configtest 检查语法,再查看 /var/log/apache2/error.log 定位问题。
- 权限被拒:确认目录属主为 www-data:www-data,权限为 755。
- 端口未放行:如使用防火墙,放行 80/443(UFW:sudo ufw allow ‘Apache Full’)。
- 多域名与默认站点:确保 ServerName/ServerAlias 匹配请求的 Host 头;必要时禁用默认站点避免冲突。