在阿里云服务器上部署两套 Spring Boot 项目是完全可行的。以下是详细的部署步骤和建议,帮助你顺利实现。
✅ 前提条件
- 已有一台阿里云 ECS 实例(Linux 系统,如 CentOS、Ubuntu)
- Java 环境已安装(JDK 8 或以上)
- Maven/Gradle 已安装(用于打包)
- Spring Boot 项目已打包为 JAR 文件
🛠️ 部署方案一:两个独立 JAR 应用(推荐)
步骤 1:准备两个 Spring Boot 项目
确保两个项目分别打包成独立的 .jar 文件,例如:
project-a.jar(使用端口 8080)project-b.jar(使用端口 8081)
⚠️ 注意:两个项目不能使用相同的端口,否则会冲突。
修改 application.yml 或 application.properties 设置不同端口:
# project-a 的配置
server:
port: 8080
# project-b 的配置
server:
port: 8081
步骤 2:上传 JAR 到服务器
使用 scp 或 FTP 工具将两个 JAR 文件上传到服务器,例如:
scp project-a.jar root@your-server-ip:/root/springboot/
scp project-b.jar root@your-server-ip:/root/springboot/
或通过 SFTP 工具(如 FileZilla)上传。
步骤 3:创建启动脚本(可选但推荐)
在服务器上为每个项目创建启动脚本,便于管理。
示例:start-a.sh
#!/bin/bash
cd /root/springboot
nohup java -jar project-a.jar > a.log 2>&1 &
echo "Project A started on port 8080"
示例:start-b.sh
#!/bin/bash
cd /root/springboot
nohup java -jar project-b.jar > b.log 2>&1 &
echo "Project B started on port 8081"
赋予执行权限:
chmod +x start-a.sh start-b.sh
运行脚本:
./start-a.sh
./start-b.sh
步骤 4:验证服务是否启动
查看进程:
ps aux | grep java
访问接口测试:
- http://your-server-ip:8080/health
- http://your-server-ip:8081/health
步骤 5:配置安全组(阿里云控制台)
登录 阿里云控制台:
- 找到你的 ECS 实例
- 进入「安全组」配置
- 添加规则,放行端口:
- 8080(TCP)
- 8081(TCP)
也可以考虑用 Nginx 反向X_X统一使用 80 端口。
🔄 方案二:使用 Nginx 反向X_X(更专业)
如果你希望两个项目都通过域名或 80/443 端口访问,可以使用 Nginx 做反向X_X。
安装 Nginx
# Ubuntu
sudo apt update && sudo apt install nginx -y
# CentOS
sudo yum install nginx -y
配置 Nginx
编辑配置文件:
sudo vim /etc/nginx/conf.d/springboot.conf
内容如下:
server {
listen 80;
server_name project-a.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name project-b.example.com;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重启 Nginx:
sudo systemctl restart nginx
然后你可以通过域名访问:
http://project-a.example.comhttp://project-b.example.com
💡 提示:记得把域名解析到你的服务器公网 IP。
🔐 补充建议
-
使用 systemd 管理服务(生产推荐)
创建系统服务,让 Spring Boot 应用随系统启动。
示例:
/etc/systemd/system/project-a.service[Unit] Description=Project A After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/java -jar /root/springboot/project-a.jar Restart=always [Install] WantedBy=multi-user.target启用服务:
systemctl enable project-a.service systemctl start project-a.service -
日志管理
使用
logback-spring.xml控制日志输出路径,避免日志混乱。 -
JVM 参数优化
启动时加上内存参数:
java -Xms512m -Xmx1024m -jar project-a.jar
✅ 总结
| 方式 | 特点 |
|---|---|
| 直接运行 JAR | 简单快速,适合测试 |
| Nginx 反向X_X | 支持域名、HTTPS、负载均衡 |
| systemd 服务管理 | 生产环境推荐,自动重启 |
如果你提供更多信息(如服务器配置、是否需要 HTTPS、是否已有域名),我可以进一步帮你定制部署方案。
需要我生成完整的部署脚本或 Nginx 配置模板吗?
CLOUD技术博