主题
一、环境信息
- 数据库/中间件环境信息
| 名称 | 版本 | IP地址 | 备注 |
|---|---|---|---|
| Nginx | 1.30.4 | 172.22.33.90 | docker-compose部署 |
| Mysql | 8.0.36 | 172.22.33.90 | docker-compose部署 |
| Redis | 7.4.3 | 172.22.33.90 | docker-compose部署 |
- 服务器信息
| 服务器名称(机器配置) | IP地址 | 操作系统 | 备注 |
|---|---|---|---|
| web前端+中间件+后端微服务 (16c32g200g) | 172.22.33.90 | OpenEuler 22.03 LTS SP4 | Docker29.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;
}
}
EOFyaml
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 # 指定网桥模式
EOFbash
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 432.1.2 部署Mysql
bash
mkdir -p /home/application/mysql/datayaml
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 # 指定网桥模式
EOFbash
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
EOFbash
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 success2.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.gzbash
mkdir ~/.m2
touch ~/.m2/settings.xmlxml
<?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/profilebash
#nvm版本
nvm -v
0.40.3
#nvm版本列表
nvm ls-remote
#安装node-v20.20.2
nvm install v20.20.2
#查看node版本
node -vbash
npm config set registry https://registry.npmmirror.com
npm config get registry
https://registry.npmmirror.com2.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