用gitlab的webhooks更新网站

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服务就可以了

  • 版权声明: 本文源自互联网, 于1年前,由整理发表,共 1174字。
  • 原文链接:点此查看原文

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

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

  1. 到此一游 5

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