linux 资源打包转发
具体场景:3 台服务器 A、B、C;
- A 为构建服务器,有各种环境,大内存;
- B 为跳板服务器,有连接其它各种服务器的权限;
- C 为线上工作服务器,要求稳定法,权限严格;
A 构建打包后的资源文件需要通过 B 转发到 C 部署;
A 服务上的构建脚本:
#!/bin/bash
repos_dir="/home/ubuntu/web/blog_FE"
dist_dir = "/home/ubuntu/web/blog_FE/dist"
BRANCH=master
cd $repos_dir
git checkout $BRANCH -f
git pull origin $BRANCH -f
sudo rm -rf dist_dir
npm install
npm update
npm run build
# 压缩打包;
cd dist_dir
tar -zcvf dist.tar.gz ./*
# 由 A 分发到 B 服务器,(A 通过 key 连接 B);
scp -i /home/ubuntu/.ssh/id_rsa -r /home/ubuntu/web/blog_FE/dist/dist.tar.gz B_user_name@52.82.23.242:/home/B_user_name/web/blog_FE
# 执行 B 服务器的转发脚本,以转发至 C 服务器
ssh -i /home/ubuntu/.ssh/id_rsa B_user_name@52.82.23.242 "sh /home/B_user_name/web/blog_FE/move.sh"
B 服务器上的转发脚本 move.sh
#!/bin/bash
# 由 B 转发到 C 服务器,(B 通过 password 连接 C);
scp -P123456 -r /home/B_user_name/web/blog_FE/dist.tar.gz C_user_name@164.52.28.33:/home/app/dist
# 在 B 执行 C 服务器上的解压缩、部署脚本;
ssh -p 123456 C_user_name@164.52.28.33 "sh /home/app/deploy_blog_FE.sh"
C 服务上的解压缩部署脚本 deploy
#!/bin/bash
work_dir = "/home/app/blog_FE"
cd /home/app
rm -rf /home/app/blog_FE/*
tar -zxvf /home/app/dist/dist.tar.gz -C work_dir
至此,完成了,在 A 构建,通过 B 转发,部署到 C 服务器的流程。