在云服务器ECS上部署多个Spring Boot应用是完全可行的,以下是详细的部署方法和注意事项:
✅ 一、前提条件
- 云服务器ECS已创建并可远程访问(如通过SSH)
- 已安装 Java环境(JDK 8/11/17)
- 可选:安装 Nginx(用于反向X_X或负载均衡)
- 每个Spring Boot应用打包为独立的
JAR文件
✅ 二、部署多个Spring Boot应用的方法
方法一:使用不同端口直接运行(最简单)
每个Spring Boot应用监听不同的端口。
步骤:
-
上传JAR包
scp app1.jar user@your-ecs-ip:/home/apps/ scp app2.jar user@your-ecs-ip:/home/apps/ -
修改
application.yml配置端口app1配置:server: port: 8081app2配置:server: port: 8082
-
启动应用(后台运行)
nohup java -jar app1.jar > app1.log 2>&1 & nohup java -jar app2.jar > app2.log 2>&1 & -
查看运行状态
ps -ef | grep java netstat -tuln | grep 808
方法二:使用系统服务(systemd)管理
更稳定,支持开机自启、自动重启。
示例:为 app1 创建 systemd 服务
-
创建服务文件:
sudo vim /etc/systemd/system/app1.service -
写入内容:
[Unit] Description=Spring Boot App1 After=network.target [Service] User=root ExecStart=/usr/bin/java -jar /home/apps/app1.jar SuccessExitStatus=143 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target -
启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable app1.service sudo systemctl start app1.service -
同样方式部署
app2,注意修改端口和服务名。
方法三:使用 Nginx 做反向X_X(推荐用于Web应用)
通过域名或路径区分多个应用。
示例:
api.example.com/user→ Spring Boot App1(端口8081)api.example.com/order→ Spring Boot App2(端口8082)
Nginx 配置:
server {
listen 80;
server_name api.example.com;
location /user/ {
proxy_pass http://localhost:8081/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /order/ {
proxy_pass http://localhost:8082/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
✅ 三、资源监控与优化
-
内存分配:避免所有应用占用过多内存
java -Xms512m -Xmx1024m -jar app.jar -
日志管理:定期清理日志或使用 logrotate
-
防火墙:开放所需端口(如8081, 8082)或仅开放80/443(配合Nginx)
✅ 四、安全建议
-
不要使用 root 用户运行 Java 应用,创建专用用户:
useradd -m springapp chown -R springapp:springapp /home/apps/ -
使用 HTTPS:Nginx + SSL证书(Let’s Encrypt)
-
关闭不必要的端口:使用安全组限制访问
✅ 五、高级方案(可选)
- 使用 Docker 容器化部署,每个应用一个容器,端口隔离更清晰
- 使用 Jenkins/GitLab CI 实现自动化部署
- 使用 Supervisor 管理多个Java进程(替代systemd)
✅ 总结
| 方法 | 优点 | 适用场景 |
|---|---|---|
| 不同端口 + nohup | 简单快速 | 测试/开发环境 |
| systemd服务 | 稳定、自启 | 生产环境 |
| Nginx反向X_X | 统一入口、路径路由 | Web API、多应用共存 |
| Docker容器 | 隔离性好、易管理 | 复杂项目、微服务 |
如你提供具体需求(如:是否对外提供服务、是否需要域名访问、应用数量等),我可以给出更定制化的部署方案。
云服务器