最近使用nuxt开发了个人博客,不同于平常Vue开发的静态项目将代码打包推到服务器即可。nuxt项目是服务端渲染,需要在服务器安装依赖启动http服务,每次发布到服务器都要远程连接服务器,在服务器执行更新代码,安装依赖,启动服务,很是麻烦。于是想使用shell脚本优化了这一流程,在此记录一下。
受益于shell脚本的强大,可以通过ssh远程执行服务器命令,其实脚本方式和普通发布方式很像,只是把平时手动敲的代码变得自动而已。
首先了解一下远程执行ssh命令的方法:
ssh username@ip << remotescript
远程命令1
远程命令2
remotescript
如上所示,使用ssh命令,然后在两个remotescript(可以换为其它单词)中间的命令就会在远程服务器上执行。
对于nuxt项目来说,更新代码提交后,远程服务器干的事情大概如下:
- 进入项目目录,拉代码
- 安装依赖
- 构建项目
- 关闭上次服务,重新启动服务
将以上流程对应的指令写在remotescript内即可,保存为push.sh:
ssh root@wintc.top << remotescript
cd /home/lushg/blog-ssr
git pull origin master
yarn
yarn build
lsof -i:8000 | grep 8000 | awk '{ print \$2 }' | xargs kill -9
nohup yarn start &
remotescript
为了避免发布时候忘记提交代码,可以在脚本前面加上git push。
现在,要发布代码的时候就可以直接本地执行脚本即可:
sh push.sh
一段时间等待后,代码就自动发布完成啦: