git push 服务器自动拉代码
一、用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根目录下