一台ecs上部署两个springboot服务?

在一台 ECS(Elastic Compute Service)服务器 上部署两个 Spring Boot 服务是完全可行的,只要服务器的资源(CPU、内存、带宽等)能够支持运行多个应用。下面是一些关键步骤和注意事项:


✅ 一、准备工作

  1. 确保 ECS 实例满足最低配置要求

    • 每个 Spring Boot 应用默认需要至少 512MB 内存,建议 1GB 起。
    • 如果你有两个 Spring Boot 应用,建议 ECS 实例至少有 2GB 以上内存
  2. 安装 Java 环境

    java -version

    若未安装 JDK:

    sudo apt update && sudo apt install openjdk-17-jdk -y
  3. 准备好你的两个 Spring Boot 的 jar 包

    • 假设分别为:app1.jarapp2.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 应用

你可以使用 nohupscreen 来让应用在后台运行:

使用 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技术博 » 一台ecs上部署两个springboot服务?