奋斗
努力

云服务器ECS部署多个springBoot?

云计算

在云服务器ECS上部署多个Spring Boot应用是完全可行的,以下是详细的部署方法和注意事项:


✅ 一、前提条件

  1. 云服务器ECS已创建并可远程访问(如通过SSH)
  2. 已安装 Java环境(JDK 8/11/17)
  3. 可选:安装 Nginx(用于反向X_X或负载均衡)
  4. 每个Spring Boot应用打包为独立的 JAR 文件

✅ 二、部署多个Spring Boot应用的方法

方法一:使用不同端口直接运行(最简单)

每个Spring Boot应用监听不同的端口。

步骤:

  1. 上传JAR包

    scp app1.jar user@your-ecs-ip:/home/apps/
    scp app2.jar user@your-ecs-ip:/home/apps/
  2. 修改 application.yml 配置端口

    • app1 配置:
      server:
      port: 8081
    • app2 配置:
      server:
      port: 8082
  3. 启动应用(后台运行)

    nohup java -jar app1.jar > app1.log 2>&1 &
    nohup java -jar app2.jar > app2.log 2>&1 &
  4. 查看运行状态

    ps -ef | grep java
    netstat -tuln | grep 808

方法二:使用系统服务(systemd)管理

更稳定,支持开机自启、自动重启。

示例:为 app1 创建 systemd 服务

  1. 创建服务文件:

    sudo vim /etc/systemd/system/app1.service
  2. 写入内容:

    [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
  3. 启用并启动服务:

    sudo systemctl daemon-reload
    sudo systemctl enable app1.service
    sudo systemctl start app1.service
  4. 同样方式部署 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)


✅ 四、安全建议

  1. 不要使用 root 用户运行 Java 应用,创建专用用户:

    useradd -m springapp
    chown -R springapp:springapp /home/apps/
  2. 使用 HTTPS:Nginx + SSL证书(Let’s Encrypt)

  3. 关闭不必要的端口:使用安全组限制访问


✅ 五、高级方案(可选)

  • 使用 Docker 容器化部署,每个应用一个容器,端口隔离更清晰
  • 使用 Jenkins/GitLab CI 实现自动化部署
  • 使用 Supervisor 管理多个Java进程(替代systemd)

✅ 总结

方法 优点 适用场景
不同端口 + nohup 简单快速 测试/开发环境
systemd服务 稳定、自启 生产环境
Nginx反向X_X 统一入口、路径路由 Web API、多应用共存
Docker容器 隔离性好、易管理 复杂项目、微服务

如你提供具体需求(如:是否对外提供服务、是否需要域名访问、应用数量等),我可以给出更定制化的部署方案。

未经允许不得转载:云服务器 » 云服务器ECS部署多个springBoot?