实现原理
- 当我们执行git push操作时,把代码提交到git仓库.
- git仓库接收到我们的代码时,执行预先写好的脚本,把代码更新到应用程序上.
- 应用程序更新完成后,被pm2监听到文件改变,从而重启应用程序,使应用程序一直运行在最新的代码状态.
好处
这样可以让我们部署应用的时候,只需要部署一次,以后可以一直保持最新的代码状态.
步骤
前置条件
安装了nginx,点击我告诉你怎么安装
安装了git,点击我告诉你怎么安装
linux搭建git服务端,点击我告诉你怎么实现
安装了nodejs,点击我告诉你怎么安装
安装了pm2
#安装pm2 npm install pm2 -g
pm2常用命令
解释说明
pm2 start xxx
启动服务器
pm2 list
查看运行状态
pm2 logs
查看日志
pm2 restart xxx
重启应用
pm2 stop xxx
停止应用
pm2 start xxx --watch(www.hedaoshe.com)
监听修改,并自动重启
具体实现(下面以我自己的为例)
进入git仓库的hooks目录
cd /home/git/cms.git/hooks
创建
post-receive
文件,并写入下面的语句git --work-tree=/usr/local/cms --git-dir=/home/git/cms.git checkout -f exec git update-server-info
参数解析:
--work-tree=/usr/local/cms
这是我的网站目录--git-dir=/home/git/cms.git
这是我的git仓库目录checkout -f
强制检出exec git update-server-info
每次更新完成后会记录元信息,确保正确性
让git对
post-receive
文件拥有执行权限chmod 775 post-receive
让git对
/usr/local/cms
目录拥有写的权限chmod -R 777 /usr/local/cms
参数说明:
-R
recursive(递归),把某个目录中的文件全部赋予给定的权限
让pm2启动并监听应用程序
#每个人应用程序不同,这个启动只当参考 pm2 start npm -- run serve --watch
总结
每次本地文件push到服务器git仓库后.git仓库会自动更新应用程序的文件.pm2监听到应用程序文件改变,会自动重启应用程序.至此,我们就实现了git推送自动更新应用程序的全过程.