自动部署
我们将代码放到GitHub
中,同时我们有一台运行网站代码的服务器,我们将代码推送到GitHub
中,我们希望我们的服务器自动的从GitHub
拉取最新的代码,这就需要Git
的自动部署
我们向GitHub
推送代码时,会自动的向GitHub
触发一个钩子Hook
,GitHub
就会请求一个外部服务器的文件,通过这个文件来执行git pull
将代码拉取到服务器中,从而使服务器得到了最新的代码
配置
Hook
点击项目中的
Setting
-->Webhooks
-->在Payliad URL
中填写请求的外部服务器地址-->在Secret
中填写密钥(后续需要放到服务器文件中)-->点击创建钩子编写服务器文件
php<?php $secret = ""; // GitHub中配置Hook的密钥 $path = ""; // 项目地址 $signature = $_SERVER['HTTP_X_HUB_SIGNATURE']; if($signature) { $hash = "shal=".hash_hmac('shal', file_get_contents(" php://input"), $secret); if(strcmp($signature, $hash) == 0){ echo shell_exec("cd {$path} && /user/bin/git reset --hard origin/master && /usr/bin/git clean -f && /usr/bin/git pull 2>&1"); exit(); } } http_response_code(404); ?>
在服务器软件管理中将函数
shell_exec
从禁用中删除,使这个函数不禁用