在阿里云服务器上部署两套 Spring Boot 项目是完全可行的。以下是详细的部署步骤和建议,帮助你顺利完成。
✅ 前提条件
- 一台阿里云 ECS 实例(Linux 系统,如 CentOS、Ubuntu)
- 已安装 Java 环境(JDK 8 或以上)
- 已打包好两个 Spring Boot 的 JAR 文件
- (可选)已配置域名和 Nginx 反向X_X
🛠️ 部署方案一:使用不同端口直接运行(最简单)
Spring Boot 内嵌 Tomcat,可以直接通过 java -jar
启动。
步骤:
1. 上传 JAR 包
将两个 Spring Boot 项目的 JAR 文件上传到服务器,例如:
scp project1.jar root@your-server-ip:/opt/app/
scp project2.jar root@your-server-ip:/opt/app/
2. 设置不同的启动端口
确保两个项目使用不同端口,避免冲突。
-
方法一:修改
application.yml
# 项目1 server: port: 8081 # 项目2 server: port: 8082
-
方法二:启动时指定端口
java -jar project1.jar --server.port=8081 java -jar project2.jar --server.port=8082
3. 启动项目(后台运行)
# 启动项目1
nohup java -jar /opt/app/project1.jar --server.port=8081 > /opt/app/logs/project1.log 2>&1 &
# 启动项目2
nohup java -jar /opt/app/project2.jar --server.port=8082 > /opt/app/logs/project2.log 2>&1 &
日志会输出到对应文件,便于排查问题。
4. 检查是否运行成功
ps aux | grep java
netstat -tuln | grep 8081
netstat -tuln | grep 8082
🌐 方案二:使用 Nginx 反向X_X(推荐用于生产环境)
如果你希望通过域名访问,比如:
api1.yourdomain.com
→ 项目1(8081)api2.yourdomain.com
→ 项目2(8082)
步骤:
1. 安装 Nginx
# Ubuntu
sudo apt update && sudo apt install nginx -y
# CentOS
sudo yum install nginx -y
启动并设置开机自启:
systemctl start nginx
systemctl enable nginx
2. 配置 Nginx 虚拟主机
编辑配置文件:
vim /etc/nginx/conf.d/project1.conf
内容如下:
server {
listen 80;
server_name api1.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
同样创建 project2.conf
:
server {
listen 80;
server_name api2.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8082;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
3. 重启 Nginx
nginx -t # 测试配置
systemctl reload nginx
4. 域名解析
在阿里云 DNS 控制台,将 api1.yourdomain.com
和 api2.yourdomain.com
解析到你的 ECS 公网 IP。
🔁 进阶:使用 systemd 管理服务(更稳定)
为每个项目创建 systemd 服务,便于管理。
示例:创建 project1.service
sudo vim /etc/systemd/system/project1.service
内容:
[Unit]
Description=Project1 Spring Boot App
After=syslog.target
[Service]
User=root
ExecStart=/usr/bin/java -jar /opt/app/project1.jar --server.port=8081
Restart=always
StandardOutput=file:/var/log/project1.log
StandardError=file:/var/log/project1-error.log
[Install]
WantedBy=multi-user.target
同理创建 project2.service
。
启用服务:
systemctl daemon-reexec
systemctl enable project1.service
systemctl enable project2.service
systemctl start project1
systemctl start project2
🔒 安全建议
-
防火墙开放端口
# 如果使用 firewalld firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload
不需要开放 8081/8082,因为 Nginx 反向X_X后只暴露 80/443。
-
开启 HTTPS(Let’s Encrypt)
使用certbot
为 Nginx 添加 SSL 证书。 -
限制 SSH 访问
修改 SSH 端口,禁止 root 登录等。
✅ 总结
方法 | 优点 | 适用场景 |
---|---|---|
直接运行 + 不同端口 | 简单快速 | 开发测试 |
Nginx 反向X_X | 支持域名、HTTPS、负载均衡 | 生产环境 |
systemd 管理 | 自动重启、日志管理 | 推荐长期运行 |
如有需要,我可以提供:
- 完整的
systemd
配置模板 - Nginx + HTTPS 配置脚本
- 多项目 Docker 部署方案(更高级)
欢迎继续提问!