在一台 ECS(Elastic Compute Service)服务器 上部署两个 Spring Boot 服务是完全可行的,只要服务器的资源(CPU、内存、带宽等)能够支持运行多个应用。下面是一些关键步骤和注意事项:
✅ 一、准备工作
-
确保 ECS 实例满足最低配置要求
- 每个 Spring Boot 应用默认需要至少 512MB 内存,建议 1GB 起。
- 如果你有两个 Spring Boot 应用,建议 ECS 实例至少有 2GB 以上内存。
-
安装 Java 环境
java -version若未安装 JDK:
sudo apt update && sudo apt install openjdk-17-jdk -y -
准备好你的两个 Spring Boot 的 jar 包
- 假设分别为:
app1.jar和app2.jar
- 假设分别为:
✅ 二、修改端口避免冲突
Spring Boot 默认使用 8080 端口,两个应用不能同时使用相同端口。
方法一:修改 application.properties 或 application.yml
# app1 的 application.properties
server.port=8081
# app2 的 application.properties
server.port=8082
或者通过启动命令指定端口:
java -jar app1.jar --server.port=8081
java -jar app2.jar --server.port=8082
✅ 三、后台运行两个 Spring Boot 应用
你可以使用 nohup 或 screen 来让应用在后台运行:
使用 nohup 示例:
nohup java -jar app1.jar --server.port=8081 > app1.log 2>&1 &
nohup java -jar app2.jar --server.port=8082 > app2.log 2>&1 &
查看进程是否启动成功:
ps aux | grep java
✅ 四、设置开机自启动(可选)
你可以将启动命令写入 /etc/rc.local 或者使用 systemd 创建服务单元。
示例:systemd 配置文件(/etc/systemd/system/app1.service)
[Unit]
Description=Spring Boot App1
After=syslog.target
[Service]
User=root
ExecStart=/usr/bin/java -jar /path/to/app1.jar --server.port=8081
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
同理创建 app2.service,然后启用并启动服务:
sudo systemctl enable app1
sudo systemctl start app1
✅ 五、配置 Nginx 反向(可选)
如果你希望通过域名或统一入口访问这两个服务,可以配置 Nginx:
server {
listen 80;
location /app1/ {
proxy_pass http://localhost:8081/;
}
location /app2/ {
proxy_pass http://localhost:8082/;
}
}
✅ 六、检查防火墙开放端口
确保 ECS 安全组中允许访问你需要的端口(如 8081、8082),或者通过公网 IP + 端口直接访问。
✅ 总结
| 步骤 | 内容 |
|---|---|
| 1 | 准备好两个 Spring Boot jar 文件 |
| 2 | 修改各自端口避免冲突 |
| 3 | 启动服务并在后台运行 |
| 4 | 设置开机自启动(推荐) |
| 5 | 配置反向(可选) |
| 6 | 开放安全组端口 |
如果你有具体的 Spring Boot 项目结构、打包方式(Maven/Gradle)、或部署环境细节(如 Linux 发行版),可以告诉我,我可以提供更详细的指导。
CLOUD技术博