是的,同一台服务器可以部署多个 Spring Boot 项目,这是非常常见且推荐的做法。只要合理配置资源和端口,就可以在同一台服务器上运行多个独立的 Spring Boot 应用。
✅ 实现方式与注意事项:
1. 使用不同的端口
Spring Boot 默认使用 8080 端口,多个项目必须使用不同端口以避免冲突。
在每个项目的 application.yml 或 application.properties 中设置不同的 server.port:
# 项目A 配置
server:
port: 8080
# 项目B 配置
server:
port: 8081
启动后,可通过
http://localhost:8080和http://localhost:8081分别访问两个项目。
2. 独立运行(JAR 包方式)
每个 Spring Boot 项目打包成独立的 JAR 文件,通过 java -jar 命令启动:
java -jar project-a.jar &
java -jar project-b.jar &
- 使用
&放入后台运行。 - 可结合
nohup、screen或systemd服务管理长期运行。
3. 使用进程管理工具
建议使用以下工具来管理多个 Spring Boot 进程:
-
systemd(Linux 推荐)
# /etc/systemd/system/project-a.service [Unit] Description=Project A After=network.target [Service] ExecStart=/usr/bin/java -jar /opt/projects/project-a.jar User=springboot Restart=always [Install] WantedBy=multi-user.target -
Supervisor
-
Docker + Docker Compose(更现代的方式)
4. 资源分配与监控
- 检查服务器 CPU、内存、网络带宽是否足够支持多个应用。
- 可为每个 JVM 设置内存限制:
java -Xms512m -Xmx1g -jar project-a.jar - 监控各应用的 CPU、内存使用情况,避免 OOM。
5. 反向X_X(可选)
若希望统一入口,可使用 Nginx 做反向X_X:
server {
listen 80;
location /app1/ {
proxy_pass http://localhost:8080/;
}
location /app2/ {
proxy_pass http://localhost:8081/;
}
}
这样可以通过 http://your-domain/app1 和 /app2 访问不同项目。
6. 数据库与中间件共享问题
多个项目可能共用数据库、Redis、MQ 等,注意:
- 数据库连接池配置合理。
- 避免表名或缓存 key 冲突。
- 做好权限隔离。
✅ 总结
| 项目 | 是否可行 |
|---|---|
| 同一服务器部署多个 Spring Boot 项目 | ✅ 完全可行 |
| 使用不同端口 | ✅ 必须 |
| 独立 JAR 包运行 | ✅ 推荐 |
| 使用 Nginx 统一入口 | ✅ 更佳体验 |
| 资源充足 | ✅ 关键前提 |
✅ 最佳实践建议:
- 每个项目单独部署、独立维护。
- 使用容器化(如 Docker)更便于管理和扩展。
- 结合 CI/CD 自动部署。
如有需要,我可以提供 systemd 服务脚本或 docker-compose.yml 示例。
ECLOUD博客