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

利用shell编程,部署项目到服务器的更多相关文章

  1. Shell编程-项目部署(一)

    由于实际工作中经常用到需要部署项目,比较麻烦,今天记录下如何利用shell脚本完成自动部署的工作,毕竟不是专业的运维出身,写的不好,还请勿喷_^o^_ 今天以部署Django项目为演示,进行部署项目, ...

  2. Vue-CLI 3.x 自动部署项目至服务器

    前言 平时部署前端项目流程是:先部署到测试环境ok后再发布到生产环境上,部署到测试环境用 xshell 连上服务器,然后用 xftp 连接服务器,然后本地 build 项目,接着把 build 好的文 ...

  3. 【Tomcat】使用tomcat manager 管理和部署项目,本地部署项目到服务器

    在部署tomcat项目的时候,除了把war文件直接拷贝到tomcat的webapp目录下,还有一种方法可以浏览器中管理和部署项目,那就是使用tomcat manager. 默认情况下,tomcat m ...

  4. Webstorm轻松部署项目至服务器

    wo大前端在开发环境下,需要将项目部署到测试环境,webstorm进行基础配置操作就可实现. 一.在Deployment选项下配置远程服务器地址 点击加号,选择type类型,Name自己填,帮你找到这 ...

  5. tomcat 部署项目到服务器

    参考博客,我选了一种最简单的方法来部署项目. 在tomcat 目录下 的  conf\Catalina\localhost 目录中,新建一个   ' 项目名.xml '   文件,名字用项目名表示, ...

  6. shell编程-项目部署(二)

    上节我们讲了项目部署的准备工作,现在具体讲下代码部署 首先梳理下思路,大致是这样: 获取代码 打包代码 传输代码 关闭应用 解压文件 放置文件(备份老文件,放置新的文件) 开启应用 最后检查下 OK, ...

  7. shell编程-项目部署(优化篇)

    在实际工作中小编遇到了一个问题那就是当我去操作部署脚本的时候,另一个人也可以操作,这怎么能行啊,后来小编就觉得重新优化下代码,给它加一个进程锁 老规矩,先梳理下思路: 同一时间内,脚本只能够允许一个人 ...

  8. 为什么vue+webpack需要用到node,如何部署项目到服务器?

    第一部分 之前一直不太理解为什么要使用vue+webapck,还有在使用了vue-cli之后会用到后台,即vue-cli自动帮我们安装了express服务器,在本地服务器上运行,因为我们希望可以模拟在 ...

  9. 部署项目到服务器 & 搭建博客网站

    搭建博客网站 作为名程序员,或者是网络编程爱好者,拥有一个自己的博客网站再好不过,本篇文章手把手教你部署自己的网站

随机推荐

  1. timeline css

    CODE <!doctype html> <html> <head> <meta charset="UTF-8"> <titl ...

  2. ES6中的let和const

    let和const let 用来声明变量,但是所声明的变量只在let命令所在的代码块内有效 { let a=12 alert(a)//12 } alert(a)//报错 找不到 let不像var那样会 ...

  3. MySQL数据库(二)

    事务 数据库开启事务命令 #start transaction 开启事务 #Rollback 回滚事务,即撤销指定的sql语句(只能回退insert delete update语句),回滚到上一次co ...

  4. python模块之PIL模块(生成随机验证码图片)

    PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 ...

  5. gui设计

    芯艺,你好! ... ... ... 芯艺,再见! http://www.chipart.cn/ 附件 http://files.cnblogs.com/files/dong1/%E8%89%BA%E ...

  6. TensorFlow学习笔记(三)-- feed_dict 使用

    个人理解:就是TF的一种输入语法. 跟C语言的scanf(),C++的 cin>> 意思差不多,只是长相奇怪了点而已. 做完下面几个例子,基本也就适应了. 首先占位符申请空间:使用的时候, ...

  7. 宏表达式与函数、#undef、条件编译、

    宏表达式在预编译期被处理,编译器不知道宏表达式的存在. 宏表达式没有任何的调用开销 宏表达式中不能出现递归定义. C语言中强大的内置宏 __FILE__:被编译的文件名 //双底线 __LINE__: ...

  8. JS根据userAgent值来判断浏览器的类型及版本【转】

    转自:http://blog.csdn.net/sunlovefly2012/article/details/22384255 JavaScript是前端开发的主要语言,我们可以通过编写JavaScr ...

  9. 细说PHP7

    PHP7带来的新东西 1.类型的声明. 可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值. declare(s ...

  10. python3 用requests 保存网页以及BeautifulSoup保存图片,并且在本地可以正常显示文章的内容和图片

    用requests 模块做了个简单的爬虫小程序,将博客的一篇文章以及图片保存到本地,文章格式存为'.html'.当文章保存到本地后,图片的连接可能是目标站点的绝对或者相对路径,所以要是想在本地也显示图 ...