在阿里云服务器上部署两个项目是完全可行的,以下是详细的部署方案和步骤,适用于常见的 Linux 服务器(如 ECS 实例)。
✅ 一、部署方式选择
你可以在同一台阿里云 ECS 服务器上部署两个项目,常见方式有:
- 使用不同端口
- 使用 Nginx 反向 + 域名分流
- 使用 Docker 隔离运行
✅ 二、部署步骤(以 Nginx + 两个 Web 项目为例)
假设:
- 项目1:Node.js 应用(端口 3000)
- 项目2:Python Flask 应用(端口 5000)
- 服务器:阿里云 ECS(Ubuntu 20.04)
- 有两个域名:
project1.com和project2.com
🔧 步骤 1:安装基础环境
# 更新系统
sudo apt update
# 安装 Nginx
sudo apt install nginx -y
# 安装 Node.js(项目1)
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
# 安装 Python3 和 pip(项目2)
sudo apt install python3 python3-pip -y
📁 步骤 2:部署项目1(Node.js)
# 创建项目目录
mkdir /var/www/project1
cd /var/www/project1
# 示例项目(可替换为你的实际代码)
echo 'const http = require("http"); const server = http.createServer((req, res) => { res.end("Hello from Project 1"); }); server.listen(3000);' > server.js
# 使用 pm2 启动(推荐)
npm install -g pm2
pm2 start server.js --name "project1"
项目1运行在
http://localhost:3000
📁 步骤 3:部署项目2(Python Flask)
mkdir /var/www/project2
cd /var/www/project2
# 创建 app.py
cat <<EOF > app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello from Project 2"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
EOF
# 安装 Flask
pip3 install flask
# 后台运行(使用 nohup 或 gunicorn)
nohup python3 app.py > app.log 2>&1 &
项目2运行在
http://localhost:5000
⚙️ 步骤 4:配置 Nginx 反向
编辑 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/project1
内容:
server {
listen 80;
server_name project1.com www.project1.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
同理创建项目2配置:
sudo nano /etc/nginx/sites-available/project2
server {
listen 80;
server_name project2.com www.project2.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/project2 /etc/nginx/sites-enabled/
# 删除默认站点(可选)
sudo rm /etc/nginx/sites-enabled/default
# 测试配置
sudo nginx -t
# 重启 Nginx
sudo systemctl restart nginx
🌐 步骤 5:域名解析
登录阿里云控制台(https://dns.console.aliyun.com):
- 添加两个域名
project1.com和project2.com - 添加 A 记录,指向你的 ECS 公网 IP
✅ 完成!
现在访问:
http://project1.com→ 显示项目1http://project2.com→ 显示项目2
🔐 可选:启用 HTTPS(使用 Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d project1.com -d www.project1.com
sudo certbot --nginx -d project2.com -d www.project2.com
🐳 进阶建议:使用 Docker 部署
更推荐使用 Docker 隔离项目,避免依赖冲突:
# docker-compose.yml
version: '3'
services:
project1:
image: node:16
working_dir: /app
volumes:
- ./project1:/app
command: bash -c "npm install && node server.js"
expose:
- "3000"
project2:
image: python:3.9
working_dir: /app
volumes:
- ./project2:/app
command: python app.py
expose:
- "5000"
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./certs:/etc/nginx/certs
depends_on:
- project1
- project2
🛡️ 安全建议
- 开启阿里云 安全组,只放行 80、443、22 端口
- 使用 SSH 密钥登录,禁用密码登录
- 定期更新系统和软件
如需我根据你的具体技术栈(如 Spring Boot + Vue、Django + React 等)提供更详细的部署脚本,请告诉我两个项目的类型(前端/后端/语言/框架),我可以定制方案。
CLOUD技术博