在做vue项目的线上部署,每次本地打包然后上传到远程主机,再解压等等操作太复杂,所以我就在本地写了个shell脚本,想一键处理。
现在已经实现的功能是,本地打包、压缩、上传到远程主机、登陆到远程主机、可以切换到相应目录。
但是接下来的一些操作,比如解压、删除zip包..都实现不了。
最开始是想着在本地的shell脚本执行所有命令,但是到了登陆到远程主机并成功切换到相应目录之后,后面的操作就不执行了。代码如下:
#!/bin/sh
npm run build
cd ./dist
zip -r 'prestom_frontend.zip' './'
scp prestom_frontend.zip app@xxx:/home/app/presto_monitor_frontend
scp prestom_frontend.zip app@xxx:/home/app
ssh app@10.9.46.114 -t 'cd /home/app/presto_monitor_frontend; bash --login'
// 以下操作不执行
ssh app@10.9.46.114 -t 'rm -rf index.html favicon.ico static; bash --login'
ssh app@10.9.46.114 -t 'unzip prestom_frontend.zip; bash --login'
ssh app@10.9.46.114 -t 'rm -rf prestom_frontend.zip; bash --login'
我又想到第二种方式,就是后面的删除等操作,我在远程创建shell脚本,然后我在远程执行是ok的。
但是怎么在本地的脚本里面去执行这个远程脚本呢?如果可以就不用再登陆远程去操作了,求大神指教
你的脚本太复杂了,直接rsync同步到远程的目录下不就完了?
这样就搞定了,静态资源替换也不需要重启nginx,所以只要保证你的nginx是运行状态,这样部署就结束了,刷新下页面就可以看到新的版本了。