阿里云服务器部署两个项目?

在阿里云服务器上部署两个项目是完全可行的,以下是详细的部署方案和步骤,适用于常见的 Linux 服务器(如 ECS 实例)。


✅ 一、部署方式选择

你可以在同一台阿里云 ECS 服务器上部署两个项目,常见方式有:

  1. 使用不同端口
  2. 使用 Nginx 反向 + 域名分流
  3. 使用 Docker 隔离运行

✅ 二、部署步骤(以 Nginx + 两个 Web 项目为例)

假设:

  • 项目1:Node.js 应用(端口 3000)
  • 项目2:Python Flask 应用(端口 5000)
  • 服务器:阿里云 ECS(Ubuntu 20.04)
  • 有两个域名:project1.comproject2.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):

  1. 添加两个域名 project1.comproject2.com
  2. 添加 A 记录,指向你的 ECS 公网 IP

✅ 完成!

现在访问:

  • http://project1.com → 显示项目1
  • http://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

🛡️ 安全建议

  1. 开启阿里云 安全组,只放行 80、443、22 端口
  2. 使用 SSH 密钥登录,禁用密码登录
  3. 定期更新系统和软件

如需我根据你的具体技术栈(如 Spring Boot + Vue、Django + React 等)提供更详细的部署脚本,请告诉我两个项目的类型(前端/后端/语言/框架),我可以定制方案。

未经允许不得转载:CLOUD技术博 » 阿里云服务器部署两个项目?