在轻量服务器上搭建多个网站可以通过以下几种常见方法实现,每种方案适用于不同的场景和需求。以下是详细步骤和注意事项:
方案一:基于域名的虚拟主机(推荐)
适用场景:多个域名指向同一台服务器,通过域名区分不同网站。
优势:资源占用低,配置简单。
步骤:
-
准备域名与解析
- 为每个网站注册独立域名(如
site1.com、site2.com)。 - 在域名DNS解析中将所有域名A记录指向服务器IP。
- 为每个网站注册独立域名(如
-
配置Web服务器
-
Nginx示例:
# /etc/nginx/conf.d/site1.conf server { listen 80; server_name site1.com www.site1.com; root /var/www/site1; index index.html; } # /etc/nginx/conf.d/site2.conf server { listen 80; server_name site2.com www.site2.com; root /var/www/site2; index index.html; } - Apache示例:
# /etc/apache2/sites-available/site1.conf <VirtualHost *:80> ServerName site1.com ServerAlias www.site1.com DocumentRoot /var/www/site1 </VirtualHost>启用配置后重启服务:
sudo systemctl restart nginx/apache2。
-
-
创建网站目录
sudo mkdir -p /var/www/{site1,site2} echo "Hello Site1" > /var/www/site1/index.html echo "Hello Site2" > /var/www/site2/index.html -
HTTPS支持(可选)
使用Let’s Encrypt免费证书:sudo certbot --nginx -d site1.com -d www.site1.com sudo certbot --nginx -d site2.com -d www.site2.com
方案二:基于端口的虚拟主机
适用场景:无域名或临时测试环境。
缺点:需用户记住端口号,不便于推广。
配置示例(Nginx):
server {
listen 8080;
root /var/www/site1;
index index.html;
}
server {
listen 8081;
root /var/www/site2;
index index.html;
}
访问方式:http://服务器IP:8080 和 http://服务器IP:8081。
方案三:反向X_X(适用于动态应用)
适用场景:不同网站运行在不同端口的后端服务(如Node.js、Python应用)。
Nginx配置示例:
server {
server_name site1.com;
location / {
proxy_pass http://localhost:3000; # 转发到本地的Node.js应用
}
}
server {
server_name site2.com;
location / {
proxy_pass http://localhost:5000; # 转发到Python Flask应用
}
}
方案四:Docker容器化部署
适用场景:需要环境隔离或快速迁移的网站。
步骤:
- 安装Docker:
curl -fsSL https://get.docker.com | sudo sh -
为每个网站创建容器:
# 运行WordPress容器 docker run -d --name wordpress -p 8080:80 -v /path/to/wordpress:/var/www/html wordpress # 运行静态网站容器 docker run -d --name static-site -p 8081:80 -v /path/to/static:/usr/share/nginx/html nginx - 通过Nginx反向X_X到不同容器端口(参考方案三)。
通用注意事项
-
资源分配:
- 轻量服务器资源有限,建议优化网站静态资源(如图片压缩、CDN提速)。
- 使用
htop或docker stats监控CPU/内存占用。
-
防火墙设置:
sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw allow 22/tcp # SSH(谨慎开放) -
备份与日志:
- 定期备份网站数据和配置(如
tar -czvf backup.tar.gz /var/www)。 - 查看日志排查问题:
tail -f /var/log/nginx/error.log journalctl -u docker --no-pager
- 定期备份网站数据和配置(如
-
数据库隔离:
- 如果网站使用数据库,建议为每个网站创建独立的数据库用户和库名,避免冲突。
常见问题解决
- 403 Forbidden:检查目录权限(
chmod 755 /var/www)和文件所有者(chown -R www-data:www-data /var/www/site1)。 - 端口冲突:使用
netstat -tulnp查看占用端口的进程。 - SSL证书续期:设置定时任务自动续期(
crontab -e添加0 3 * * * certbot renew --quiet)。
根据实际需求选择合适方案,通常推荐基于域名的虚拟主机(方案一)作为首选。
云服务器