在一个阿里云服务器上部署多个 Spring Boot 项目是非常常见的需求。你可以根据不同的方式来实现,下面是一个详细的部署方案:
🧩 前提条件
- 阿里云服务器(ECS)已准备好,系统常见为 CentOS、Ubuntu 等。
- 已安装 Java 环境(JDK 8 或以上)。
- 每个 Spring Boot 应用都打包成可运行的 jar 包或 war 包。
✅ 方法一:使用不同端口运行多个 Spring Boot Jar 包
这是最简单直接的方式。
步骤如下:
-
上传多个 Spring Boot 项目 jar 文件
- 例如:
app1.jar app2.jar
- 例如:
-
配置每个项目的 application.properties 中的 server.port
app1使用 8080:server.port=8080app2使用 8081:server.port=8081
-
在服务器中分别启动 jar 文件
nohup java -jar app1.jar > app1.log 2>&1 & nohup java -jar app2.jar > app2.log 2>&1 & -
开放安全组端口
- 登录阿里云控制台,进入 ECS 实例的安全组设置:
- 添加入方向规则,允许
TCP:8080,TCP:8081等端口。
- 添加入方向规则,允许
- 登录阿里云控制台,进入 ECS 实例的安全组设置:
-
访问测试
- 通过公网 IP + 端口访问:
http://<你的IP>:8080 http://<你的IP>:8081
- 通过公网 IP + 端口访问:
✅ 方法二:使用 Nginx 反向X_X(推荐)
适用于需要统一入口(域名)、负载均衡、HTTPS、路径区分等场景。
步骤如下:
-
安装 Nginx
- CentOS:
sudo yum install nginx - Ubuntu:
sudo apt update && sudo apt install nginx
- CentOS:
-
配置 Nginx 反向X_X
编辑/etc/nginx/conf.d/multi.conf:server { listen 80; location /app1/ { proxy_pass http://localhost:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /app2/ { proxy_pass http://localhost:8081/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
重启 Nginx
sudo systemctl restart nginx -
访问方式
http://<你的IP>/app1/ http://<你的IP>/app2/
✅ 方法三:使用 Tomcat 部署多个 WAR 包(适合传统企业项目)
- 安装 Tomcat。
- 将多个 Spring Boot 项目打包为 WAR 文件。
- 放入
webapps/目录下,Tomcat 会自动解压并部署。 - 访问时通过上下文路径区分:
http://<IP>:8080/app1 http://<IP>:8080/app2
✅ 方法四:使用 Docker 容器化部署(高级推荐)
Docker 是目前最流行的方式来管理多个应用部署。
示例:docker-compose 启动多个 Spring Boot 应用
version: '3'
services:
app1:
image: yourname/app1
ports:
- "8080:8080"
container_name: springboot_app1
app2:
image: yourname/app2
ports:
- "8081:8081"
container_name: springboot_app2
构建并启动:
docker-compose up -d
📌 小贴士
- 日志管理:建议每个服务单独输出日志文件,便于排查问题。
- 进程守护:可以使用
systemd或supervisord来守护 Java 进程。 - 资源限制:注意服务器 CPU、内存是否足够支持多个应用并发运行。
- 防火墙设置:确保安全组和系统防火墙都开放了相应端口。
✅ 总结
| 方式 | 特点 | 适用场景 |
|---|---|---|
| 多端口直接运行 | 简单快速 | 测试环境、小项目 |
| Nginx 反向X_X | 统一入口,方便维护 | 生产环境、需域名访问 |
| Tomcat 多 WAR | 传统部署方式 | 旧系统迁移 |
| Docker 容器化 | 高度隔离、易于扩展 | 微服务架构、多项目部署 |
如果你告诉我你的具体需求(如是否需要域名访问、是否使用 HTTPS、Spring Boot 打包方式等),我可以给你定制一个更合适的部署方案。
CLOUD技术博