Skip to content

基础架构

一、Linux传统方式部署

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.ymlRedis 配置
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服务列表 实例数

1.5 访问项目

最近更新

采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小弟