gitlab nginx php解析,GitLab-webhook-PHP 详解 GitLab Webhooks 自动部署应用服务器

# GitLab Web Hook For PHP

开始使用

​ 服务器环境必须先安装git环境,Webhook脚本依赖PHP运行环境,同时需要有exec函数执行权限。使用前需要先开启禁用的PHP部分可执行函数,参考以下设置

$ which php

/usr/local/php/bin/php

$ sudo vi /usr/local/php/etc/php.ini

#在disable_functions前面添加#

;disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen

在实际项目目录克隆远程仓库

Gitlab Webhook自动部署也需要在指定的git仓库中运行,也即是在实际项目目录中需要远程克隆git仓库,例如:

$ git clone git@gitlabserver:developer/project.git

$ cd project

$ pwd

/mnt/www/project

在项目目录克隆Gitlab Web Hook For PHP

进入项目目录,克隆gitlab web hook for php。克隆完成后,需要将项目中带有{server} {project}字样的内容替换为自己的服务器IP与服务器目录

$ git clone https://github.com/bravist/gitlab-webhook-php

$ cd gitlab-webhook-php

$ pwd

/mnt/www/project/gitlab-webhook-php

$ ll

total 20

-rwxrwxrwx 1 www www 140 Sep 13 09:59 develop_deploy.sh

-rwxrwxrwx 1 www www 1812 Sep 13 09:59 gitlab.php

-rwxrwxrwx 1 www www 138 Sep 13 09:59 master_deploy.sh

-rwxrwxrwx 1 www www 88 Sep 13 09:59 README.md

-rwxrwxrwx 1 www www 673 Sep 13 11:09 webhook.log

配置Gitlab项目Webhooks

进入你的gitlab控制台 =》选择项目 =》 设置 =》 Webhooks设置,新加Webhooks

626ede3c72c954b62762ce2a25a67f5c.png

类似的URL与Secret Token:

http://server/gitlab-webhook-php/gitlab.php?token=MmNmMGRmMGI2Y2EyYjY3NzFjMzRjODkzZTQ3NjY5M2Y=

MmNmMGRmMGI2Y2EyYjY3NzFjMzRjODkzZTQ3NjY5M2Y=

测试服务器是否通信成功

$ tail webhook.log

BRANCH: refs/heads/master

=======================================================================

Request on [2016-09-13 10:28:01] from [118.178.58.22]

如果有类似的日志,表示webhook通信成功,如果项目中的文件无任何修改就一定是权限的问题

权限配置

最开始配置成功后,非常多的人会遇到这个问题:Webhook通信成功,但是仓库源码却没有更新?在Linux环境中,我们需要先确认Nginx与php-fpm的默认执行用户

$ sudo ps aux | grep php

www 22131 0.0 0.2 42872 23096 ? S 02:13 0:03 nginx: worker process

www 22132 0.0 0.2 42900 23352 ? S 02:13 0:01 nginx: worker process

$sudo ps aux | grep php-fpm

www 22347 0.0 0.1 163832 9008 ? S 02:13 0:00 php-fpm: pool www

确认是www用户在运行,也即是说gitlab中的Webhooks的所有请求都是以www用户在执行。再次查看我们的hook for php脚本

$ cat gitlab.php

...

exec("/mnt/www/project/public/gitlab-webhook-php/master_deploy.sh");

...

http://server/gitlab-webhook-php/gitlab.ph...?... 此请求默认以www 用户去访问gitlab.php,然后执行master_deploy.sh脚本。因此,需要给www用户设置 Public Key Authentication

$ sudo mkdir /home/www

$ sudo -u www ssh-keygen -t rsa

...

$ cat /home/www/.ssh/id_rsa.pub

将此公钥加入gitlab中的SSH KEYS中

设置项目的文件夹用户与用户组为www

$ sudo chown -R www:www /mnt/www/project

如果在配置过程中有问题,可以@我的微博:会勇同学或者邮箱:chenghuiyong1987@gmail.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值