在轻量云服务器上部署多个网站,主要有以下几种方案,我会从简单到复杂进行介绍:
一、方案选择
1. 基于端口的部署(最简单)
- 不同网站使用不同端口访问
- 如:网站1用80端口,网站2用8080端口
- 适合测试环境或内部使用
2. 基于子目录的部署
- 所有网站共享同一个域名,通过路径区分
- 如:example.com/site1、example.com/site2
- 适合相关项目
3. 基于虚拟主机的部署(最常用)
- 不同域名访问不同网站
- 如:www.site1.com、www.site2.com
- 适合正式生产环境
4. 使用Docker容器
- 每个网站运行在独立容器中
- 便于管理和隔离
二、基于虚拟主机的详细部署(Nginx为例)
步骤1:安装必要软件
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装Nginx
sudo apt install nginx -y
# 安装PHP(如果需要)
sudo apt install php-fpm php-mysql -y
步骤2:创建网站目录结构
# 创建第一个网站目录
sudo mkdir -p /var/www/site1/html
sudo chown -R $USER:$USER /var/www/site1/html
# 创建第二个网站目录
sudo mkdir -p /var/www/site2/html
sudo chown -R $USER:$USER /var/www/site2/html
步骤3:创建测试页面
# 网站1首页
echo "<h1>Welcome to Site 1</h1>" > /var/www/site1/html/index.html
# 网站2首页
echo "<h1>Welcome to Site 2</h1>" > /var/www/site2/html/index.html
步骤4:配置Nginx虚拟主机
# 创建第一个网站配置文件
sudo nano /etc/nginx/sites-available/site1.conf
site1.conf内容:
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
# PHP配置(如果需要)
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
}
site2.conf内容类似,修改server_name和root路径
步骤5:启用网站配置
# 创建符号链接
sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx
三、Apache方案(备选)
安装Apache
sudo apt install apache2 -y
配置虚拟主机
# 创建配置文件
sudo nano /etc/apache2/sites-available/site1.conf
site1.conf内容:
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1/html
<Directory /var/www/site1/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
启用站点
sudo a2ensite site1.conf
sudo a2ensite site2.conf
sudo systemctl reload apache2
四、使用Docker部署(推荐)
1. 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
2. 使用Docker Compose部署多个网站
# docker-compose.yml
version: '3'
services:
site1:
image: nginx:alpine
container_name: site1
ports:
- "8080:80"
volumes:
- ./site1/html:/usr/share/nginx/html
- ./site1/nginx.conf:/etc/nginx/conf.d/default.conf
site2:
image: nginx:alpine
container_name: site2
ports:
- "8081:80"
volumes:
- ./site2/html:/usr/share/nginx/html
- ./site2/nginx.conf:/etc/nginx/conf.d/default.conf
# 反向XX(统一入口)
nginx-proxy:
image: nginx:alpine
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./proxy/nginx.conf:/etc/nginx/nginx.conf
五、域名解析配置
在域名服务商处添加A记录:
site1.com -> 你的服务器IP
site2.com -> 你的服务器IP
www.site1.com -> 你的服务器IP
www.site2.com -> 你的服务器IP
六、安全建议
-
配置防火墙
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable -
安装SSL证书(Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d site1.com -d www.site1.com -
定期备份
# 备份网站数据 tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/
七、性能优化建议
- 启用缓存
- 使用CDN提速静态资源
- 配置数据库优化
- 启用Gzip压缩
- 设置合理的PHP-FPM配置
八、监控和维护
- 查看网站日志
# Nginx访问日志 tail -f /var/log/nginx/access.log
错误日志
tail -f /var/log/nginx/error.log
2. **监控服务器状态**
```bash
# 安装监控工具
sudo apt install htop
htop
选择建议
- 初学者:从基于端口的部署开始
- 正式项目:使用虚拟主机+域名
- 需要隔离环境:使用Docker
- 快速部署:考虑使用宝塔面板等管理工具
根据你的具体需求选择合适的方案,如果需要更详细的某个方案配置,我可以进一步解释。
CLOUD技术笔记