- !/bin/bash
# 添加 ssh key 到远程服务器 - 将远程备份到本地
- 连接服务器:
- 部署说明:
# ./build.sh zhu 主版本 release 分支
# ./build.sh release 测试 release 分支
# ./build.sh 开发 develop 分支
# 只部署:
# ./build.sh zhud 主版本 release 分支
# ./build.sh released 测试 release 分支
# ./build.sh devd 开发 develop 分支 - rm -rf motolive.58moto.com ./dist:删除本地 motolive.58moto.com/dist路径下的所有文件
#cp -R ./dist/motolive.58moto.com motolive.58moto.com: 将./dist路径下的motolive.58moto.com 拷贝到当前##目录下并创建motolive.58moto.com
#cd motolive.58moto.com && tar -czf motolive.58moto.com.tar.gz : 进入#motolive.58moto.com中,并生成#一个motolive.58moto.com.tar的压缩包
#mv motolive.58moto.com.tar.gz ../ && cd .. && rm -rf motolive.58moto.com : 移动# # # #motolive.58moto.com.tar.gz压缩包到上级目前,并进入文件中,然后删除以前的压缩包
shell脚本部署流程
第一步:要先登录远端服务器
第二步:在远端服务器下创建项目文件地址
第三步:清空远端服务下的文件
第四步:将本地的文件上传到指定的地址
第五步:解压上传的文件,并重新运行项目
创建一个和src同级别的文件 build.sh 文件
!/bin/bash
# 添加 ssh key 到远程服务器
# 服务器备注:172.xx.xx.xx /data/wwwroot
# cat ~/.ssh/id_rsa.pub:本地的ssh存放地址,需要根据自己的地址做调整
# 6xxx:端口号, @172.xx.xx.xx:服务器地址;
# cat ~/.ssh/id_rsa.pub | ssh -p 6xxx root@172.xx.xx.xx "cat >> ~/.ssh/authorized_keys"
# cat ~/.ssh/id_rsa.pub | ssh root@172.xx.xx.xx "cat >> ~/.ssh/authorized_keys"
将远程备份到本地
# motolive.58moto.com:远程文件名
# motolive.58moto.com:存放的本地文件名
# scp -r -P 6xxx root@1xx.xx.xx.xx:/data/wwwroot/motolive.58moto.com motolive.58moto.com
连接服务器:
# ssh -p 6xxx root@1xx.xx.xx.xx
# cd /data/wwwroot/motolive.58moto.com
# 118.xx.xx.xx
# jenkins
# ssh root@1xx.xx.xx.xx
部署说明:
# ./build.sh zhu 主版本 release 分支
# ./build.sh release 测试 release 分支
# ./build.sh 开发 develop 分支
# 只部署:
# ./build.sh zhud 主版本 release 分支
# ./build.sh released 测试 release 分支
# ./build.sh devd 开发 develop 分支
opt=$1 # 部署环境
port=6xxx # 默认测试环境端口 6xxx
target=1xx.xx.xx.xx # 默认测试环境服务器
if [[ $opt == release ]] || [[ $opt == released ]]
then
target=1x.xx.xx.xx # 密码:xxx
elif [[ $opt == zhu ]] || [[ $opt == zhud ]]
then
target=1xx.xx.xx.xx # 密码:xxx
fi
if [[ -z $opt ]] || [[ $opt == release ]] || [[ $opt == zhu ]]
then
rm -rf motolive.58moto.com ./dist:删除本地 motolive.58moto.com/dist路径下的所有文件
#cp -R ./dist/motolive.58moto.com motolive.58moto.com: 将./dist路径下的motolive.58moto.com 拷贝到当前##目录下并创建motolive.58moto.com
#cd motolive.58moto.com && tar -czf motolive.58moto.com.tar.gz : 进入#motolive.58moto.com中,并生成#一个motolive.58moto.com.tar的压缩包
#mv motolive.58moto.com.tar.gz ../ && cd .. && rm -rf motolive.58moto.com : 移动# # # #motolive.58moto.com.tar.gz压缩包到上级目前,并进入文件中,然后删除以前的压缩包
echo 开始打包....
rm -rf motolive.58moto.com* ./dist
npm run build;
cp -R ./dist/motolive.58moto.com motolive.58moto.com
cd motolive.58moto.com && tar -czf motolive.58moto.com.tar.gz * && mv motolive.58moto.com.tar.gz ../ && cd .. && rm -rf motolive.58moto.com
fi
echo 开始上传包....
# scp -r -P ${port} motolive.58moto.com.tar.gz root@${target}:/data/wwwroot/motolive.58moto.com:
# 将本地的文件上传到远端指定服务器的指定路径下
scp -r -P ${port} motolive.58moto.com.tar.gz root@${target}:/data/wwwroot/motolive.58moto.com
echo 开始部署
ssh -p ${port} root@${target}<<EOF
echo 成功登录到远程服务器 ${target}
cd /data/wwwroot/motolive.58moto.com
echo 解压 motolive.58moto.com.tar.gz
tar -xzf motolive.58moto.com.tar.gz;
rm -rf motolive.58moto.com.tar.gz;
EOF
echo 部署完成
echo -----------------------------------
exit 0
tar -czf m.jddmoto.com
注意点:文件打包上传的方式,需要根据具体的项目情况做调整