在Debian上配置虚拟主机需先确定Web服务器类型(Apache或Nginx),以下是详细步骤:
Apache是Debian默认Web服务器,配置虚拟主机需通过sites-available
和sites-enabled
目录管理配置文件。
sudo apt update
sudo apt install apache2
安装完成后,Apache会自动启动并启用开机自启。
虚拟主机需vhost_alias
模块(可选但推荐),若需URL重写则启用rewrite
模块:
sudo a2enmod vhost_alias rewrite
sudo systemctl restart apache2
在/etc/apache2/sites-available/
目录下新建配置文件(如example.com.conf
):
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 # 允许.htaccess覆盖配置
Require all granted # 允许所有用户访问
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log # 错误日志路径
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined # 访问日志格式
</VirtualHost>
使用a2ensite
命令启用配置文件:
sudo a2ensite example.com.conf
若需禁用默认站点(可选):
sudo a2dissite 000-default.conf
使配置生效:
sudo systemctl restart apache2
若在本地测试,编辑/etc/hosts
文件添加域名解析:
127.0.0.1 example.com www.example.com
正式环境需在域名注册商处将域名A记录指向服务器IP。
sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com # 设置所有者(Apache默认用户)
sudo chmod -R 755 /var/www/example.com # 设置权限
echo "Hello from example.com!" | sudo tee /var/www/example.com/index.html
使用Let’s Encrypt免费获取SSL证书:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
Certbot会自动配置HTTPS重定向,证书有效期为90天,会自动续期。
Nginx以高性能著称,配置虚拟主机需通过sites-available
和sites-enabled
目录管理。
sudo apt update
sudo apt install nginx
安装完成后,Nginx会自动启动。
在/etc/nginx/sites-available/
目录下新建配置文件(如example.com
):
sudo nano /etc/nginx/sites-available/example.com
添加以下内容(根据需求修改):
server {
listen 80; # 监听80端口(HTTP)
server_name example.com www.example.com; # 主域名及别名
root /var/www/example.com; # 网站根目录
index index.html index.htm; # 默认索引文件
location / {
try_files $uri $uri/ =404; # 尝试查找文件,未找到则返回404
}
error_page 404 /404.html; # 自定义404页面
location = /404.html {
root /var/www/example.com;
}
error_page 500 502 503 504 /50x.html; # 服务器错误页面
location = /50x.html {
root /usr/share/nginx/html;
}
}
创建符号链接到sites-enabled
目录:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
避免配置错误导致服务中断:
sudo nginx -t
若输出configuration file /etc/nginx/nginx.conf test is successful
则表示语法正确。
sudo systemctl reload nginx
同Apache步骤,将域名解析到服务器IP。
sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/index.html
使用Certbot获取免费SSL证书(需提前安装Certbot):
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot会自动修改Nginx配置,启用HTTPS并设置自动续期。
example.com.conf
),避免混淆。www-data
用户(Apache/Nginx默认用户),防止无法访问。ServerName
或ServerAlias
区分,确保域名解析正确。按照上述步骤操作后,即可在Debian上成功配置Apache或Nginx虚拟主机,托管多个网站。