设置webhook_利用webhook使php项目自动部署

本文介绍了如何通过设置webhook实现PHP项目自动部署。当push代码时,webhook触发url请求,执行服务器上的php脚本来运行git命令,从而自动更新代码。主要涉及git项目的webhook设置和服务器端的webhook.php文件配置,使用shell_exec()函数执行git pull命令。
摘要由CSDN通过智能技术生成
82b966cc83a05b4058b1fa420d73d66d.png

php中文网最新课程

每日17点准时技术干货分享

a4a461e67ada13634d94c503c0018163.png

8e02de2635236a854314942fb145e2f8.gif

1.先来讲一下自动部署的原理,一般在我们push代码的时候,可以自动请求webhook中设置的url,完成一次请求与响应。

那么只要我们设置的url地址请求的php文件内容是执行命令行git push命令,则可以实现每次在本地push推送一次代码到远端,服务器就会自动git pull拉取最新的分支。

2.那么我们需要设置的就是两个地方:

①git项目的webhook设置:

一般在我们托管代码的平台,在项目设置里都会有一项webhook设置,里面一般只有一条内容,那就是url的设置,这里我设置的是

http://www.xxxxx.com/webhook.php

(很明显,我在网站的根目录扔了一个webhook.php文件,那么每次我向远端推送代码的时候,我网站的webhook.php文件都会被访问到)

②服务器端(代码运行位置)的钩子文件(webhook.php)设置:

$command = 'cd 代码位置';$output = shell_exec($command);$command = 'git pull';$output = shell_exec($command);print $output;

我这里就是简单的两句,先cd命令进入到相应目录,然后执行git pull命令

主要就是shell_exec()函数的使用,这个是php执行命令行的函数,同学们可以自己百度具体介绍

这里要特别说明的是,我之前执行shell_exec()命令的时候,服务器会无响应,卡死,于是我用一句

$output = shell_exec('ls');print_r($output);
指令测试,发现也超时,很奇怪,所以一直搁置来着,也想不明白怎么回事,毕竟就三五行代码,也不知道什么原因让它一直请求超时。 后来过了两个月我想会不会是当初print的字符串编码问题? 于是便有了下面的几句代码:
$encode = mb_detect_encoding($output, array('ASCII','GB2312','GBK','UTF-8'));$trans = iconv( $encode, "UTF-8",$output);print $trans;
然后竟然可以执行了。 。 。 我也想不起来之前到底是什么原因shell_exec()一直超时,又遇到的小伙伴可以试试不打印返回内容,或者将打印内容编码处理一下。 不过相信遇到这个恶心问题的小伙伴还是少数。

-END-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值