在云服务器上部署两个项目,可以通过不同的方式实现,具体取决于你的需求(比如是否是Web项目、使用什么技术栈等)。下面是一个通用的指南,适用于常见的Web项目(如Node.js、Python Flask/Django、Java Spring Boot、PHP等)。
一、基本思路
要在一台云服务器上部署两个项目,主要有以下几种常见方式:
方式1:使用不同端口
- 每个项目监听不同的端口。
- 通过访问
IP:PORT或绑定域名 + 端口来区分。
方式2:使用 Nginx/Apache 反向 + 域名
- 使用不同的子域名或主域名,例如:
project1.example.comproject2.example.com
- Nginx 根据域名将请求转发到对应项目的端口。
方式3:使用 Docker 容器化部署
- 每个项目运行在一个独立的容器中。
- 容器之间隔离良好,便于管理。
二、详细步骤(以 Nginx + 不同端口为例)
步骤1:准备环境
确保你已经完成以下操作:
- 购买并配置好云服务器(如阿里云、腾讯云、AWS)
- 安装了操作系统(如 Ubuntu)
- 安装了必要的软件(如 Nginx、Node.js、Python、Docker 等)
步骤2:部署第一个项目(假设为 Node.js)
# 启动第一个项目,监听 3000 端口
cd /var/www/project1
npm install
node app.js
确保防火墙开放 3000 端口(或者用 Nginx 反向)
步骤3:部署第二个项目(假设为 Python Flask)
# 启动第二个项目,监听 5000 端口
cd /var/www/project2
pip install -r requirements.txt
python app.py
步骤4:安装和配置 Nginx
sudo apt update
sudo apt install nginx
配置第一个项目:
sudo nano /etc/nginx/sites-available/project1
写入如下内容:
server {
listen 80;
server_name project1.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
配置第二个项目:
sudo nano /etc/nginx/sites-available/project2
写入如下内容:
server {
listen 80;
server_name project2.example.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
创建软链接并重启 Nginx:
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 nginx -t # 测试配置文件
sudo systemctl restart nginx
三、域名解析设置
你需要在域名服务商后台设置 DNS 解析:
project1.example.com→ 你的云服务器公网 IPproject2.example.com→ 同一个 IP
这样用户就可以通过两个域名分别访问两个项目。
四、使用 Docker 部署(可选)
如果你使用 Docker,可以分别构建镜像并运行容器,指定不同的端口映射:
docker run -d -p 3000:3000 project1-image
docker run -d -p 5000:5000 project2-image
然后依然可以用 Nginx 做反向。
五、补充建议
| 场景 | 推荐方式 |
|---|---|
| 两个 Web 项目 | Nginx + 不同域名/端口 |
| 多个服务需要隔离 | Docker 容器化 |
| 快速测试 | 直接用不同端口访问 |
| Java/Spring Boot | 可使用 Tomcat/Jetty+Nginx |
| PHP 项目 | Apache/Nginx + FastCGI |
六、常见问题
Q1:怎么查看端口是否被占用?
netstat -tuln | grep 3000
lsof -i :3000
Q2:如何开机自启动项目?
- 使用
systemd创建服务 - 或者用
pm2(Node.js)、screen、nohup等工具
如果你告诉我你使用的语言/框架/云平台,我可以给出更具体的部署方案。欢迎继续提问!
CLOUD技术博