github webhook 实现代码自动部署 踩坑!! 附加git&coding webhook部署代码
踩坑:
1、php程序执行linux命令是以webserver的user用户(如apache 、www……)操作的,需要在/etc/sudoers添加用户免密码操作权限;
%apache ALL=(ALL) NOPASSWD:ALL
2、以webserver用户执行的命令都只能在其默认根目录中进行,如apache默认根目录在/usr/share/httpd ;nginx默认根目录在/usr/share/nginx/html;
3、若主机配置多站点,域名指向指定目录,即用户每执行一条命令后都会返回该指定目录;
4、git用户公钥填写root用户下.ssh生成公钥,项目部署公钥则是webserver用户下.ssh生成的公钥,如apache用户的.ssh目录在/usr/share/httpd/
git webhook 勾子:
<?php
//test7
class Deploy
{
public function deploy()
{
$commands = ['cd /usr/share/httpd/test','git pull'];
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];
$payload = file_get_contents('php://input');
error_log($payload);
if($this->isFromGithub($payload,$signature)){
foreach ($commands as $command) {
shell_exec($command);
}
http_response_code(200);
}else{
exit('error,bad request');
}
}
private function isFromGithub($payload,$signature)
{
return 'sha1='.hash_hmac('sha1',$payload,'2e4dd3e73a4b2f854357ba21a8bdd3fc',false) === $signature; // 2e4dd…… 就是密钥
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$deploy = new Deploy();
$deploy->deploy();
}
?>
coding webhook 勾子:
<?php
//test11
class Deploy
{
public function deploy()
{
$commands = ['cd /usr/share/httpd/test','git pull'];
$token = '2e4dd3e73a4b2f854357ba21a8bdd3fc';
$payload = file_get_contents('php://input');
$json = json_decode($payload,true);//error_log($payload);
if(!empty($json['token']) && $json['token'] == $token){
foreach ($commands as $command) {
shell_exec($command);
}
http_response_code(200);
}else{
exit('error,bad request');
}
}
}
if($_SERVER['REQUEST_METHOD']== 'POST'){
$deploy = new Deploy();
$deploy->deploy();
}
github webhook 实现代码自动部署 踩坑!! 附加git&coding webhook部署代码的更多相关文章
- IdentityServer 部署踩坑记
IdentityServer 部署踩坑记 Intro 周末终于部署了 IdentityServer 以及 IdentityServerAdmin 项目,踩了几个坑,在此记录分享一下. 部署架构 项目是 ...
- [代码修订版] Python 踩坑之旅 [进程篇其四] 踩透 uid euid suid gid egid sgid的坑坑洼洼
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 公 ...
- 【踩坑经历】一次Asp.NET小网站部署踩坑和解决经历
2013年给1个大学的小客户部署过一个小型的Asp.NET网站,非常小,用的sqlite数据库,今年人家说要换台服务器,要重新部署一下,好吧,虽然早就过了服务时间,但无奈谁叫人家是客户了,二话不说,上 ...
- React Native Android配置部署踩坑日记
万事开头难 作为一只进入ECMAScript世界不久的菜鸟,已经被React Native的名气惊到了,开源一周数万星勾起了我浓烈的兴趣.新年新气象,来个HellWorld压压惊吧^_^(故意少打个' ...
- Mac系统STF自动化环境搭建及部署踩坑记录
因为公司需要寻找一个免root的自动化测试方案,所以以前做的老方案需要被替代.一阵搜寻找到了这个框架,但是部署起来很是折腾,搞了一下午终于搞定,顺便记录一下过程,有需要的自取. 转载请注明出处:htt ...
- github踩坑之git命令收集与整理(windows)
最近开始又捡起git,第一家公司用的就是git,一直掌握的也不深刻,就知道常用的几个命令,虽然现在用svn,但是觉得git还是不能丢,遂又捡起来了.先总结一部分目前练习用到的,慢慢填补吧~ githu ...
- [代码修订版] Python 踩坑之旅进程篇其五打不开的文件
目录 1.1 踩坑案例 1.2 填坑和分析 1.2.1 从程序优化入手 1.2.2 从资源软硬限入手 1.4.1 技术关键字 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: ...
- windows生成github密钥并推送文件踩坑
强调官方文档最可靠,百度踩坑很浪费时间,建议去寻找一手数据源头 github官方文档提供了帮助 第一步 查看密钥 如果您还没有 SSH 密钥,则必须生成新 SSH 密钥. 如果您不确定是否已有 SSH ...
- Quay v3.5.1 部署踩坑
官方文档好久没更新了 拿来部署了一个最新的软件 把我坑死了 首先你需要一个podman OR docker 官方用podman 本文同 设置 Postgres 官方推荐数据库 $ mkdir -p $ ...
随机推荐
- 配置文件schema约束
解释:https://blog.csdn.net/zh15732621679/article/details/79074380 操作:https://blog.csdn.net/lhg_55/arti ...
- 快速挂载iso文件到虚拟机系统
在vm软件菜单栏那里选择vm,再选择弹出菜单最下面的设置,如图,找到实体机上的iso文件,保存. 这时候,在虚拟机ls /dev会发现有一个cdrom,这个就是我们的iso文件,不过我们还需要把它挂载 ...
- Tomcat三种项目部署方式
第一种:直接将项目放在webapps目录下 材料:项目文件名hello,文件hello.html如图: 访问地址: 注释:hello 项目文件名 hello.html 访问的文件名字 第二种:修改c ...
- <------------------字节流--------------------->
字节流: 输入和输出:1.参照物都是java程序来惨遭 2.Input输入,持久化上的数据---->内存 3.Output输出,内存--->硬盘 字节输出流: OutputStream: ...
- jvm系列(1):JVM问答
一:JVM基础知识 1)Java 是如何实现跨平台的? 注意:跨平台的是 Java 程序,而不是 JVM.JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 ...
- Gravitee.io api gateway 试用
以前写过几篇关于整体介绍的以及 使用docker 运行的简单说明,有了docker-compose 环境我们可以 方便的进行测试使用了. 环境准备 docker-compose 文件 versio ...
- ThinkPHP3.2 where方法的使用
where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询.表达式查询.快捷查询.区间查询.组合查询在内的查询操作.where方法 ...
- linux修改文件所有者和文件所在组 【转载】
chgrp 用户名 文件名 -R chown 用户名 文件名 -R -R表示递归目录下所有文件 以上部分已验证 地址原贴
- ES6 中 Class 与 TypeScript 中 Class 的区别(待补充)
ES6 中 Class 与 TypeScript 中 Class 的区别(待补充)
- 利用django如何解析用户上传的excel文件
https://www.jb51.net/article/119452.htm 前言 我们在工作中的时候,会有这种需求:用户上传一个格式固定excel表格到网站上,然后程序负债解析内容并进行处理.我最 ...