Apache2虚拟主机允许在同一服务器上托管多个网站,以下是详细配置流程:
若未安装Apache2,通过以下命令安装:
sudo apt update
sudo apt install apache2
安装完成后,Apache2会自动启动,可通过systemctl status apache2验证状态。
虚拟主机常用模块需提前启用:
mod_rewrite:支持URL重写(如WordPress的固定链接);mod_ssl:支持HTTPS加密(可选,但推荐)。sudo a2enmod rewrite
sudo a2enmod ssl # 如需SSL则启用
启用后需重启Apache2使模块生效:
sudo systemctl restart apache2
虚拟主机配置文件存放在/etc/apache2/sites-available/目录下,每个域名对应一个.conf文件。例如为site1.com创建配置文件:
sudo nano /etc/apache2/sites-available/site1.com.conf
写入以下基础配置(按需修改):
<VirtualHost *:80>
ServerAdmin webmaster@site1.com # 管理员邮箱
ServerName site1.com # 主域名
ServerAlias www.site1.com # 别名(可选)
DocumentRoot /var/www/site1.com # 网站根目录
<Directory /var/www/site1.com>
Options Indexes FollowSymLinks # 允许目录列表和符号链接
AllowOverride All # 允许.htaccess覆盖配置
Require all granted # 允许所有用户访问
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1.com_error.log # 错误日志路径
CustomLog ${APACHE_LOG_DIR}/site1.com_access.log combined # 访问日志格式
</VirtualHost>
保存并退出(Ctrl+O→回车→Ctrl+X)。
使用a2ensite命令启用配置文件:
sudo a2ensite site1.com.conf
该命令会创建符号链接,将配置文件链接到sites-enabled/目录(Apache2实际读取的目录)。
若无需默认站点(000-default.conf),可禁用以避免冲突:
sudo a2dissite 000-default.conf
禁用后需重启Apache2。
使配置生效:
sudo systemctl restart apache2
若修改配置后出现问题,可通过sudo apache2ctl -t测试语法是否正确。
将域名指向服务器IP(需在域名注册商管理面板操作):
A记录:主机名@(主域名),值服务器IP;CNAME记录:主机名www,值@(可选,绑定www子域名)。在浏览器访问http://site1.com和http://www.site1.com,若显示网站内容则配置成功。
使用Let’s Encrypt免费获取SSL证书,提升网站安全性:
sudo apt install certbot python3-certbot-apache # 安装Certbot
sudo certbot --apache -d site1.com -d www.site1.com # 自动获取并配置证书
证书有效期为90天,Certbot会自动添加续期任务(通过cron),也可手动续期:
sudo certbot renew --dry-run # 测试续期
/var/www/site1.com)的所属用户为www-data(Apache2默认用户),避免权限问题:sudo chown -R www-data:www-data /var/www/site1.com
sudo chmod -R 755 /var/www/site1.com
ufw),需允许HTTP(80端口)和HTTPS(443端口)流量:sudo ufw allow 'Apache Full'
site2.com)。