利用shell编程,部署项目到服务器
2024-08-27 18:58:23
现在在前后端分离的开发形式中,每次前端将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"
最新文章
- [Modern OpenGL系列(四)]在OpenGL中使用Shader
- 初学者 bootstrap(二)----在路上(4)
- 基于Arduino、STM32进行红外遥控信号接收
- 对非线程安全类List<;T>;的一些总结
- KnockoutJS 3.X API 第三章 计算监控属性(2) 可赋值的计算监控属性
- JVM的GC理论详解
- 注册并启动 Reporting Services SharePoint 服务
- opencv编程解决warning C4003: “max”宏的实参不足
- hdu-5714 拍照(二分)
- Codeforces Round #333 (Div. 2) A. Two Bases 水题
- WordPress BackWPup插件‘tab’参数跨站脚本漏洞
- DataTable无法使用AsEnumerable ()的解决办法
- C语言的本质(6)——位运算
- 27号华为笔试(三道ac两道)
- vue中使用LESS、SASS、stylus
- bzoj4555(多项式求逆解法)
- Visual Studio Code用户设置文件
- ArcGIS 在高清屏中主界面界面字体和图标显示过小,如何解决?
- d-ary heap实现一个快速的优先级队列(C#)
- Office 2003 2007 2010 配置进度 正在配置 解决方案 (转载)
热门文章
- xpath scrapy shell
- __destruct()析构函数的执行时刻 __construct()构造函数传入参数 构造函数与后台登录安全
- 剑指Offer——和为S的两个数字
- django 前端传文件到后台项目目录
- POJ1470Closest Common Ancestors 最近公共祖先LCA 的 离线算法 Tarjan
- app瘦身和包压缩技术有什么区别?
- golang处理 json中非法字符
- 006-Shell printf 命令
- webuploader 多图片上传
- PAT 1099 Build A Binary Search Tree[BST性质]