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

在一台 ECS(弹性计算服务) 上部署两个 Spring Boot 服务是完全可行的,只要你的 ECS 实例资源配置足够支持运行这两个服务。以下是详细的步骤和注意事项:


✅ 一、前提条件

  • 你有一台阿里云 ECS 实例(或其他厂商的服务器)
  • 安装了 Java 环境(JDK8/11/17 等 Spring Boot 支持的版本)
  • 可通过 SSH 登录到该服务器
  • 每个 Spring Boot 项目已经打包为可执行的 jar 文件

🛠 二、部署方式

方法一:使用不同端口启动两个 Spring Boot 应用(推荐)

步骤如下:

  1. 上传两个 Spring Boot 的 jar 包

    • 假设你的两个应用分别是:
      • app1.jar(默认端口 8080)
      • app2.jar(默认端口 8081)
  2. 修改配置文件或指定端口启动

    你可以通过以下两种方式让两个服务监听不同的端口:

    方式 A:修改 application.propertiesapplication.yml

    # application.properties
    server.port=8081

    或者

    # application.yml
    server:
     port: 8081

    方式 B:命令行参数指定端口启动(更灵活)

    java -jar app1.jar --server.port=8080
    java -jar app2.jar --server.port=8081
  3. 后台运行 Spring Boot 应用

    使用 nohupscreen 让应用在后台运行:

    nohup java -jar app1.jar --server.port=8080 > app1.log 2>&1 &
    nohup java -jar app2.jar --server.port=8081 > app2.log 2>&1 &
  4. 检查是否启动成功

    查看日志文件或使用 psnetstat 命令确认:

    ps aux | grep java
    netstat -tuln | grep 8080
    netstat -tuln | grep 8081
  5. 开放安全组端口

    在阿里云控制台中,确保你的 ECS 实例的安全组规则允许访问 80808081 端口。


🔄 三、其他高级方法(可选)

方法二:使用 Nginx 反向X_X(适合统一入口)

如果你希望通过域名访问两个服务,可以使用 Nginx 做反向X_X,比如:

# /etc/nginx/conf.d/app.conf

server {
    listen 80;
    server_name app1.example.com;

    location / {
        proxy_pass http://localhost:8080;
    }
}

server {
    listen 80;
    server_name app2.example.com;

    location / {
        proxy_pass http://localhost:8081;
    }
}

然后重启 Nginx:

systemctl restart nginx

方法三:使用 systemd 管理服务(生产环境推荐)

创建两个 systemd 单元文件来管理你的 Spring Boot 应用:

示例:/etc/systemd/system/app1.service

[Unit]
Description=App1 Spring Boot Application
After=syslog.target

[Service]
User=youruser
ExecStart=/usr/bin/java -jar /path/to/app1.jar --server.port=8080
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

类似地创建 app2.service 监听 8081。

然后启用并启动服务:

systemctl daemon-reload
systemctl enable app1
systemctl start app1

🔒 四、注意事项

注意事项 说明
内存限制 两个 Spring Boot 应用可能占用较多内存,注意 JVM 参数设置(如 -Xms, -Xmx
日志管理 建议分别输出日志文件,便于排查问题
端口冲突 确保两个服务监听不同的端口
性能监控 使用 top、htop、jstat 等工具监控系统资源
防火墙 安全组要放行对应端口

✅ 五、总结

你可以在同一台 ECS 上部署多个 Spring Boot 应用,关键点在于:

  • 给每个应用分配不同的端口
  • 合理管理内存和资源
  • 使用合适的后台运行机制(如 nohup、systemd)
  • 如需对外提供服务,配置好反向X_X和域名映射

如果你有具体的 Spring Boot 项目结构、部署脚本或想使用 Docker 来部署,也可以告诉我,我可以进一步帮你定制方案。

未经允许不得转载:ECLOUD博客 » 一台ecs上部署两个springboot服务?