利用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文件夹内;
- 解压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编程,部署项目到服务器的更多相关文章
- Shell编程-项目部署(一)
由于实际工作中经常用到需要部署项目,比较麻烦,今天记录下如何利用shell脚本完成自动部署的工作,毕竟不是专业的运维出身,写的不好,还请勿喷_^o^_ 今天以部署Django项目为演示,进行部署项目, ...
- Vue-CLI 3.x 自动部署项目至服务器
前言 平时部署前端项目流程是:先部署到测试环境ok后再发布到生产环境上,部署到测试环境用 xshell 连上服务器,然后用 xftp 连接服务器,然后本地 build 项目,接着把 build 好的文 ...
- 【Tomcat】使用tomcat manager 管理和部署项目,本地部署项目到服务器
在部署tomcat项目的时候,除了把war文件直接拷贝到tomcat的webapp目录下,还有一种方法可以浏览器中管理和部署项目,那就是使用tomcat manager. 默认情况下,tomcat m ...
- Webstorm轻松部署项目至服务器
wo大前端在开发环境下,需要将项目部署到测试环境,webstorm进行基础配置操作就可实现. 一.在Deployment选项下配置远程服务器地址 点击加号,选择type类型,Name自己填,帮你找到这 ...
- tomcat 部署项目到服务器
参考博客,我选了一种最简单的方法来部署项目. 在tomcat 目录下 的 conf\Catalina\localhost 目录中,新建一个 ' 项目名.xml ' 文件,名字用项目名表示, ...
- shell编程-项目部署(二)
上节我们讲了项目部署的准备工作,现在具体讲下代码部署 首先梳理下思路,大致是这样: 获取代码 打包代码 传输代码 关闭应用 解压文件 放置文件(备份老文件,放置新的文件) 开启应用 最后检查下 OK, ...
- shell编程-项目部署(优化篇)
在实际工作中小编遇到了一个问题那就是当我去操作部署脚本的时候,另一个人也可以操作,这怎么能行啊,后来小编就觉得重新优化下代码,给它加一个进程锁 老规矩,先梳理下思路: 同一时间内,脚本只能够允许一个人 ...
- 为什么vue+webpack需要用到node,如何部署项目到服务器?
第一部分 之前一直不太理解为什么要使用vue+webapck,还有在使用了vue-cli之后会用到后台,即vue-cli自动帮我们安装了express服务器,在本地服务器上运行,因为我们希望可以模拟在 ...
- 部署项目到服务器 & 搭建博客网站
搭建博客网站 作为名程序员,或者是网络编程爱好者,拥有一个自己的博客网站再好不过,本篇文章手把手教你部署自己的网站
随机推荐
- 剑指Offer——翻转单词顺序列
题目描述: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“studen ...
- 浅谈Spark2.x中的Structured Streaming
在Spark2.x中,Spark Streaming获得了比较全面的升级,称为Structured Streaming,和之前的很不同,功能更强大,效率更高,跟其他的组件整合性也更好. 连续应用程序c ...
- CentOS 6下OpenCV的安装与配置
自己按照网上的教程一步一步来的 http://www.jb51.net/os/RedHat/280309.html 虚拟机环境 CentOS 6.5 内核版本:4.1.14 64位 gcc,gcc 4 ...
- django内置 Contenttypes 框架
一.什么是Django ContentTypes? 1.Django 包含一个ContentTypes 应用,它可以追踪安装在你的Django 项目里的所有应用,并提供一个高层次的.通用的接口用于与你 ...
- python 之时间模块 time
time模块可以用于格式化日期和时间,时间间隔是以秒为单位的浮点小数.每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. 下面是time模块常用的一些时间格式转换的函数.时间戳可以 ...
- openURL的使用
1)私有方法跳转 /** 私有方法,不建议使用 利用ASCII值进行拼装组合方法.这样可绕过审核. 上面是进入蓝牙界面的方法.也可以有其他的页面可以跳转.设置页面是@"@"Pref ...
- javaScript动画2 scroll家族
offsetWidth和offsetHight (检测盒子自身宽高+padding+border) 这两个属性,他们绑定在了所有的节点元素上.获取之后,只要调用这两个属性,我们就能够获取元素节点的宽和 ...
- Connecting to a Remote Serial Port over TCP/IP
https://www.acmesystems.it/socat This article illustrates how to realize a lan to serial gateway Rem ...
- [HZNUOJ] 博
Description 定义一个数字序列为“非下降序列”: 此处我们约定用$n\;表示数字序列的长度,下面定义在n \in [1, \infty]时有效$ $if \;\; n = 1:$ $\;\; ...
- cocos2dx 3.x 精灵重叠时点击最上层的精灵
ps. 这个方法只适用设置精灵的触摸.. //注册触摸事件..3.X后可以在这样写..不需要重新声明 EventListenerTouchOneByOne *listener = EventListe ...