Github Webhook 实现代码自动部署
打赏作者

half50

github 的话其实不需要把公钥添加到个人账户下的
添加到项目的 deploy keys下即可

334660335

请问是不是要开启php的 exec 和 shell_exec模块?

JellyBool 回复 334660335

是的,这个应该是要开启的

334660335 回复 JellyBool

请问哥哥 这样是否安全呢?应该没问题的吧?

JellyBool 回复 334660335

没有绝对的安全与不安全。相比这个,做好其他的安全措施来得重要的多

334660335 回复 JellyBool

谢谢。好的,我试试。

xuanchangbo

老师,你那个github配置deploy控制器的文件地址是多少?

WhiteInk404

是不是我错过了什么,我怎么没找到laravel项目中的与deploy相关的内容?gist上的这个deployment.php是需要自己添加的吗?

JellyBool 回复 WhiteInk404

我怎么没找到laravel项目中的与deploy相关的内容

这个是什么?Deployment 就是一个方法而已

https://gist.github.com/JellyBool/22cda7e48bfc3467b386dd6785167ae0

WhiteInk404 回复 JellyBool

奇怪的是,我把DeploymentController中deploy函数的内容全部去掉之后webhook尽然起作用了,加上去就出现http500错误。被这个webhook困扰了好久,请您帮忙指点一下,在群里发问几乎没什么用~

JellyBool 回复 WhiteInk404

就是代码写错了呗,你看看具体的 500 错误是什么报错信息

WhiteInk404 回复 JellyBool

这个deploy路由访问不了,根据提示定位到DeploymentController中的代码 if (this>isFromGithub(this->isFromGithub(payload, $signature))执行的是 abort(403)

Perfect丶戈

嘿,JellyBool 我在我的 /usr/local/nginx/html 运行 sudo -Hu www-data ssh-keygen -t rsa,为什么不是在我该目录下生成文件,而是在 /home/nginx/.ssh 这里去了

mengyilingjian 回复 Perfect丶戈

我的也是home目录下,home/www/.ssh

haohexin

这是一个项目的自动部署情况 假如我有多个laravel 项目,是不是该给每个项目创建一个用户?但是这样的话 /var/www 下的.shh里面只能存在一个key,一个服务器中有多个项目都想实现自动部署 该如何处理 求指导

JellyBool 回复 haohexin

你指定不同的 key 就好了啊。。。。

haohexin 回复 JellyBool

不好意思 初学服务器的东西
http://blog.csdn.net/chaihuasong/article/details/37886139
是这里面这样的思路吗

JellyBool 回复 haohexin

恩,可以使用多个 key 的啊

乔泓恺-Jone

请问:shell_exec($command); 返回值是空 是什么情况呢? 这个问题导致没办法同步到服务器
CentOS系统

JellyBool 回复 乔泓恺-Jone

你把 shell_exec log 一下看看

乔泓恺-Jone 回复 JellyBool

嗯 我打印了 是空的 两个命令的返回值都是空

JellyBool 回复 乔泓恺-Jone

那感觉没有执行啊。。你试着在前面执行一个简单的命令试试。

乔泓恺-Jone

恩 试了 在循环里面的command 成功的保存到了log里面 就是shell_exec 没有返回值 ,会不会是www-data权限的问题?

乔泓恺-Jone

Log::info(command);command); ex = shell_exec(command);Log::info(command); Log::info(ex);

[2017-09-01 02:24:09] local.INFO: cd /var/www/git-deploy
[2017-09-01 02:24:09] local.INFO:
[2017-09-01 02:24:09] local.INFO: git pull
[2017-09-01 02:24:09] local.INFO:

JellyBool 回复 乔泓恺-Jone

嗯,应该是权限问题吧。

sandilion

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDT+iXd1RFOVN6kvg12zolaEFNE2Fo5yKlM/dOQ/XhkHK+I6dLF6bqmAV5LKsV/WKoC7vJ5dSHOz5Z4MHy4bZz0dT913DMQ/KYS1/TX/rDiejq2y/n0fkmdZv+eK/1IiXGCufI8pYHzO5K6FcjbyymrZXARSqZBw2EvFLu5yu0X72bjVw7Ds+Yp9Kanz5nELH/neZzRfl8GXtMeOpZzQ834E3BTGu+bVM2hlYCSyK/45V8z1m62fp7F2rLJb+Dee3RFlIykkMZq4N+tzAAKG7VpYnN9MtTh6YgTApnLb9f5ucSF+w1X1jICZVe/LmC0104ZnubJG+p9e2l+AlPN+Lll xush@super
jelly你好,我在/var/www 执行 sudo -Hu xush ssh-keygen -t rsa
但是私钥生成最后不是我的邮箱944395736@qq.com@sandilion
反而生成是我的xush@super xush是一个用户,super是我root别名
这是为什么呀

JellyBool 回复 sandilion

你没有指定 -C 参数自然会这样

sandilion 回复 JellyBool

ssh-keygen -t rsa -C "your_github_email"
先要这样指定吗?

sandilion 回复 JellyBool

我刚刚重新按照步骤来,后面的参数还是xush@super
不是我想看到的944395736@qq.com

JellyBool 回复 sandilion

其实这个 xush@super 也没事,你试试可以用吗

sandilion 回复 JellyBool

好的,我去试试。谢谢,jelly帅哥。

sunnie1992

欧巴,所有项目第一次部署的时候是不是要去服务器上配置.env文件呢