一、用www 权限下clone git 代码(因为nginx 那边php 解释执行是www用户)


二、www用户添加root免密码

1.使用 “su –” 命令,进入root用户;

2.为sudoers文件添加写入的权限:使用命令   “chmod u+w /etc/sudoers”

3.执行visudo 命令,按“i”进入编辑模式后,找到“root ALL=(ALL) ALL ”,在后面添加:"www ALL=(ALL)  NOPASSWD:  ALL",再按一下“Esc”键退出编辑,输入“wq”(write quit)后,退出sudoers。

4.输入“chmod u-w /etc/sudoers”将文件的写入属性去掉

5.通过“exit”切换回自己的用户,再使用sudo  whoami命令时,如果返回root,就可以使用了

三、编写拉取shell 脚本

    ###
    #
    #git 自动pull shell 脚本
    #
    ###
    #! /bin/bash
    currentDir=$PWD
    cd /code/coding/xihuanbaobei/
    #执行git命令
    git pull origin master
    #切换回原来的目录
    cd $currentDir

四、github设置webhooks 钩子,Payload URL http://www.xihuanbaobei.com/gitpull.php Content type:application/json

五、gitpull.php

    $github_signa = $_SERVER['HTTP_X_HUB_SIGNATURE'];
    list($hash_type, $hash_value) = explode('=', $github_signa, 2);
    $payload = file_get_contents("php://input");
    $secret = '9876543210.';
    $hash = hash_hmac($hash_type,$payload,$secret);
    if($hash && $hash === $hash_value)
    {
            echo '认证成功,开始更新';
            echo exec("/sh/github_pull.sh");
            echo date("Y-m-d H:i:s");
    }

总结,www权限的东西不要放home根目录下