主题
一、Linux传统方式部署
TIP
前端项目代码:https://cnb.cool/sre-demo/opforge/cicd-demo-pig-ui
后端项目代码:https://cnb.cool/sre-demo/opforge/cicd-demo-pig-backend
1.1 准备前端/后端包
- 构建前端包
bash
git clone http://code.srebro.cn/opforge/cicd-demo-pig-ui.git
ci cd-demo-pig-ui/
npm install
npm run build
- 构建后端包
bash
git clone http://code.srebro.cn/opforge/cicd-demo-pig-backend.git
cd cicd-demo-pig-backend/
## 微服务版本打包
mvn clean install -Pcloud
1.2 部署后端服务
TIP
分别在 微服务01 172.22.33.214 和 微服务02 172.22.33.215 上操作
- 创建微服务工作目录
bash
mkdir -p /home/application/{pig-auth,pig-register,pig-gateway,pig-upms-biz,pig-monitor,pig-codegen,pig-quartz}
ls -l /home/application/
总用量 32
drwxr-xr-x 8 root root 4096 7月 1 16:02 jdk-17.0.2
drwxr-xr-x 2 root root 4096 7月 1 18:51 pig-auth
drwxr-xr-x 2 root root 4096 7月 1 18:51 pig-codegen
drwxr-xr-x 2 root root 4096 7月 1 18:51 pig-gateway
drwxr-xr-x 2 root root 4096 7月 1 18:51 pig-monitor
drwxr-xr-x 2 root root 4096 7月 1 18:51 pig-quartz
drwxr-xr-x 2 root root 4096 7月 1 18:51 pig-register
drwxr-xr-x 2 root root 4096 7月 1 18:51 pig-upms-biz
- 创建微服务启动脚本
startup.sh
TIP
-DNACOS_HOST=172.22.33.214 指定Nacos 服务器IP 地址,默认是 127.0.0.1
bash
cat > /home/application/startup.sh <<'EOF'
#!/bin/bash
project_name=$1
source /etc/profile
base_dir=/home/application/${project_name}
jar_path=`find $base_dir -name '*.jar' |grep -v 'sources'|grep ${base_dir}/${project_name}`
jps -l| grep -v Jps |grep ${base_dir}/${project_name} | awk -F " " '{print $1}'| xargs -r kill -9
nohup java -jar -Xms512m -Xmx512m -Dfile.encoding=utf-8 -Duser.timezone=GMT+8 -DNACOS_HOST=172.22.33.214 $jar_path > /dev/null 2>&1 &
EOF
#添加可执行权限
chmod +x /home/application/startup.sh
- 批量复制startup.sh 到每个微服务工作目录里
bash
for dir in \
pig-auth \
pig-codegen \
pig-gateway \
pig-monitor \
pig-quartz \
pig-register \
pig-upms-biz
do
if [ -d "$dir" ]; then
cp -rp startup.sh "$dir/"
else
echo "警告:目录 $dir 不存在,跳过复制。" >&2
fi
done
- 批量拷贝jar包,到各自的微服务工作目录里
TIP
在拷贝之前可以先做一个免密登录,这样拷贝速度会更快
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.22.33.214
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.22.33.215
#!/bin/bash
# ==================== 配置区域 ====================
# 所有需要传输的 jar 包源路径(相对于当前脚本执行目录)
JAR_SOURCES=(
"pig-auth/target/pig-auth.jar"
"pig-gateway/target/pig-gateway.jar"
"pig-register/target/pig-register.jar"
"pig-upms/pig-upms-biz/target/pig-upms-biz.jar"
"pig-visual/pig-quartz/target/pig-quartz.jar"
"pig-visual/pig-monitor/target/pig-monitor.jar"
"pig-visual/pig-codegen/target/pig-codegen.jar"
)
# 所有目标主机 IP 地址
TARGET_HOSTS=(
"172.22.33.214"
"172.22.33.215"
)
# 目标文件根目录(所有主机统一目录,最终路径为 ${DEST_ROOT}/${project_name}/)
DEST_ROOT="/home/application"
# ==================================================
# 遍历每个目标主机
for host in "${TARGET_HOSTS[@]}"; do
echo "========== 开始向主机 ${host} 传输文件 =========="
# 遍历每个 jar 包源路径
for src_jar in "${JAR_SOURCES[@]}"; do
# 提取 jar 包文件名(如 pig-auth.jar)
jar_filename=$(basename "${src_jar}")
# 提取项目名(去掉 .jar 后缀,如 pig-auth)
project_name="${jar_filename%.jar}"
# 构造远程目标目录(最终路径:/home/application/pig-auth/)
remote_dir="root@${host}:${DEST_ROOT}/${project_name}"
# 构造完整的远程目标路径(最终路径:/home/application/pig-auth/pig-auth.jar)
remote_path="${remote_dir}/${jar_filename}"
# 步骤1:在远程主机创建目标目录(如果不存在)
echo "正在远程主机 ${host} 创建目录:${DEST_ROOT}/${project_name}"
ssh -o ConnectTimeout=5 root@"${host}" "mkdir -p ${DEST_ROOT}/${project_name}"
if [ $? -ne 0 ]; then
echo "❌ 远程主机 ${host} 目录创建失败:${DEST_ROOT}/${project_name},跳过传输"
continue
fi
# 步骤2:执行 scp 传输(-r 保留属性,-p 显示进度)
echo "正在传输:${src_jar} -> ${remote_path}"
scp -rp "${src_jar}" "${remote_path}"
# 检查传输结果并输出提示
if [ $? -eq 0 ]; then
echo "✅ 传输成功:${jar_filename} 到 ${host}:${remote_path}"
else
echo "❌ 传输失败:${jar_filename} 到 ${host}"
fi
done
echo "========== 主机 ${host} 传输完成 ==========\n"
done
echo "所有主机传输任务结束"
1.3 部署前端服务
- 拷贝dist目录的内容 到Nginx 容器外挂载的/home/application/nginx/dist 目录下
bash
scp -rp dist/* root@172.22.33.213:/home/application/nginx/dist/
1.4 启动服务
[注意 ⚠️]
- 必须先启动 Nacos 服务,也就是pig-register 服务,因为Nacos是注册中心,必须先启动,否则其他服务无法注册到Nacos上,也就无法启动。
- 再启动Nacos 服务之后,还需要修改Nacos 中 redis、mysql 配置,否则其他服务无法启动。
- 启动Nacos服务(pig-register) 只需要启动 172.22.33.214一个 pig-register 服务即可
bash
/home/application/pig-register/startup.sh pig-register
- 访问 Nacos 管理页面
TIP
端口是 8080 访问 nacos: http://172.22.33.214:8080 (默认账号密码 nacos/nacos)
- 修改Nacos 中Redis、Mysql 配置
配置文件 Data Id | 修改配置信息 |
---|---|
application-dev.yml | Redis 配置 |
pig-upms-biz-dev.yml | 数据库链接信息 |
pig-codegen-dev.yml | 数据库链接信息 |
pig-quartz-dev.yml | 数据库链接信息 |
- 顺序启动服务
bash
/home/application/pig-auth/startup.sh pig-auth
/home/application/pig-gateway/startup.sh pig-gateway
/home/application/pig-upms-biz/startup.sh pig-upms-biz
/home/application/pig-codegen/startup.sh pig-codegen
/home/application/pig-quartz/startup.sh pig-quartz
/home/application/pig-monitor/startup.sh pig-monitor
bash
/home/application/pig-auth/startup.sh pig-auth
/home/application/pig-gateway/startup.sh pig-gateway
/home/application/pig-upms-biz/startup.sh pig-upms-biz
/home/application/pig-codegen/startup.sh pig-codegen
/home/application/pig-quartz/startup.sh pig-quartz
/home/application/pig-monitor/startup.sh pig-monitor
- 查看 Nacos服务列表 实例数