前言:
如果我们需要把项目部署到自己的服务器上面,那么在使用GitHub的时候,每次push代码后,要手动到服务器上git putt一下。为了省时省力我们可以编写一个脚本实现自动部署。使用GitHub上的webhook功能就能实现此功能。
我的服务器是CentOS7.6,Php是7.2,如不需要部署,则可直接进行下一篇文章。
配置ssh key:
执行ssh-keygen
,一路回车就可以,之后在/home/www/.ssh/hui会生成id_rsa和id_rsa.pud两个文件,cat id_rsa.pud
查看id_rsa.pud文件内容并复制。
登录至GitHub,依次点击Settings,SSH and GPG keys,New SSh Key。将复制的内容添加到 Key 中, Title 可以自己随意设定,最后点击 Add SSH Key。回到服务器shell界面,输入 ssh -T git@github.com
验证是否添加成功。
1 | Hi OldManXie! You've successfully authenticated, but GitHub does not provide shell access. |
配置Webhook:
登录到GitHub,进入你的仓库,依次点击Settings,Webhook。
填写Payload URL,这是即将编写的脚本所放的地方,必须要在公网可以访问。
Content type,数据类型,选择你所熟悉的,我这里选择的是application/json格式。
Secret,这个是密码,为了安全起见,有必要填写一下,当然你就不想写也是可以的。
Which events would you like to trigger this webhook?,触发事件,我选择Just the push event.只是push的时候触发。
然后点击添加就可以了。
编写Php脚本:
这个脚本用什么语言写都是一样的,因为我熟悉并且服务器搭建的就是Php,所以就用Php了,因为7.0不支持$HTTP_RAW_POST_DATA了,所以选择相应的版本。
Php > 7.0脚本如下
1 |
|
Php < 7.0脚本如下
1 |
|
把你的脚本放在之前GItHub上面配置的地方即可。
服务器配置:
进入到我们想要存放项目的目录后,GIt初始化,然后添加远程仓库映射,指定想要pull的远程分支,指定默认主机。
1 | $ mkdir hexo.sbblog.top //创建文件夹 |