Coding Webhook 自动部署Git项目
打赏作者

chenxin

刚刚看了安正超的文章,自己弄了一遍居然没有成功!

chenxin

站长的数据库的可视化软件是什么名字!急需啊,刚刚更新了mac系统10.12,奶奶的熊,workbench打开后数据表显示不出来了!晕菜!

chenxin 回复 JellyBool

好的好的!谢谢!

chenxin

你这个网站是部署在哪里的?阿里云还是vultr?还有个问题,一般这个用户的数据是要单独放在一个服务器上吗?比如说阿里云数据库?望普及一下盲点!

JellyBool 回复 chenxin

现在我全部用的是 Ucloud,你可以使用负载均衡。我后面会录一整个系列视频说服务器架构的知识。

jaynele 回复 JellyBool

期待服务器架构内容

yaoye6262

这个 Webhook 部署有点懵 公钥和个人信息的ssh钥都明白 就是这个Webhook!使用laravel框架 不知道应该怎么操作

JellyBool 回复 yaoye6262

额…不用蒙的啊,就理解它是一个触发了post 理由的自动机制就好了

yaoye6262 回复 JellyBool

问题是在服务器web目录里创建一个hook目录 里面创建一个index.php ! 然后回到coding填写Webhook的时候 url填写自己的域名后面加上 /hook/index.php ?? 可是我的web服务器访问的是laravel的public 这样怎么给coding的webhook发送请求?

yaoye6262 回复 JellyBool

webhook成功了!就是提交的时候 服务器不会自动更新代码!是怎么回事哦?

JellyBool 回复 yaoye6262

检查执行命令的用户和权限有没有对就好了,基本就是这样

yaoye6262 回复 JellyBool

是git用户 还是coding??

JellyBool 回复 yaoye6262

执行 git pull 的用户和权限啊

你看看上面给你的视频

yaoye6262 回复 JellyBool

ssh-keygen -t rsa -C "admin@xsooo.com" 这里用户公钥这个邮箱指的是不是coding的账号?

JellyBool 回复 yaoye6262

恩,你就用那个嘛

yaoye6262 回复 JellyBool

…我coding注册的是个性账号 不是邮箱!!

JellyBool 回复 yaoye6262

额。。这只是一个 id,没关系的。你用哪个邮箱应该没啥关系

yaoye6262 回复 JellyBool

…现在就是搞不懂为啥不会自动更新呢 公钥和部署公钥都已经设置好了 Webhook也是请求成功!点击测试 也是成功!我还把服务器项目删除 然后按照上面的第一次克隆的命令执行 然后带本地更新代码 之后git push ,就不明白为什么服务器没有自动更新!

JellyBool 回复 yaoye6262

哎。。。。你看一下 laravel 的 log,或者你把每一步的执行 Log 一下,再看看

GOD_Nt 回复 JellyBool

我这边也是同样的问题
而且日志也打印出来了,但是还是不能更新
hook代码

$target = '/var/www/myBlog'; // 生产环境web目录

        $token = 'fifi1993';

        $json = json_decode(file_get_contents('php://input'), true);

        if (empty($json['token']) || $json['token'] !== $token) {
            exit('error request');
        }
        Log::info("POST token 验证成功");
        $cmd = "sudo -Hu www cd $target && git pull";
        Log::info($cmd);
        shell_exec($cmd);
        Log::info("shell 命令行执行成功");

输出的日志:


[2017-04-21 10:49:28] local.INFO: POST token 验证成功
[2017-04-21 10:49:28] local.INFO: sudo -Hu www cd /var/www/myBlog && sudo -Hu www git pull
[2017-04-21 10:49:28] local.INFO: shell 命令行执行成功

fengfuyun52 回复 GOD_Nt

我这边也是同样的问题,不知道是哪里出错

fengfuyun52 回复 GOD_Nt

我也有同样的问题呢,你的最后是怎么处理的呀

GOD_Nt 回复 fengfuyun52

没解决,你搞好了吗

maokeyang

老大,请教个问题 我目前在试试自动部署通过coding 看超哥的文档到了下面这一步
部署公钥
sudo -Hu apache ssh-keygen -t rsa # 请选择 “no passphrase”,一直回车下去
sudo cat /var/www/.ssh/id_rsa.pub # 查看生成的密钥内容,复制全部
我运行出来的是(我的环境centos7 nginx1.10 php7 php-fpm的以nginx用户 nginx也是以nginx用户运行)

sudo -Hu nginx ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/cache/nginx/.ssh/id_rsa):
Could not create directory ‘/var/cache/nginx/.ssh’: Permission denied
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
open /var/cache/nginx/.ssh/id_rsa failed: No such file or directory.
Saving the key failed: /var/cache/nginx/.ssh/id_rsa.
我想问一下 生成的id_rsa 怎么会自动到 /data/www/.ssh里面去

JellyBool 回复 maokeyang

你没有创建这个目录:

Could not create directory '/var/cache/nginx/.ssh': Permission denied

这个 nginx/.ssh

maokeyang 回复 JellyBool

恩 这个错误是这样的 但是 我理解的是你们正常生成的id_rsa.pub应该让他在 /data/www/.ssh里面吗

JellyBool 回复 maokeyang

当前目录下的 .ssh 目录

DevilAngel

视频中的 Laravel 部署相关的代码. 作者可以放到回复中么? 感谢 : )

biggerdong

把项目放到服务器运行后,使用了webhook的话,当项目添加新功能时,在本地调试成功后,直接把本地代码推到服务器就好了么?也就是说,服务器和本地共享一份代码?

DevilAngel

Coding 那里正常. 但是服务器上的代码不会自动更新 -,-

salamander-mh

webhook就是服务器会发个post请求

假如_丶
sudo cat id_rsa.pub
并没有生成 id_rsa.pub 错误提示: cat: id_rsa.pub: No such file or directory
JellyBool 回复 假如_丶

cat id_rsa.pub 是不会生成文件了,只是获取内容而已。你要生成 rsa key

happyqian

@JellyBook 为什么我用sudo -Hu www-data ssh-keygen -t rsa生成的公钥在/home/www-data/.ssh下,不是在/var/www/.ssh

JellyBool 回复 happyqian

你执行这个命令的时候是在哪个目录?使用的是哪个用户?

ayaup

@JellyBool, 按照视频配置好了,webhook,测试也正常,有200状态码,客户端git push 到coding上,服务器无法自动git push ,在服务器上 手动git pull,是ok的。 赶紧hook下的index.php有问题,请大神指点,index按照博客上的文件写的。无法出发git pull。。

JellyBool 回复 ayaup

服务器无法自动git push。
coding 有 push 的吧。

这种基本是权限问题。

ayaup

自己电脑push pull都可以,服务器上www用户git pull 也是可以,唯独hook/index.php 方式无法运行。

ayaup

我coding上测试不行,去码云测试也是如此。网站直接访问 webhook的地址,直接报错error request,token自己随便设置及后台生成的私人令牌 都报错。求解。

746019546

部署脚本可以共享么?