在阿里云轻量应用服务器(Lightweight Application Server)上部署多个项目是完全可行的,尽管它资源相对有限,但通过合理配置,可以同时运行多个 Web 应用。以下是几种常见且实用的方法:
✅ 方法一:使用 Nginx 反向X_X + 多端口部署(推荐)
这是最常见、最灵活的方式,适用于多个 Web 项目(如 Node.js、Python Flask、Java Spring Boot 等)。
步骤:
-
为每个项目分配不同端口
- 项目 A:运行在
3000端口 - 项目 B:运行在
4000端口 - 项目 C:运行在
5000端口
- 项目 A:运行在
-
启动多个项目
# 项目 A cd /var/www/project-a npm start # 监听 3000 端口 # 项目 B cd /var/www/project-b python app.py # 监听 4000 端口 -
安装并配置 Nginx
sudo apt update sudo apt install nginx -y -
配置 Nginx 虚拟主机(反向X_X)
创建配置文件:
sudo nano /etc/nginx/sites-available/project-a内容示例:
server { listen 80; server_name a.yourdomain.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; } }同样创建
project-b:sudo nano /etc/nginx/sites-available/project-bserver { listen 80; server_name b.yourdomain.com; location / { proxy_pass http://127.0.0.1:4000; 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/project-a /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/project-b /etc/nginx/sites-enabled/ # 删除默认站点(可选) sudo rm /etc/nginx/sites-enabled/default -
测试并重启 Nginx
sudo nginx -t sudo systemctl restart nginx -
域名解析
- 将
a.yourdomain.com解析到服务器公网 IP - 将
b.yourdomain.com解析到同一 IP
- 将
-
(可选)配置 HTTPS(使用 Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d a.yourdomain.com
✅ 方法二:使用 Docker 部署(更清晰隔离)
如果你熟悉 Docker,可以为每个项目创建独立容器,通过 Nginx 或 Traefik 统一X_X。
示例:
# docker-compose.yml
version: '3'
services:
project-a:
image: your-node-app
ports:
- "3000:3000"
restart: unless-stopped
project-b:
image: your-flask-app
ports:
- "4000:4000"
restart: unless-stopped
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- project-a
- project-b
restart: unless-stopped
然后配置 Nginx 反向X_X到 project-a:3000 和 project-b:4000。
✅ 方法三:多站点静态文件(纯前端项目)
如果你部署的是多个前端项目(如 Vue、React 打包后的静态文件),可以使用 Nginx 的 location 或 server 块来区分路径或子域名。
示例:通过路径区分
server {
listen 80;
server_name yourdomain.com;
location /app1/ {
alias /var/www/app1/;
try_files $uri $uri/ /app1/index.html;
}
location /app2/ {
alias /var/www/app2/;
try_files $uri $uri/ /app2/index.html;
}
}
访问:
yourdomain.com/app1/→ 项目1yourdomain.com/app2/→ 项目2
⚠️ 注意事项
-
资源限制
轻量服务器配置较低(如 2核2G),不建议运行过多高负载项目,注意内存和 CPU 使用。 -
进程守护
使用pm2(Node.js)、supervisor(Python)、systemd等工具守护进程,防止崩溃。npm install -g pm2 pm2 start app.js --name "project-a" pm2 startup pm2 save -
防火墙
轻量服务器默认只开放 80、443、22 等端口,如需使用其他端口(如 3000),需在阿里云控制台【防火墙】中添加规则。
✅ 总结
| 方法 | 适用场景 | 推荐度 |
|---|---|---|
| Nginx 反向X_X + 多端口 | 多个 Web 项目,子域名访问 | ⭐⭐⭐⭐⭐ |
| Docker 部署 | 项目多、依赖复杂、希望隔离 | ⭐⭐⭐⭐☆ |
| 静态文件路径区分 | 多个前端项目共用域名 | ⭐⭐⭐⭐ |
如果你提供具体项目类型(如 Node.js、Python、Java、Vue 等),我可以给出更详细的部署脚本和配置示例。
CDNK博客