在阿里云 ECS(Elastic Compute Service)服务器上部署两个项目是完全可行的,具体方式取决于项目的类型(如 Web 应用、Node.js、Java、Python 等)、运行端口以及是否使用 Nginx/Apache 做反向。以下是几种常见的部署方式和步骤:
✅ 一、基本思路
方法一:不同端口部署
- 项目1运行在
3000端口,项目2运行在4000端口。 - 通过访问
http://公网IP:3000和http://公网IP:4000来区分访问。
方法二:使用 Nginx 反向(推荐)
- 使用域名 + 不同路径或子域名进行访问:
http://example.com/project1http://project2.example.com
- Nginx 负责将请求转发给对应服务的端口。
🧩 二、部署流程详解
步骤 1:准备环境
确保你的 ECS 上安装了以下基础软件(根据项目需要选择):
- Node.js / npm(如果是前端或 Node 项目)
- Java / Tomcat(如果是 Java 项目)
- Python / Gunicorn(如果是 Python 项目)
- Nginx(用于反向)
- PM2(Node 项目进程管理工具)
# 示例安装 nginx 和 node
sudo apt update
sudo apt install nginx -y
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
步骤 2:分别部署两个项目
项目1示例(Node.js 项目,监听 3000 端口)
cd /var/www/project1
npm install
node app.js # 或使用 pm2 启动
项目2示例(Node.js 项目,监听 4000 端口)
cd /var/www/project2
npm install
node server.js
步骤 3:开放安全组端口(阿里云控制台)
- 登录 阿里云控制台
- 找到你的 ECS 实例 -> 安全组 -> 配置规则
- 添加入方向规则,允许
3000和4000端口(TCP)
⚠️ 注意:生产环境下建议不要直接暴露应用端口,应使用 Nginx 做并关闭非 80/443 的端口访问。
步骤 4:使用 Nginx 反向(可选但推荐)
编辑 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/default
添加如下内容:
server {
listen 80;
location /project1/ {
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;
}
location /project2/ {
proxy_pass http://localhost:4000/;
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;
}
}
保存后重启 Nginx:
sudo systemctl restart nginx
这样就可以通过:
http://your-domain.com/project1http://your-domain.com/project2
来访问两个项目了。
🌐 三、多域名或多子域名方案(高级)
如果你有两个不同的域名或者一个主域名加多个子域名,也可以这样做:
server {
listen 80;
server_name project1.example.com;
location / {
proxy_pass http://localhost:3000;
...
}
}
server {
listen 80;
server_name project2.example.com;
location / {
proxy_pass http://localhost:4000;
...
}
}
然后配置 DNS 解析到你的 ECS 公网 IP。
📦 四、其他注意事项
| 事项 | 说明 |
|---|---|
| 进程守护 | 推荐使用 pm2(Node 项目)或 systemd 管理服务 |
| 日志查看 | 检查 /var/log/nginx/error.log 或项目日志文件 |
| 安全 | 关闭不必要的端口,启用 HTTPS(可以使用 Let’s Encrypt) |
| 域名绑定 | 需要在阿里云备案后才能绑定正式域名 |
🧪 示例总结
| 项目 | 类型 | 端口 | 访问方式 |
|---|---|---|---|
| 项目A | Node.js | 3000 | http://example.com/project1 |
| 项目B | Python Flask | 5000 | http://example.com/project2 |
如果你能提供更具体的项目信息(比如技术栈、是否已有域名等),我可以给出更详细的部署建议 👇
是否需要我帮你写一份完整的部署脚本?
CLOUD技术博