首页

php通过git pull拉取代码

有个本地项目放在局域网服务器上,代码偶尔要做些修改。公司正式环境用的gitlab+jenkins来管理和发布代码,但是本地项目每次都通过Jenkins来发布显得流程过长太正式了一点,于是想着用gitlab自己的webhook每次推送的时候触发php通过git去pull代码,以此实现自动发布。 说干就干,首先要在gitlab的项目里面配置webhook,填好php执行pull的的地址。 代码是放在linux服务器上的,因此目录和命令是基于linux终端命令,PHP部分如下: <code> &lt;?php $pwd = $_SERVER['HTTP_X_GITLAB_TOKEN'] ?? '-1'; if($pwd!='你在gitlab的web设置的secret'){ header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found"); die; } @exec("cd 你的git项目发布目录 && sudo git pull"); </code> 有一点很重要,php的exec函数要保证是可用的,可用先phpinfo()看看,然后在/etc/sudoers下需要加一行: <code> 用户 ALL=(ALL) NOPASSWD: ALL #我的php用户是nginx,所以是 nginx ALL=(ALL) NOPASSWD: ALL 不知道自己的php是属于哪个用户在运行可用执行ps -aux|grep php来看看,一般就是www、www-data、apache、nginx这些 </code> 如果编辑/etc/sudoers的时候提示文件只读那可用先执行chmod u+w /etc/sudoers改下权限,当然执行chmod得有root权限才行。 <span style="color:red">ps:正式环境不推荐这么干,git直接拉代码在生产环境风险很大,php可执行的权限太高也容易产生漏洞!</span>
更多>>
mysql批量删除数据报max_binlog_cache_size不足的问题 deepin20.2.2严重漏洞 指数退避算法 -- 爬虫程序猿的保命符 php用strtotime("monday")获取周一产生的bug linux下如何快速开启一个临时的web服务