php中文网最新课程

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

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-

ubuntu php 无法执行exec_利用webhook使php项目自动部署相关推荐

  1. Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3)

    2019独角兽企业重金招聘Python工程师标准>>> Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3) 博客分类: 运维 1.Jenkins 安装完 ...

  2. [Gitlab]使用Webhook实现前端项目自动发布

    喜闻乐见的背景故事时间--承接[prerender-spa-plugin]--微型Vue项目的静态化利器,官网上线之后,就开始琢磨,每次改动都得上服务器部署一下,是不是有点麻烦了,是时候该整个自动化部 ...

  3. Php+WebHook实现项目自动部署 - 关于Git自动部署方案

    序言 测试环境:ubantu14.window10 测试Git平台:coding.net "了解一下" ①. git pull 了解一下 ②. Linux的SSH 了解一下 ③. ...

  4. 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书

    使用https证书的话,强制使用域名 很多商家也都提供免费证书,比如腾讯云提供免费一年GeoTrust DV SSL证书.Let's Encrypt永久免费但需要90天激活一次续约,当然如果要购买证书 ...

  5. ubuntu 定时执行php文件,Ubuntu crontab 定时执行php脚本文件

    什么是Cron和Crontab Unix和Linux系统的各个发行版本基本都支持Cron,Cron /Crontab允许我们在设定的时间自动执行或定时执行某个任务,如应用程序或脚本.更详细的概念和使用 ...

  6. gitlab 自动推送代码到gitee_Gitlab 利用 Webhook+jenkins 实现自动构建与部署

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...

  7. 爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行

    一.CentOS 7 yum 安装与配置 JDK 参考:https://blog.csdn.net/github_38336924/article/details/82221258 1.检查是否已安装 ...

  8. python eel 多线程_利用Eel使JavaScript调用Python程序

    利用Eel使JavaScript调用Python程序 Eel简介 Eel是一个轻量的python桌面GUI开发第三方库, 它使用HTML/JS作为界面开发语言, 但是能够访问所有的python功能, ...

  9. 利用WebHook实现自动部署Git代码

    目录 类型 coding 钩子 github 钩子 环境 服务端:阿里云虚拟主机(Ubuntu16.04) coding 自动部署 WebHook3.0 Windows 10 开发环境 部署 服务器虚 ...

最新文章

  1. Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池
  2. JavaScript实现递归楼梯问题(迭代解决方案)算法(附完整源码)
  3. SSD(Single Shot MultiBox Detector):因为数据集中图像通道数不对导致的训练异常
  4. javascript的性能优化tips
  5. SAP 电商云 Spartacus Schematics 开发环境搭建
  6. 蓝桥杯 数字三角形 贪心+动态规划
  7. P1742 最小圆覆盖
  8. 2017菜鸡C与C++工程师总结,撸码撸码,垃圾专科生撸码人生
  9. c语言中变量的大小,C语言变量定义
  10. 小程序css之圆角边框
  11. sql注入 练手网站_靶场sql注入练手----sqlmap篇(纯手打)
  12. smart原则_用SMART原则,定位好副业目标
  13. 耗纸古文风之四--登高
  14. MAC下如何解压.bin文件
  15. 在开发版上用C语言写实心圆,MFC利用CPen与CBrush绘制实心圆
  16. 再论iPhone Push Notification
  17. 简述基于CPU的机器码运行过程
  18. python200行代码_200行Python代码实现2048
  19. this.$router.push方法,父子如何传值和接收值
  20. PHP开发的仿山楂岛留言程序源码

热门文章

  1. 大整数乘法c语言代码_大整数乘法
  2. 蓝桥杯省赛考点_【蓝桥杯单片机01】从历年决赛真题中寻找单片机常见的考点...
  3. php强类型作用,php类、接口、抽象、trait、强类型使用
  4. 《鸿蒙理论知识05》HarmonyOS概述之下载与安装软件
  5. 购买阿里云ECS服务器忘记终端管理密码或者没有设置
  6. sqlmap (--os-shell)的使用
  7. 自动添加html结束标志,HTML:包含或排除可选的结束标记?
  8. react-native 热更新react-native-pushy集成遇到的问题
  9. 浏览器兼容问题及解决方案
  10. css定位position