利用github webhook 结合openresty自动更新静态博客
2017-01-14 14:18
916 查看
使用hexo在github pages上弄了一个静态博客,后来觉得访问有点慢,于是放到自己vps上。
对于静态博客的部署非常简单,本来就是html,js,css等静态文件,只要nginx上配置下目录就可以正常访问了。 麻烦的是博客更新的时候,还要去vps上操作更新git pull操作,如果每次在本地commit之后,github仓库能够自动更新到vps上多好啊,于是就用到了webhook的功能。(这里静态文件的生成还是在本地,只是把生成好的静态文件push到github了,所以自动部署没有构建的环节)
Centos6.5
openresty/1.9.3.1
部署静态博客
代码clone到vps上的目录,然后配置nginxserver { listen 80; server_name xxx.info ; location / { alias /www/orangle.github.io/; index index.html index.htm; } }
注意下权限问题 ,配置完成reload nginx 就能访问了。
用来自动更新shell脚本
从github拉取代码,然后强制更新所有内容。git_update.sh
#! /bin/bash blog_dir=/path/to/git/repository git=/usr/bin/git branch=master cd $blog_dir $git reset --hard origin/$branch $git clean -f $git pull dtime=`date` echo "success $dtime" > d.txt
配置webhook
在github上配置这个项目的webhook,然后在openresty中写一个http接口来出来每次github发来的push事件。
webhook的设置文档 ,这里设置成 http://xxx.info/hook
修改nginx配置
server { listen 80; server_name orangleliu.info www.orangleliu.info; lua_code_cache on; location / { alias /www/orangle.github.io/; index index.html index.htm; } location /hook { content_by_lua_file /etc/nginx/hook.lua; } }
lua文件 hook.lua
local signature = ngx.req.get_headers()["X-Hub-Signature"] local key = "xxxxxx" --github上配置的相同 if signature == nil then return ngx.exit(404) end ngx.req.read_body() local t = {} for k, v in string.gmatch(signature, "(%w+)=(%w+)") do t[k] = v end local str = require "resty.string" local digest = ngx.hmac_sha1(key, ngx.req.get_body_data()) if not str.to_hex(digest) == t["sha1"] then return ngx.exit(404) end os.execute("bash /www/blog_update.sh"); ngx.say("OK") ngx.exit(200)
参考文章
相关文章推荐
- 利用github webhook 结合openresty自动更新静态博客
- 利用WebHook实现Github或Coding代码的自动部署
- GitHub利用webhook实现push时项目自动部署
- ANT发布SVN WEB项目到TOMCAT以及利用post-commit自动提交编译更新
- 利用WebHook实现PHP自动部署Git代码
- Jenkins利用GitLab Webhook触发代码提交自动构建任务
- 码云webhook自动更新脚本
- Hexo结合Github-Pages搭建静态博客
- Svn结合hook实现自动发布及多Project管理更新
- Gitlab利用Webhook实现Push代码后的jenkins自动构建
- CentOS利用WebHook实现PHP自动部署Git代码
- 利用WebHook实现PHP自动部署Git代码
- Gitlab利用Webhook实现Push代码后的jenkins自动构建
- PHP 结合 WebHook 实现代码自动部署
- 利用hexo和github搭建静态博客(一)
- Hexo结合Github创建静态博客
- gogs结合git-webhook自动部署
- 利用GitLab webhook来实现触发Jenkins自动操作
- 码云webhook自动更新脚本
- php项目自动部署(利用webhook)