现在在前后端分离的开发形式中,每次前端将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"

最新文章

  1. [Modern OpenGL系列(四)]在OpenGL中使用Shader
  2. 初学者 bootstrap(二)----在路上(4)
  3. 基于Arduino、STM32进行红外遥控信号接收
  4. 对非线程安全类List<T>的一些总结
  5. KnockoutJS 3.X API 第三章 计算监控属性(2) 可赋值的计算监控属性
  6. JVM的GC理论详解
  7. 注册并启动 Reporting Services SharePoint 服务
  8. opencv编程解决warning C4003: “max”宏的实参不足
  9. hdu-5714 拍照(二分)
  10. Codeforces Round #333 (Div. 2) A. Two Bases 水题
  11. WordPress BackWPup插件‘tab’参数跨站脚本漏洞
  12. DataTable无法使用AsEnumerable ()的解决办法
  13. C语言的本质(6)——位运算
  14. 27号华为笔试(三道ac两道)
  15. vue中使用LESS、SASS、stylus
  16. bzoj4555(多项式求逆解法)
  17. Visual Studio Code用户设置文件
  18. ArcGIS 在高清屏中主界面界面字体和图标显示过小,如何解决?
  19. d-ary heap实现一个快速的优先级队列(C#)
  20. Office 2003 2007 2010 配置进度 正在配置 解决方案 (转载)

热门文章

  1. xpath scrapy shell
  2. __destruct()析构函数的执行时刻 __construct()构造函数传入参数 构造函数与后台登录安全
  3. 剑指Offer——和为S的两个数字
  4. django 前端传文件到后台项目目录
  5. POJ1470Closest Common Ancestors 最近公共祖先LCA 的 离线算法 Tarjan
  6. app瘦身和包压缩技术有什么区别?
  7. golang处理 json中非法字符
  8. 006-Shell printf 命令
  9. webuploader 多图片上传
  10. PAT 1099 Build A Binary Search Tree[BST性质]