在云服务器上部署多个项目是常见需求,适用于企业、开发者等场景。下面我将从部署方式、目录结构、端口管理、反向X_X配置、安全性等方面详细说明如何在一台云服务器(如阿里云、腾讯云、AWS 等)上部署多个项目。
一、常见的部署方式
1. 多个项目的类型
- Web 应用:Node.js、Java Spring Boot、Django、Flask、PHP 等
- 静态网站:HTML/CSS/JS 项目(React/Vue/Angular)
- 微服务架构:多个独立服务(每个监听不同端口)
二、部署方案推荐
方案一:使用 Nginx/Apache 做反向X_X(推荐)
优点:
- 可以通过域名区分项目
- 安全性高
- 易于扩展和维护
步骤:
1. 安装 Nginx
sudo apt update
sudo apt install nginx
2. 每个项目运行在不同端口
比如:
- 项目A:
localhost:3000 - 项目B:
localhost:8000 - 项目C:
localhost:5000
3. 配置 Nginx 虚拟主机
假设你有两个域名或子域名:
projecta.example.com→ 项目 Aprojectb.example.com→ 项目 B
创建两个配置文件:
sudo nano /etc/nginx/sites-available/projecta.conf
内容如下:
server {
listen 80;
server_name projecta.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
同样地配置 projectb.conf:
server {
listen 80;
server_name projectb.example.com;
location / {
proxy_pass http://localhost:8000;
...
}
}
4. 启用站点并重启 Nginx
sudo ln -s /etc/nginx/sites-available/projecta.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/projectb.conf /etc/nginx/sites-enabled/
sudo nginx -t # 检查语法
sudo systemctl restart nginx
方案二:使用 Docker + Docker Compose
如果你有多个项目,使用 Docker 是一种更现代、灵活的方式。
优点:
- 隔离性强
- 部署快速
- 易于版本控制
示例 docker-compose.yml 文件:
version: '3'
services:
webapp1:
image: your-webapp1
ports:
- "3000:3000"
webapp2:
image: your-webapp2
ports:
- "8000:8000"
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- webapp1
- webapp2
然后在 Nginx 中做反代即可。
三、其他注意事项
1. 端口开放
确保你在云平台的安全组中放行了以下端口:
- HTTP: 80
- HTTPS: 443
- SSH: 22(默认)
- 其他自定义端口(如 3000、8000)
2. 使用 Let’s Encrypt 配置 HTTPS
可以为每个域名配置 SSL:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
3. 日志与监控
- 每个项目单独记录日志
- 使用 PM2、systemd 或 Docker logs 查看运行状态
- 可接入 Prometheus + Grafana 监控系统资源
四、目录结构建议(非容器化部署)
/var/www/
├── project-a/
│ ├── app.js
│ └── package.json
├── project-b/
│ ├── main.py
│ └── requirements.txt
└── logs/
五、总结
| 方法 | 适用场景 | 推荐程度 |
|---|---|---|
| Nginx 反代 | 多 Web 项目共存 | ⭐⭐⭐⭐⭐ |
| Docker Compose | 微服务、多环境隔离 | ⭐⭐⭐⭐☆ |
| 多用户+多目录 | 多人协作开发 | ⭐⭐⭐ |
如果你告诉我你的具体技术栈(比如是 Node.js、Python 还是 Java),我可以给出更具体的部署脚本和命令。需要的话请补充信息 😊
CLOUD技术博