publish_over_ssh.sh 1.42 KB
#!/usr/bin/env bash
# 发布环境配置

PROJECT_DIR="$WORKSPACE/"                                 # 发布工程目录
PACKAGE_NAME=`basename $0 sh`"tar.gz"                     # 打包名称

HOST=$1                                   # 服务器IP
DEPLOY_DIR=$2                             # 部署生产目录
TMP_DIR=${DEPLOY_DIR}"_tmp_dir"           # 部署临时目录


echo ">>>>> 开始发布"

echo "===> 1.打包项目party目录下代码到: ${PACKAGE_NAME} "
tar -czf ${PACKAGE_NAME} .
echo "<=== 1.成功"

echo "===> 2.在远端创建临时目录:${TMP_DIR} "
ssh -p 22 root@${HOST} "mkdir -p ${TMP_DIR} && cd ${TMP_DIR} && pwd"
echo "<=== 2.成功"

echo "3.从发布目录中将打包文件:${PACKAGE_NAME} 拷贝到 ${HOST} 下的临时目录:${TMP_DIR} 中"
scp -P 22 -r ${PACKAGE_NAME} root@${HOST}:${TMP_DIR}
echo "<=== 3.成功"

echo "4.解压项目源码: ${PACKAGE_NAME}"
ssh -p 22 root@${HOST} "cd ${TMP_DIR} && tar -zxf ${PACKAGE_NAME}"
echo "<=== 4.成功"

echo "5.复制项目源码: ${TMP_DIR}/ "
ssh -p 22 root@${HOST} "cd ${TMP_DIR} && cp -rf . ${DEPLOY_DIR}"
echo "<=== 5.成功"

echo "6.清除临时目录:${TMP_DIR}"
ssh -p 22 root@${HOST} "rm -rf ${TMP_DIR}"
echo "<=== 6.成功"

echo "7.递归修改项目根目录权限"
ssh -p 22 root@${HOST} "chown nginx:nginx ${DEPLOY_DIR} -R"
ssh -p 22 root@${HOST} "setfacl -R -d -m u:nginx:rwx ${DEPLOY_DIR}"
echo "<=== 8.成功"

echo "<<<<< 发布结束"