在华为云服务器上部署两个项目有多种方式,以下是几种常见的解决方案:
1. 使用不同端口(最简单)
# 项目1运行在8080端口
npm start --port 8080
# 项目2运行在8081端口
npm start --port 8081
访问方式:
- 项目1:
http://服务器IP:8080 - 项目2:
http://服务器IP:8081
2. 使用Nginx反向(推荐)
配置Nginx虚拟主机
# /etc/nginx/conf.d/project1.conf
server {
listen 80;
server_name project1.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# /etc/nginx/conf.d/project2.conf
server {
listen 80;
server_name project2.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. 使用Docker容器化部署
# docker-compose.yml
version: '3'
services:
project1:
image: your-project1-image
ports:
- "8080:8080"
volumes:
- ./project1:/app
project2:
image: your-project2-image
ports:
- "8081:8081"
volumes:
- ./project2:/app
4. 使用PM2进程管理器
# 安装PM2
npm install -g pm2
# 分别启动两个项目
pm2 start app1.js --name "project1" -- --port 8080
pm2 start app2.js --name "project2" -- --port 8081
# 查看状态
pm2 list
5. 完整部署步骤示例
步骤1:准备项目目录
mkdir -p /var/www/project1 /var/www/project2
cd /var/www/project1
# 部署项目1代码
cd /var/www/project2
# 部署项目2代码
步骤2:启动两个项目
# 项目1
cd /var/www/project1
npm install
npm start --port 8080 &
# 项目2
cd /var/www/project2
npm install
npm start --port 8081 &
步骤3:配置Nginx(可选但推荐)
# 安装Nginx
yum install nginx -y # CentOS
# 或
apt-get install nginx # Ubuntu
# 重启Nginx
systemctl restart nginx
6. 华为云安全组配置
在华为云控制台:
- 开放80端口(HTTP)
- 如果直接访问项目端口,开放8080、8081等端口
- 或只开放80端口,通过Nginx反向
7. 域名绑定建议
- 购买两个域名或使用子域名
- DNS解析到服务器IP
- 通过域名区分不同项目
注意事项:
- 端口冲突:确保两个项目使用不同端口
- 资源监控:监控CPU、内存使用情况
- 日志管理:分别记录两个项目的日志
- 防火墙:配置华为云安全组规则
- 备份策略:定期备份两个项目的数据
选择哪种方式取决于你的具体需求:
- 简单测试:用不同端口
- 生产环境:推荐Nginx + 域名
- 复杂应用:使用Docker容器化
ECLOUD博客