利用webhook使php项目自动部署

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()一直超时,又遇到的小伙伴可以试试不打印返回内容,或者将打印内容编码处理一下。不过相信遇到这个恶心问题的小伙伴还是少数。

本文转自:https://www.php.cn/php-weizijiaocheng-440540.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一 走过懵懂与青涩,我们终将渐趋平和与沉静。就像这一摞的日记本里所记载的字句那样,终归会从热烈又张扬,渐渐变得内敛...
    wbsy001阅读 4,053评论 7 10
  • 焦虑是不知不觉之间漫上心头的,然后就再也挥散不去了。 打开招编考试的报名页面,猛然惊觉自个已经是三十出头的人了,二...
    葳蕤自有光阅读 747评论 0 2
  • 假期上班第一天,新的一年,新的一周,新的一月,按说是要有新的面容迎接的,新的自我,新的积极的姿态,可是,人在这个环...
    cc08阅读 975评论 0 0
  • 每天中午午餐,就是和儿子一起絮絮叨叨的时光。这个时候,最放松,最惬意。我和儿子天南海北,什么事情都会拿来说...
    灵犀1981阅读 4,338评论 1 1