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

在阿里云服务器上部署多个 Web 项目是完全可行的,以下是详细的部署方案和步骤,适用于常见的 Linux 服务器(如 CentOS、Ubuntu)和主流 Web 服务架构(如 Nginx + Tomcat/Node.js/Python 等)。


一、部署思路

要在一台阿里云 ECS 服务器上运行多个 Web 项目,主要有以下几种方式:

方式 1:使用 Nginx 反向X_X(推荐)

  • 所有项目监听不同端口
  • Nginx 根据域名或路径进行反向X_X
  • 实现多域名或多项目共存

方式 2:使用不同端口直接访问

  • 每个项目绑定不同端口(如 3000、8080、5000)
  • 用户通过 ip:port 访问
  • 适合内部测试,不适合生产环境

方式 3:使用 Docker 容器隔离

  • 每个项目运行在独立容器中
  • 通过 Docker + Nginx 统一管理
  • 更灵活、易于维护

二、推荐方案:Nginx + 多项目反向X_X

1. 环境准备

  • 阿里云 ECS 实例(Linux 系统,如 Ubuntu 20.04 / CentOS 7)
  • 安装 Nginx
  • 安装项目运行环境(Node.js、Java/Tomcat、Python 等)
# Ubuntu 安装 Nginx
sudo apt update
sudo apt install nginx -y

# CentOS 安装 Nginx
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

2. 部署多个 Web 项目(示例)

假设部署以下项目:

项目 技术栈 监听端口 域名
项目 A Node.js 3000 www.site-a.com
项目 B Spring Boot 8080 www.site-b.com
项目 C Python Flask 5000 api.site-c.com

步骤 1:启动各个项目(后台运行)

# Node.js 项目
cd /var/www/site-a
nohup node app.js > app.log 2>&1 &

# Spring Boot 项目
cd /var/www/site-b
nohup java -jar site-b.jar > site-b.log 2>&1 &

# Flask 项目
cd /var/www/site-c
nohup python app.py > flask.log 2>&1 &

建议使用 PM2(Node.js)、Supervisor(Python)或 systemd 管理进程。

步骤 2:配置 Nginx 虚拟主机

编辑 Nginx 配置文件:

sudo nano /etc/nginx/sites-available/site-a

site-a 配置:

server {
    listen 80;
    server_name www.site-a.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;
    }
}

site-b 配置:

sudo nano /etc/nginx/sites-available/site-b
server {
    listen 80;
    server_name www.site-b.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

site-c 配置:

server {
    listen 80;
    server_name api.site-c.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;
    }
}

步骤 3:启用站点

sudo ln -s /etc/nginx/sites-available/site-a /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site-b /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site-c /etc/nginx/sites-enabled/

# 删除默认站点(可选)
sudo rm /etc/nginx/sites-enabled/default

步骤 4:测试并重启 Nginx

sudo nginx -t           # 测试配置
sudo systemctl reload nginx

步骤 5:域名解析

在阿里云 云解析 DNS 控制台:

  • www.site-a.com 解析到 ECS 的公网 IP
  • 同理配置其他域名

三、HTTPS 配置(可选)

使用 Let’s Encrypt 免费证书:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d www.site-a.com -d www.site-b.com

Certbot 会自动修改 Nginx 配置启用 HTTPS。


四、其他注意事项

  1. 安全组配置

    • 在阿里云控制台,确保安全组放行:
      • 80(HTTP)
      • 443(HTTPS)
      • SSH(22)
  2. 防火墙(如有)

    sudo ufw allow 'Nginx Full'
  3. 项目目录建议

    /var/www/site-a/
    /var/www/site-b/
    /var/www/site-c/
  4. 使用 systemd 管理项目(更稳定)
    为每个项目创建 .service 文件,实现开机自启和日志管理。


五、进阶方案:Docker 部署(推荐用于复杂项目)

使用 docker-compose.yml 管理多个服务:

version: '3'
services:
  site-a:
    image: node:16
    working_dir: /app
    volumes:
      - ./site-a:/app
    command: npm start
    expose:
      - "3000"

  site-b:
    image: openjdk:11
    volumes:
      - ./site-b:/app
    command: java -jar app.jar
    expose:
      - "8080"

  nginx:
    image: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./certs:/etc/nginx/certs
    depends_on:
      - site-a
      - site-b

总结

推荐做法:

  • 使用 Nginx 反向X_X + 多域名
  • 每个项目运行在不同端口
  • 用域名访问,用户无感知
  • 生产环境务必配置 HTTPS

这样可以在一台阿里云服务器上安全、高效地部署多个 Web 项目。

如果你提供具体的技术栈(如 Vue + Spring Boot + Django),我可以给出更详细的部署配置。

未经允许不得转载:云计算导航 » 阿里云服务器部署多个web项目?