在阿里云服务器上部署多个 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。
四、其他注意事项
-
安全组配置
- 在阿里云控制台,确保安全组放行:
- 80(HTTP)
- 443(HTTPS)
- SSH(22)
- 在阿里云控制台,确保安全组放行:
-
防火墙(如有)
sudo ufw allow 'Nginx Full' -
项目目录建议
/var/www/site-a/ /var/www/site-b/ /var/www/site-c/ -
使用 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),我可以给出更详细的部署配置。
云计算导航