用gitlab的webhooks更新网站

  • A+
所属分类:Linux

git有hooks钩子,但不太喜欢用ftp或者http方式同步更新其他服务器的网站。所以选择了gitlab,因为gitlab有webhooks。github也有webhooks,不过github太高富帅了,还是自己搭一个gitlab,安全又放心,关键是免费。

操作过程如下:

我的是php

要放在服务器上的目录: /home/wwwroot/mysite

在项目跟目录下面新建一个hooks.php,输入以下代码

做完这些后,就可以push到gitlab端了

有个问题说明一下,对于MVC来说,gitlab的请求并不会走路由,所以不要用路由方式来加这个文件

接着登陆网站服务器

查看这个文件,然后查看www的根目录

我这里是 /home/www

运行which git 我这里得到 /usr/local/bin/git

记住这两个目录

接着把gitlab中项目的ssh key对应的秘匙id_rsa放入/home/www/.ssh里

.ssh需要700的权限

接着给网站目录www权限

进入网站目录

初始化git 并设置权限

接着配置git

完成上面的操作后就可以手动自行第一次pull操作了 从远程获取

最后进入gitlab中项目settings设置 在web hooks里

URL写

http://www.mysite.com/hooks.php?token=s7kjjhh8767laq29KLJK9089883hjjkgfdrrpipoinmw
这里的token要和你在hooks.php的token一致

做完这些以后就可以pull了,做一次提交,看是不是同时自动更新了网站

最后:如果web hooks不能正常工作的话,可以看下hooks.log看下执行的信息

补充两个问题:

1.在手动创建/home/www/.ssh 文件夹后,不能忘了改变这个文件夹的所有者,不然会出现无法写入know_hosts的问题

2.因为代码中使用到了shell_exec这个函数,一般配置php的时候都禁止了,需要打开shell_exec

在php.ini的disable_functions 的列表里删除shell_exec

再重新启动php-fpm服务就可以了

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~

评论已关闭!

目前评论:1   其中:访客  1   博主  0

    • 到此一游 9

      git pull origin master 这句话主要作用是什么?对于git不甚了解,请指点一下