阿里云一个服务器部署多个springboot项目?

在阿里云的一台服务器上部署多个 Spring Boot 项目是完全可行的,主要通过配置不同的端口、使用反向(如 Nginx)等方式实现。下面是详细的部署方法和步骤:


✅ 一、准备工作

  1. 服务器环境

    • 阿里云 ECS 实例(Linux 推荐,如 CentOS、Ubuntu)
    • 安装 Java 环境(JDK 8 或以上)
    • 安装 Maven(可选,用于构建项目)
    • 安装 Nginx(可选,用于反向)
  2. Spring Boot 项目要求

    • 每个项目应独立运行在不同的端口上(如 8080、8081、8082 等)
    • 项目打包为 .jar 文件

✅ 二、部署多个 Spring Boot 项目的方式

方法一:使用不同端口直接访问

1. 修改每个项目的 application.properties 文件

# 第一个项目:application.properties
server.port=8080
# 第二个项目:application.properties
server.port=8081

2. 上传 .jar 文件到服务器

使用 FTP、SCP 或直接 git clone 到服务器上。

3. 启动项目

# 启动第一个项目
nohup java -jar project1.jar > project1.log 2>&1 &

# 启动第二个项目
nohup java -jar project2.jar > project2.log 2>&1 &

nohup 可以让项目在后台运行,关闭终端也不会停止。

4. 开放安全组端口

在阿里云控制台为每个项目开放对应的端口(如 8080、8081),允许外部访问。


方法二:使用 Nginx 做反向(推荐)

这种方式可以让你通过不同的域名或路径访问不同的 Spring Boot 项目,统一使用 80/443 端口。

1. 安装 Nginx

# Ubuntu
sudo apt update && sudo apt install nginx

# CentOS
sudo yum install nginx

2. 配置 Nginx(示例)

编辑配置文件(如 /etc/nginx/conf.d/multi.conf):

server {
    listen 80;
    server_name project1.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 80;
    server_name project2.example.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;
    }
}

3. 重启 Nginx

sudo systemctl restart nginx

4. 域名解析

project1.example.comproject2.example.com 解析到你的服务器公网 IP。


✅ 三、使用 systemd 管理服务(可选)

为了更稳定地管理多个 Spring Boot 应用,可以为每个项目创建 systemd 服务。

示例:创建 /etc/systemd/system/project1.service

[Unit]
Description=Project 1
After=syslog.target

[Service]
User=root
ExecStart=/usr/bin/java -jar /root/project1.jar
SuccessExitStatus=143
StandardOutput=file:/var/log/project1.log
StandardError=file:/var/log/project1.err

[Install]
WantedBy=multi-user.target

然后启动服务:

sudo systemctl daemon-reload
sudo systemctl start project1
sudo systemctl enable project1

✅ 四、使用 Docker 容器化部署(高级)

如果你熟悉 Docker,也可以使用 Docker Compose 同时运行多个 Spring Boot 项目,每个项目一个容器,互不干扰。


✅ 五、注意事项

项目 说明
端口冲突 每个项目必须使用不同的端口
日志管理 建议将日志输出到不同文件,便于排查问题
资源占用 多个项目运行时注意 CPU、内存限制
安全组 每个端口都需要在阿里云安全组中开放
域名绑定 使用 Nginx 可以绑定多个域名,提升访问体验

✅ 六、总结

方法 是否推荐 说明
不同端口直接访问 简单直接,适合测试环境
Nginx 反向 ✅✅✅ 推荐,适合生产环境,统一入口
Systemd 管理服务 ✅✅ 稳定性高,适合长期运行
Docker 容器化 ✅✅✅ 更高级,适合多项目管理和部署

如果你有具体的 Spring Boot 项目结构或部署需求,可以告诉我,我可以帮你定制更详细的部署方案。

未经允许不得转载:云计算HECS » 阿里云一个服务器部署多个springboot项目?