在ECS上部署多个Spring Boot项目
在阿里云ECS上部署多个Spring Boot项目可以通过以下几种方式实现:
1. 使用不同端口部署
这是最简单的方法,为每个Spring Boot应用分配不同的端口:
-
修改每个项目的
application.properties或application.yml文件:# 项目1 server.port=8081 # 项目2 server.port=8082 -
分别打包并运行:
nohup java -jar project1.jar & nohup java -jar project2.jar & -
在ECS安全组中开放对应的端口
2. 使用Nginx反向X_X
更推荐的方式是使用Nginx作为反向X_X:
-
安装Nginx:
sudo apt-get update sudo apt-get install nginx -
配置Nginx(
/etc/nginx/conf.d/multiple-springboot.conf):server { listen 80; server_name project1.yourdomain.com; location / { proxy_pass http://127.0.0.1:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 80; server_name project2.yourdomain.com; location / { proxy_pass http://127.0.0.1:8082; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
重启Nginx:
sudo systemctl restart nginx
3. 使用Docker容器化部署
更现代化的部署方式:
-
为每个项目创建Dockerfile
-
使用docker-compose管理多个容器:
version: '3' services: project1: build: ./project1 ports: - "8081:8080" project2: build: ./project2 ports: - "8082:8080" -
启动服务:
docker-compose up -d
4. 使用Supervisor管理进程
确保应用在崩溃后自动重启:
-
安装Supervisor:
sudo apt-get install supervisor -
配置(
/etc/supervisor/conf.d/project1.conf):[program:project1] command=java -jar /path/to/project1.jar directory=/path/to autostart=true autorestart=true stderr_logfile=/var/log/project1.err.log stdout_logfile=/var/log/project1.out.log -
重载配置:
sudo supervisorctl reread sudo supervisorctl update
注意事项
- 确保每个项目有足够的内存资源
- 监控系统资源使用情况
- 考虑使用日志集中管理(如ELK)
- 为生产环境配置适当的JVM参数
- 考虑使用CI/CD流水线自动化部署过程
选择哪种方式取决于您的具体需求、项目规模和团队熟悉的技术栈。
云服务器