阿里云CentOS服务器部署多个SpringBoot应用需要配置哪些环境?

在阿里云 CentOS 服务器上部署多个 Spring Boot 应用,需要配置以下核心环境和服务:


一、基础系统环境

1. 操作系统

  • CentOS 7/8(推荐 CentOS 7,因 CentOS 8 已停止维护)
  • 确保系统为最小化安装或标准安装均可

2. 防火墙与安全组

  • 阿里云安全组:开放必要端口(如 80、443、各应用端口)
  • 系统防火墙(firewalld):
    sudo systemctl enable firewalld
    sudo systemctl start firewalld
    sudo firewall-cmd --permanent --add-port=8080/tcp   # 示例应用端口
    sudo firewall-cmd --reload

3. 用户权限

  • 建议使用非 root 用户运行应用(如 appuser)
    sudo useradd -m appuser
    sudo passwd appuser

二、JDK 环境(Java Development Kit)

Spring Boot 基于 Java,需安装 JDK(推荐 JDK 8 或 JDK 11/17)

安装方式(任选其一):

方式1:使用 yum 安装 OpenJDK

sudo yum install -y java-1.8.0-openjdk-devel
# 或 JDK 11
sudo yum install -y java-11-openjdk-devel

方式2:手动安装 Oracle JDK

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
sudo tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/
export JAVA_HOME=/usr/local/jdk-17
export PATH=$JAVA_HOME/bin:$PATH

验证安装

java -version
javac -version

设置环境变量(永久生效)

编辑 /etc/profile 或 /etc/bashrc:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile

三、应用部署架构(多应用隔离)

每个 Spring Boot 应用应独立运行,建议采用以下方式之一:

方案1:直接使用 systemd 管理(推荐)

为每个应用创建独立的 service 文件,例如 /etc/systemd/system/app1.service:

[Unit]
Description=App1 Spring Boot Application
After=syslog.target network.target

[Service]
User=appuser
Group=appuser
ExecStart=/usr/bin/java -jar /opt/apps/app1/app1.jar
SuccessExitStatus=143
WorkingDirectory=/opt/apps/app1
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable app1
sudo systemctl start app1
sudo systemctl status app1

为每个应用复制修改上述文件(app2.service、app3.service 等),注意修改 Description、ExecStart、WorkingDirectory 和端口。

方案2:使用 Docker 容器化部署(更优雅)

安装 Docker:

sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker appuser

为每个应用编写 Dockerfile,然后使用 docker-compose.yml 统一管理:

version: '3.8'
services:
  app1:
    build: ./app1
    ports:
      - "8081:8080"
    restart: always

  app2:
    build: ./app2
    ports:
      - "8082:8080"
    restart: always

启动:

docker-compose up -d

四、Web 服务器 / 反向X_X(可选但推荐)

用于统一入口、SSL 终止、负载均衡。

方案1:Nginx 反向X_X

安装 Nginx:

sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

配置 /etc/nginx/conf.d/apps.conf:

server {
    listen 80;
    server_name example.com;

    location /app1 {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /app2 {
        proxy_pass http://127.0.0.1:8082;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

测试并重载:

sudo nginx -t
sudo systemctl reload nginx

方案2:使用 Apache HTTP Server

sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd

五、数据库与其他中间件(按需)

如果应用依赖 MySQL、Redis、RabbitMQ 等,需额外安装:

MySQL

sudo yum install -y mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysql_secure_installation

Redis

sudo yum install -y redis
sudo systemctl start redis
sudo systemctl enable redis

也可使用阿里云 RDS、Redis 托管服务,避免自建。


六、日志与监控(可选但重要)

日志管理

  • Spring Boot 默认输出到控制台,建议配置日志文件输出
  • 使用 journalctl 查看 systemd 服务日志:
    journalctl -u app1.service -f

监控工具

  • Prometheus + Grafana:监控 JVM、CPU、内存等
  • ELK Stack:集中日志管理

七、自动启动与开机自启

确保所有服务开机自启:

sudo systemctl enable app1
sudo systemctl enable app2
sudo systemctl enable nginx
sudo systemctl enable mysqld

八、完整部署流程总结

步骤 操作
1 创建非 root 用户(appuser)
2 安装 JDK
3 上传 Spring Boot JAR 包到 /opt/apps/
4 为每个应用创建 systemd service 文件
5 安装并配置 Nginx 反向X_X
6 安装所需中间件(MySQL/Redis 等)
7 配置防火墙和安全组
8 启动所有服务并设置开机自启
9 验证访问

九、注意事项

  1. 端口冲突:确保每个应用使用不同端口
  2. 资源限制:通过 systemd 的 LimitNOFILE、MemoryLimit 等参数限制资源
  3. 安全加固:禁用 root SSH 登录、使用密钥认证、定期更新系统
  4. 备份策略:定期备份应用代码、配置文件、数据库
  5. 阿里云 ECS 最佳实践:使用实例角色、OSS 存储静态资源、SLB 负载均衡

如需进一步细化某一部分(如 Docker 部署详解、Nginx SSL 配置、健康检查等),可以继续提问!

未经允许不得转载:CLOUD技术博 » 阿里云CentOS服务器部署多个SpringBoot应用需要配置哪些环境?