Skip to content

一、环境信息

  • 数据库/中间件环境信息
名称版本IP地址备注
Nginx1.30.4172.22.33.90docker-compose部署
Mysql8.0.36172.22.33.90docker-compose部署
Redis7.4.3172.22.33.90docker-compose部署
  • 服务器信息
服务器名称(机器配置)IP地址操作系统备注
web前端+中间件+后端微服务 (16c32g200g)172.22.33.90OpenEuler 22.03 LTS SP4Docker29.2.1,Docker-compose2.40.3,JDK17

二、环境部署

2.1 基础环境搭建

WARNING

基础环境 依赖docker 和 docker-compose 组件, 安装教程可参考: /cloud-native/docker/deploy/01

2.1.1 部署Nginx

bash
mkdir -p /home/application/nginx/{conf,dist}
bash
cat > /home/application/nginx/conf/pig-ui.conf <<'EOF'

# 定义七层负载均衡上游服务组
upstream backend {
        server 172.22.33.90:9999;  ##后端接口地址
}

server {
    listen 80;
    server_name localhost;

    # Gzip 压缩配置
    gzip on;
    gzip_static on;
    gzip_min_length 1k;
    gzip_comp_level 4;
    gzip_proxied any;
    gzip_types text/plain text/xml text/css;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    # 前端资源路径
    root /data/;

    location ^~/api/ {
        proxy_pass http://backend/;  # 引用上游服务组
        proxy_connect_timeout 60s;
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;

        # 代理头信息(保持原有配置)
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header from "";
    }


    # 敏感路径屏蔽
    location ~* ^/(actuator|swagger-ui|v3/api-docs|swagger-resources|webjars|doc.html) {
        return 403;
    }
}
EOF
yaml
cat > /home/application/nginx/docker-compose.yaml <<'EOF'
services:
  nginx:
    image: docker.cnb.cool/srebro/docker-images-chrom/nginx:1.30.4_amd64
    #image: nginx:1.30.4
    container_name: nginx
    restart: always
    ports:
      - "80:80"
    volumes:
      - /home/application/nginx/conf/pig-ui.conf:/etc/nginx/conf.d/default.conf  # 挂载自定义配置文件
      - /home/application/nginx/dist:/data # 挂载数据目录
    networks:
      - srebro

networks:
  srebro:
    driver: bridge  # 指定网桥模式
EOF
bash
docker-compose up -d
  • 查看容器运行状态
bash
[root@localhost nginx]# docker logs -f nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf differs from the packaged version
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2026/08/25 08:46:44 [notice] 1#1: using the "epoll" event method
2026/08/25 08:46:44 [notice] 1#1: nginx/1.30.4
2026/08/25 08:46:44 [notice] 1#1: built by gcc 14.2.0 (Debian 14.2.0-19)
2026/08/25 08:46:44 [notice] 1#1: OS: Linux 5.10.0-275.0.0.178.oe2203sp4.x86_64
2026/08/25 08:46:44 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 65535:65535
2026/08/25 08:46:44 [notice] 1#1: start worker processes
2026/08/25 08:46:44 [notice] 1#1: start worker process 28
2026/08/25 08:46:44 [notice] 1#1: start worker process 29
2026/08/25 08:46:44 [notice] 1#1: start worker process 30
2026/08/25 08:46:44 [notice] 1#1: start worker process 31
2026/08/25 08:46:44 [notice] 1#1: start worker process 32
2026/08/25 08:46:44 [notice] 1#1: start worker process 33
2026/08/25 08:46:44 [notice] 1#1: start worker process 34
2026/08/25 08:46:44 [notice] 1#1: start worker process 35
2026/08/25 08:46:44 [notice] 1#1: start worker process 36
2026/08/25 08:46:44 [notice] 1#1: start worker process 37
2026/08/25 08:46:44 [notice] 1#1: start worker process 38
2026/08/25 08:46:44 [notice] 1#1: start worker process 39
2026/08/25 08:46:44 [notice] 1#1: start worker process 40
2026/08/25 08:46:44 [notice] 1#1: start worker process 41
2026/08/25 08:46:44 [notice] 1#1: start worker process 42
2026/08/25 08:46:44 [notice] 1#1: start worker process 43

2.1.2 部署Mysql

bash
mkdir -p /home/application/mysql/data
yaml
cat > /home/application/mysql/docker-compose.yaml <<'EOF'
services:
  mysql:
    restart: always
    #image: mysql:8.0.38
    image: docker.cnb.cool/srebro/docker-images-chrom/mysql:8.0.38_amd64
    container_name: mysql
    networks:
      - srebro
    volumes:
      - /home/application/mysql/data:/var/lib/mysql  # 挂载数据目录
      - /etc/localtime:/etc/localtime:ro
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      TZ: 'Asia/Shanghai'
    ports:
      - 3306:3306
    command: --explicit_defaults_for_timestamp=true
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-u", "root", "-proot"]
      interval: 30s
      timeout: 10s
      retries: 3

networks:
  srebro:
    driver: bridge # 指定网桥模式
EOF
bash
docker-compose up -d
  • 查看容器运行状态
bash
[root@localhost mysql]# docker logs -f mysql
2026-08-25 16:49:54+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.38-1.el9 started.
2026-08-25 16:49:54+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-08-25 16:49:54+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.38-1.el9 started.
'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'

2.1.3 部署Redis

bash
mkdir -p /home/application/redis/{data,logs}
yaml
cat > /home/application/redis/docker-compose.yaml <<'EOF'
services:
  redis:
    image: docker.cnb.cool/srebro/docker-images/redis:7.4.3
    container_name: redis
    networks:
      - srebro
    restart: always
    command: redis-server --requirepass root --port 6379 --appendonly yes --dbfilename dump.rd --dir /data --timeout 0 --save 900 1 --save 300 10 --save 60 10000  ##设置redis密码
    environment:
      TZ: 'Asia/Shanghai' 
    volumes:
      - /home/application/redis/data:/data
      - /home/application/redis/logs:/logs
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 6379:6379
    healthcheck:
      test: ["CMD", "redis-cli", "-h", "127.0.0.1", "-p", "6379", "-a", "root", "ping"]   ##设置redis密码
      interval: 30s
      retries: 3
      start_period: 30s
      timeout: 10s


networks:
  srebro:
    driver: bridge
EOF
bash
docker-compose up -d

# 查看容器运行状态
docker logs -f redis
  • 查看容器运行状态
bash
1:C 25 Aug 2026 14:24:21.853 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 25 Aug 2026 14:24:21.853 * Redis version=8.10.1, bits=64, commit=00000000, modified=1, pid=1, just started
1:C 25 Aug 2026 14:24:21.853 * Configuration loaded
1:M 25 Aug 2026 14:24:21.853 * monotonic clock: POSIX clock_gettime
1:M 25 Aug 2026 14:24:21.854 * Running mode=standalone, port=6379.
1:M 25 Aug 2026 14:24:21.855 * Server initialized
1:M 25 Aug 2026 14:24:21.855 * BGSAVE done, 0 keys saved, 0 keys skipped, 89 bytes written.
1:M 25 Aug 2026 14:24:21.860 * Creating AOF base file appendonly.aof.1.base.rdb on server start
1:M 25 Aug 2026 14:24:21.876 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
1:M 25 Aug 2026 14:24:21.876 * Ready to accept connections tcp
1:M 25 Aug 2026 15:23:19.461 * 1 changes in 900 seconds. Saving...
1:M 25 Aug 2026 15:23:19.461 * Background saving started by pid 739
739:C 25 Aug 2026 15:23:19.464 * BGSAVE done, 1 keys saved, 0 keys skipped, 242 bytes written.
739:C 25 Aug 2026 15:23:19.496 * DB saved on disk
739:C 25 Aug 2026 15:23:19.497 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
1:M 25 Aug 2026 15:23:19.563 * Background saving terminated with success
1:M 25 Aug 2026 15:28:20.056 * 10 changes in 300 seconds. Saving...
1:M 25 Aug 2026 15:28:20.057 * Background saving started by pid 800
800:C 25 Aug 2026 15:28:20.063 * BGSAVE done, 28 keys saved, 0 keys skipped, 29620 bytes written.
800:C 25 Aug 2026 15:28:20.100 * DB saved on disk
800:C 25 Aug 2026 15:28:20.101 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
1:M 25 Aug 2026 15:28:20.158 * Background saving terminated with success

2.1.4 部署JDK17

bash
# 安装openjdk17
wget https://mirrors.nju.edu.cn/openjdk/17.0.2/openjdk-17.0.2_linux-x64_bin.tar.gz

# 解压jdk17
tar -zxvf openjdk-17.0.2_linux-x64_bin.tar.gz -C /home/application/

# 删除压缩包
rm -rf openjdk-17.0.2_linux-x64_bin.tar.gz

# 配置环境变量
cat >> /etc/profile << 'EOF'
export JAVA_HOME=/home/application/jdk-17.0.2
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
EOF
source /etc/profile

# 验证jdk
java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)

2.1.5 安装前后端构建环境

  • 安装 git 工具
bash
yum install git
  • 安装 maven 工具

TIP

Maven 3.9+ requires JDK 8 or above to execute. maven本地缓存目录: 默认为 ${user.home}/.m2/repository

  • 配置阿里云Maven全局代理加速
bash
wget https://mirrors.nju.edu.cn/apache/maven/maven-3/3.9.16/binaries/apache-maven-3.9.16-bin.tar.gz
tar -xf apache-maven-3.9.16-bin.tar.gz -C /home/application && rm -rf apache-maven-3.9.16-bin.tar.gz
bash
mkdir ~/.m2
touch ~/.m2/settings.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
		<mirror>
			<id>aliyunmaven</id>
			<mirrorOf>*</mirrorOf>
			<name>阿里云公共仓库</name>
			<url>https://maven.aliyun.com/repository/public</url>
		</mirror>	
    </mirrors>
</settings>
bash
cat >> /etc/profile << 'EOF'

#maven
export M2_HOME=/home/application/apache-maven-3.9.16
export PATH=$M2_HOME/bin:$PATH
EOF

#使配置生效
source /etc/profile

#验证
mvn -v

Apache Maven 3.9.16 (2bdd9fddda4b155ebf8000e807eb73fd829a51d5)
Maven home: /home/application/apache-maven-3.9.16
Java version: 17.0.2, vendor: Oracle Corporation, runtime: /home/application/jdk-17.0.2
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "5.10.0-275.0.0.178.oe2203sp4.x86_64", arch: "amd64", family: "unix"
  • 安装 nvn 工具
bash
wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.40.3.tar.gz
tar -xf v0.40.3.tar.gz -C /home/application && rm -rf v0.40.3.tar.gz


```bash [配置全局环境变量]
cat >> /etc/profile << 'EOF'

#nvm
. /home/application/nvm-0.40.3/nvm.sh
EOF

#使环境变量生效
source /etc/profile
bash
#nvm版本
nvm -v
0.40.3

#nvm版本列表
nvm ls-remote

#安装node-v20.20.2
nvm install v20.20.2


#查看node版本
node -v
bash
npm config set registry https://registry.npmmirror.com

npm config get registry
https://registry.npmmirror.com

2.1.6 初始化数据库

数据库SQL文件在 后端pig代码根目录下db 目录

bash
-- 业务核心数据库
source db/pig.sql;
-- nacos配置数据库
source db/pig_config.sql;

2.1.7 修改 Nacos 数据库源地址

找到后端代码根目录下 pig-register/src/main/resources/application.properties,修改数据库连接信息

yaml
db.url.0=jdbc:mysql://${MYSQL_HOST:172.22.33.90}:${MYSQL_PORT:3306}/${MYSQL_DB:pig_config}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
db.user=root
db.password=root
最近更新