利用shell編程,部署項目到服務器


現在在前后端分離的開發形式中,每次前端將VUE項目打包之后,需要后端程序員部署到服務器上。這過程為何沒有用git,因為每次vue打包后的文件都不相同與前一次打包,git為何的話,會包含過大迭代版本,同時git提交過多小文件速度也不快。

傳統的方式

windows系統下xshell可以直接用文件管理工具(類似ftp),將壓縮包上傳服務器(如 /data/www/project1),同時將舊的所有備份到/data/www/project1/bak/

利用shell編程,一鍵運行部署

思路:
1.使用scp命令,將本地文件上傳到服務器(scp /path/filename username@servername:/path ),例如:

scp /Users/chq/Downloads/dist.rar  root@101.132.xxx.xxx:/data/www/ads.vue.tanwan.com/

2.例如ssh命令切換到服務器
3.刪除bak文件里面的上一次備份文件;
4.將當期除了dist.rar 和 bak的文件,全部拷貝到bak文件夾內;

  1. 解壓dist.rar文件到當期文件夾內;

其中第3,4,5步驟可以合並為shell文件操作:
shell編程發布文件release.sh如下:

#!/bin/sh
# 服務器發布ads項目前端代碼腳本
folder=/data/www/ads.vue.tanwan.com
f_bak=$folder/dist_bak
rar=$folder/dist.rar

[ -r "$folder" ] || { echo "沒找到目錄:$folder" ; exit 1; }
[ -w "$folder" ] || { echo "修改目錄可寫入: $folder" ; chmod 755 $folder; }
[ -r "$rar" ] || { echo "沒有找到rar文件: $rar"; exit 1; }
[ -r "$f_bak" ] || { echo "創建備份目錄:$f_bak"; mkdir $f_bak; chmod 755 $f_bak; }
echo "清除上一次備份文件:"
rm -rf $f_bak/*

for i in $folder/*
do
   #echo "Hello , $i"
   if [ "$i" != "$f_bak" ] && [ "$i" != "$rar" ];then
      echo "備份當前文件:cp -rf $i $f_bak"
      cp -rf $i $f_bak
      rm -rf $i
   fi
done

# 解壓rar文件
unrar x -rf $rar $folder
echo "發布文件:$rar 到 $folder 成功!"

這是,正常一個流程就是scp上傳文件到遠程服務器,再ssh登錄遠程服務器,最后執行release.sh,操作還有優化空間:即合並所有步驟:

#!/bin/sh
# 本地推送最新ads前端文件到遠程服務器
service=root@101.132.184.136
webPath=/data/www/ads.tanwan.com
# 默認本地壓縮包路徑,可以通過shell命令傳參來修改,如:sh publish.sh D:/test/dist.rar
rar=/Users/chq/Documents/dist.rar
if [ $1 ]; then
    rar=$1
fi
[ -r "$rar" ] || { echo "沒有找到rar文件:$rar "; exit 1; }

scp $rar  $service:$folder
set timeout 10
#本地執行遠程服務器shell腳本
ssh -T $service "$webPath/tool/shell/release.sh"

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com