阿里云服务器部署2套springboot项目?

云计算

在阿里云服务器上部署两套 Spring Boot 项目是完全可行的。以下是详细的部署步骤和建议,帮助你顺利完成。


✅ 前提条件

  1. 一台阿里云 ECS 实例(Linux 系统,如 CentOS、Ubuntu)
  2. 已安装 Java 环境(JDK 8 或以上)
  3. 已打包好两个 Spring Boot 的 JAR 文件
  4. (可选)已配置域名和 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.comapi2.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

🔒 安全建议

  1. 防火墙开放端口

    # 如果使用 firewalld
    firewall-cmd --permanent --add-port=80/tcp
    firewall-cmd --reload

    不需要开放 8081/8082,因为 Nginx 反向X_X后只暴露 80/443。

  2. 开启 HTTPS(Let’s Encrypt)
    使用 certbot 为 Nginx 添加 SSL 证书。

  3. 限制 SSH 访问
    修改 SSH 端口,禁止 root 登录等。


✅ 总结

方法 优点 适用场景
直接运行 + 不同端口 简单快速 开发测试
Nginx 反向X_X 支持域名、HTTPS、负载均衡 生产环境
systemd 管理 自动重启、日志管理 推荐长期运行

如有需要,我可以提供:

  • 完整的 systemd 配置模板
  • Nginx + HTTPS 配置脚本
  • 多项目 Docker 部署方案(更高级)

欢迎继续提问!

未经允许不得转载:CLOUD云枢 » 阿里云服务器部署2套springboot项目?