简单的升级操作,可以通过tar -czPf 压缩包名 需要的文件……
来将需要升级的文件打包,然后命令行解压升级。
我的思路是,有一个升级清单文件,是json
格式,里面定义自己要升级的文件及要做的操作,例如:
{
"ui": "dist.zip", # 如果升级前端写dist.zip,否则为空
"middleware": [ # 列表中写入所有更新的文件,否则为空
"middleware/app/check/views.so",
"middleware/app/check/service.so"
],
"update_sql": 0, # 是否升级数据库,是:1, 否:0
"supervisor_conf": 0, # 是否更新supervisor的配置,是:1, 否:0
"version": "1.0.1", # 升级的版本号
"script": 0 # 是否有up.sh脚本执行,有:1, 无:0
}
代码中解析这个升级清单,进行相应的操作,备份原文件,防止升级失败,然后可以进行还原。其中script可以看是否有需要执行的安装命令,或者替换某些linux文件的脚本,这样做的话,实现升级是可以,就是升级包显得不够专业。
bin包升级
我们可以利用shell脚本和文件写入到bin包中,通过执行bin包升级
先创建一个shell脚本,里面可以执行相关的操作:vim test.sh
#!/bin/bash
name=upgrade163;
tmpfile_name=/tmp/${name}.tgz;
# 这里可以写一堆操作,安装依赖等
sed -n -e '1,/^exit 0;/!p' $0 > ${tmpfile_name} 2> /dev/null; # 分离脚本与升级包
tar -xzf ${tmpfile_name} -C /home/test/;
exit 0;
然后通过 cat test.sh upgrade.tgz > bag.bin
生成一个bin包
chmod a+x bag.bin
./bag.bin
执行bin包即可将升级的文件分离到指定的目录下,后续可以写一些脚本解压替换等