在阿里云的一台服务器上部署多个 Spring Boot 项目是完全可行的,主要通过配置不同的端口、使用反向(如 Nginx)等方式实现。下面是详细的部署方法和步骤:
✅ 一、准备工作
-
服务器环境:
- 阿里云 ECS 实例(Linux 推荐,如 CentOS、Ubuntu)
- 安装 Java 环境(JDK 8 或以上)
- 安装 Maven(可选,用于构建项目)
- 安装 Nginx(可选,用于反向)
-
Spring Boot 项目要求:
- 每个项目应独立运行在不同的端口上(如 8080、8081、8082 等)
- 项目打包为
.jar文件
✅ 二、部署多个 Spring Boot 项目的方式
方法一:使用不同端口直接访问
1. 修改每个项目的 application.properties 文件
# 第一个项目:application.properties
server.port=8080
# 第二个项目:application.properties
server.port=8081
2. 上传 .jar 文件到服务器
使用 FTP、SCP 或直接 git clone 到服务器上。
3. 启动项目
# 启动第一个项目
nohup java -jar project1.jar > project1.log 2>&1 &
# 启动第二个项目
nohup java -jar project2.jar > project2.log 2>&1 &
✅
nohup可以让项目在后台运行,关闭终端也不会停止。
4. 开放安全组端口
在阿里云控制台为每个项目开放对应的端口(如 8080、8081),允许外部访问。
方法二:使用 Nginx 做反向(推荐)
这种方式可以让你通过不同的域名或路径访问不同的 Spring Boot 项目,统一使用 80/443 端口。
1. 安装 Nginx
# Ubuntu
sudo apt update && sudo apt install nginx
# CentOS
sudo yum install nginx
2. 配置 Nginx(示例)
编辑配置文件(如 /etc/nginx/conf.d/multi.conf):
server {
listen 80;
server_name project1.example.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;
}
}
server {
listen 80;
server_name project2.example.com;
location / {
proxy_pass http://127.0.0.1:8081;
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. 重启 Nginx
sudo systemctl restart nginx
4. 域名解析
将 project1.example.com 和 project2.example.com 解析到你的服务器公网 IP。
✅ 三、使用 systemd 管理服务(可选)
为了更稳定地管理多个 Spring Boot 应用,可以为每个项目创建 systemd 服务。
示例:创建 /etc/systemd/system/project1.service
[Unit]
Description=Project 1
After=syslog.target
[Service]
User=root
ExecStart=/usr/bin/java -jar /root/project1.jar
SuccessExitStatus=143
StandardOutput=file:/var/log/project1.log
StandardError=file:/var/log/project1.err
[Install]
WantedBy=multi-user.target
然后启动服务:
sudo systemctl daemon-reload
sudo systemctl start project1
sudo systemctl enable project1
✅ 四、使用 Docker 容器化部署(高级)
如果你熟悉 Docker,也可以使用 Docker Compose 同时运行多个 Spring Boot 项目,每个项目一个容器,互不干扰。
✅ 五、注意事项
| 项目 | 说明 |
|---|---|
| 端口冲突 | 每个项目必须使用不同的端口 |
| 日志管理 | 建议将日志输出到不同文件,便于排查问题 |
| 资源占用 | 多个项目运行时注意 CPU、内存限制 |
| 安全组 | 每个端口都需要在阿里云安全组中开放 |
| 域名绑定 | 使用 Nginx 可以绑定多个域名,提升访问体验 |
✅ 六、总结
| 方法 | 是否推荐 | 说明 |
|---|---|---|
| 不同端口直接访问 | ✅ | 简单直接,适合测试环境 |
| Nginx 反向 | ✅✅✅ | 推荐,适合生产环境,统一入口 |
| Systemd 管理服务 | ✅✅ | 稳定性高,适合长期运行 |
| Docker 容器化 | ✅✅✅ | 更高级,适合多项目管理和部署 |
如果你有具体的 Spring Boot 项目结构或部署需求,可以告诉我,我可以帮你定制更详细的部署方案。
云计算HECS