ubuntu php 无法执行exec_利用webhook使php项目自动部署
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项目自动部署相关推荐
- Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3)
2019独角兽企业重金招聘Python工程师标准>>> Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3) 博客分类: 运维 1.Jenkins 安装完 ...
- [Gitlab]使用Webhook实现前端项目自动发布
喜闻乐见的背景故事时间--承接[prerender-spa-plugin]--微型Vue项目的静态化利器,官网上线之后,就开始琢磨,每次改动都得上服务器部署一下,是不是有点麻烦了,是时候该整个自动化部 ...
- Php+WebHook实现项目自动部署 - 关于Git自动部署方案
序言 测试环境:ubantu14.window10 测试Git平台:coding.net "了解一下" ①. git pull 了解一下 ②. Linux的SSH 了解一下 ③. ...
- 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书
使用https证书的话,强制使用域名 很多商家也都提供免费证书,比如腾讯云提供免费一年GeoTrust DV SSL证书.Let's Encrypt永久免费但需要90天激活一次续约,当然如果要购买证书 ...
- ubuntu 定时执行php文件,Ubuntu crontab 定时执行php脚本文件
什么是Cron和Crontab Unix和Linux系统的各个发行版本基本都支持Cron,Cron /Crontab允许我们在设定的时间自动执行或定时执行某个任务,如应用程序或脚本.更详细的概念和使用 ...
- gitlab 自动推送代码到gitee_Gitlab 利用 Webhook+jenkins 实现自动构建与部署
之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...
- 爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行
一.CentOS 7 yum 安装与配置 JDK 参考:https://blog.csdn.net/github_38336924/article/details/82221258 1.检查是否已安装 ...
- python eel 多线程_利用Eel使JavaScript调用Python程序
利用Eel使JavaScript调用Python程序 Eel简介 Eel是一个轻量的python桌面GUI开发第三方库, 它使用HTML/JS作为界面开发语言, 但是能够访问所有的python功能, ...
- 利用WebHook实现自动部署Git代码
目录 类型 coding 钩子 github 钩子 环境 服务端:阿里云虚拟主机(Ubuntu16.04) coding 自动部署 WebHook3.0 Windows 10 开发环境 部署 服务器虚 ...
最新文章
- Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池
- JavaScript实现递归楼梯问题(迭代解决方案)算法(附完整源码)
- SSD(Single Shot MultiBox Detector):因为数据集中图像通道数不对导致的训练异常
- javascript的性能优化tips
- SAP 电商云 Spartacus Schematics 开发环境搭建
- 蓝桥杯 数字三角形 贪心+动态规划
- P1742 最小圆覆盖
- 2017菜鸡C与C++工程师总结,撸码撸码,垃圾专科生撸码人生
- c语言中变量的大小,C语言变量定义
- 小程序css之圆角边框
- sql注入 练手网站_靶场sql注入练手----sqlmap篇(纯手打)
- smart原则_用SMART原则,定位好副业目标
- 耗纸古文风之四--登高
- MAC下如何解压.bin文件
- 在开发版上用C语言写实心圆,MFC利用CPen与CBrush绘制实心圆
- 再论iPhone Push Notification
- 简述基于CPU的机器码运行过程
- python200行代码_200行Python代码实现2048
- this.$router.push方法,父子如何传值和接收值
- PHP开发的仿山楂岛留言程序源码
热门文章
- 大整数乘法c语言代码_大整数乘法
- 蓝桥杯省赛考点_【蓝桥杯单片机01】从历年决赛真题中寻找单片机常见的考点...
- php强类型作用,php类、接口、抽象、trait、强类型使用
- 《鸿蒙理论知识05》HarmonyOS概述之下载与安装软件
- 购买阿里云ECS服务器忘记终端管理密码或者没有设置
- sqlmap (--os-shell)的使用
- 自动添加html结束标志,HTML:包含或排除可选的结束标记?
- react-native 热更新react-native-pushy集成遇到的问题
- 浏览器兼容问题及解决方案
- css定位position