自动化部署流程: 
 
流程 
在github上设置hook(钩子),本地推送代码到github,会触发hook,github请求web服务器的webhook.php文件,服务器通过文件执行pull命令,拉取github最新代码。完成自动化部署.
第一次本地推送远程,就会触发hook,服务器尚未有webhook.php文件,因此触发失败,需要服务器手动拉取代码
1.本地创建webhook.php 
使用纯php、若时候其他框架只需配置路由,配置控制器方法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <?php   //GitHub Webhook Secret   //GitHub项目 Settings/Webhooks 中的Secret   改   $secret="liminzhang";      //Path to your respostory on your server.   //e.g. "/var/www/respostory"   //项目地址			改   //$path="/www/wwwroot/xj.houdunren.com";   $path="http://hdxj.houdunren.com/webhook.php";   //Headers deliveried from GitHub   $signature=$_SERVAR['HTTP_X_HUB_SIGNATURE'];      if($signature){       $hash="sha1=" . hash_hmac('sha1',file_get_contents("           php://input"),$secret);       if(strcmp($signature,$hash)==0){               echo shell_exec("cd {$path} && /usr/bin/git reset               --hard origin/master && /usr/bin/git clean -f &&               /usr/bin/git pull 2>&1");               exit();       }   }   http_response_code(404);   ?> 
 
用的时候需要改webhook.php中的secret和$path,两者都来自gitHub->webhook的设置
2.github: 
项目设置-》webhooks->add webhook 需要填写web服务器地址
Payload URL
http://hdxj.houdunren.com/webhook.php(请求文件的地址)
Secret
liminzhang(自己随便设置)
3.服务器: 
宝塔面板中创建一个服务器地址。
远程操作
ssh root@hdxj.houdunren.com  -p 71    //p是port端口
password:
1 2 3 4 5 6 7 8 9 10 cd / cd www ls cd wwwroot  该目录放置宝塔中创建的站点目录 cd hdxj.houdunren.com ls -a  有.user.ini(定义这个站点可以访问哪些目录)和.htaccess两个隐藏文件 mv hdxj.houdunren.com  hdxj.houdunren.com999 修改文件名,因为目录不为空无法克隆github的代码,这时候hdxj.houdunren.com已经访问不了了(我想知道改名后目录边控了吗?) 克隆代码,使用https的方式 git clone https://github.com/houdunwang/hdxj.git hdxj.houdunren.com 后面的目录必须为hdxj.houdunren.com因为访问的时候,是走这个目录的 
 
另 :
开启服务器php的执行命令函数(宝塔),软件管理-》php7.2(因为站点使用的是7.2)-》设置-》禁用函数(将shell_exec()删除)
root登录时
#sudo -u www git pull
www是web服务器的账号执行git pull
命令报错无权限。其实需要指需要修改权限,返回wwwroot目录删除hdxj.houdunren.com ,重新克隆
1 2 3 4 5 6 7 8 9 10 11 rm -rf hdxj.houdunren.com git clone https://github.com/houdunwang/hdxj.git hdxj.houdunren.com cd hdxj.houdunren.com ls -a 查看权限 ll -a //权限都是root  由于github上会使用apache或者nginx服务器账号去发送请求,但都无权限改动服务器文件.而webhook.php拉取代码的时候用的是www账号,所以需要修改权限 chown -R www . chmod -R g+s . 正常了