在阿里云ECS(弹性计算服务)上部署多个 Spring Boot 项目,是一个常见的需求。你可以通过多种方式实现,比如使用不同的端口、Nginx 反向、Docker 容器等。下面是几种常见方案的详细说明:
✅ 一、使用不同端口部署多个 Spring Boot 应用
1. 准备工作:
- 已有一台 ECS 实例(Linux 系统,如 CentOS、Ubuntu)
- Java 环境已安装(建议 JDK 8 或以上)
- 每个 Spring Boot 项目打包为
.jar文件
2. 启动多个 Spring Boot 应用
每个 Spring Boot 应用默认启动在 8080 端口,可以通过修改配置文件来指定不同的端口。
示例:
假设你有两个项目:
app1.jar使用端口8081app2.jar使用端口8082
application.properties 中修改:
# app1.properties
server.port=8081
# app2.properties
server.port=8082
然后分别运行:
java -jar app1.jar &
java -jar app2.jar &
注意:
&表示后台运行,也可以使用nohup配合日志输出。
3. 验证访问
- 访问 http://:8081
- 访问 http://:8082
✅ 二、使用 Nginx 做反向(推荐)
如果你希望统一使用 80/443 端口,并通过域名或路径区分多个应用,可以使用 Nginx。
1. 安装 Nginx
# Ubuntu
sudo apt update && sudo apt install nginx
# CentOS
sudo yum install nginx
2. 配置 Nginx(例如 /etc/nginx/conf.d/apps.conf)
server {
listen 80;
# 第一个应用
location /app1/ {
proxy_pass http://localhost:8081/;
}
# 第二个应用
location /app2/ {
proxy_pass http://localhost:8082/;
}
}
注意:Spring Boot 应用中也要配置对应的 context-path(如
/app1),否则路径不匹配。
3. 重启 Nginx
sudo systemctl restart nginx
4. 访问方式
- http:///app1/
- http:///app2/
✅ 三、使用 Docker 容器部署(推荐)
使用 Docker 可以更方便地隔离环境、管理多个应用。
1. 构建镜像(每个 Spring Boot 项目)
# Dockerfile
FROM openjdk:8-jdk-alpine
COPY *.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
构建并运行容器:
docker build -t springboot-app1 .
docker run -d -p 8081:8080 springboot-app1
docker build -t springboot-app2 .
docker run -d -p 8082:8080 springboot-app2
2. 配置 Nginx 反向(同上)
✅ 四、其他注意事项
1. 安全组设置
确保 ECS 的安全组开放了你需要使用的端口(如 80、8081、8082)。
2. 日志和进程管理
- 推荐使用
systemd或supervisord来管理 Java 进程。 - 或者使用 Docker Compose 统一管理多个容器。
3. 资源监控
注意 CPU 和内存使用情况,避免资源不足导致 OOM。
✅ 总结对比
| 方式 | 优点 | 缺点 |
|---|---|---|
| 不同端口直接运行 | 简单快速 | 管理不便,容易冲突 |
| Nginx 反向 | 统一入口,易于维护 | 需要配置 Nginx |
| Docker 容器化 | 环境隔离好,便于扩展 | 初期学习成本略高 |
如果你需要我帮你写具体的脚本、配置文件或者部署流程,请告诉我你的系统版本、Java 版本以及 Spring Boot 项目的结构,我可以提供定制化帮助。
CLOUD技术博