使用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上的目录,然后配置nginx

server {
        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自动更新静态博客的更多相关文章

  1. 利用Github和Hexo搭建独立的个人博客--基础篇

    利用Github和Hexo搭建独立的个人博客--基础篇 摘要:本文主要参考了使用hexo和Github上创建自己的博客.如何搭建一个独立博客--简明Github Pages与Hexo教程和使用GitH ...

  2. 利用GitHub和Hexo打造免费的个人博客

    每个程序猿都需要一个个人博客,目前广泛出现在大家视野里的有CSDN.博客园.简书,但是他们却没有给用户一个专属的站点.一个好记的域名.你需要一个https://xxx.xxx.xxx/格式的网址,一个 ...

  3. Github、Jekyll 搭建及优化静态博客方法指南

    尝试自己写 Blog 的人,一般会经历三个阶段. 第一阶段,刚接触 Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉 ...

  4. Octopress创建GitHub Pages——基于代码托管的静态博客

    Github Pages是静态网页来的,官方也半认可了它的博客用途,代码挂在github上,随时都可以更改,算是不错的一种尝试,因为它是静态的,所以在表现上会自由得多,但是,同样因为它是静态的,管理上 ...

  5. 利用Github Pages创建的Jekyll模板个人博客添加阅读量统计功能

    目录 前言 准备工作 模板文件修改 写在最后 内容转载自我自己的博客 @(文章目录) 前言 Jekyll 是一个简单的免费的 Blog 生成工具,类似 WordPress .它只是一个生成静态网页的工 ...

  6. 开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程

    目录 基本原理 方法1 - 本机Windows下建站 (力荐) 下载安装node.js 用管理员权限打开命令行,安装hexo-cli和hexo 下载安装git 初始化hexo 使用hexo gener ...

  7. 【一】Ubuntu14.04+Jekyll+Github Pages搭建静态博客

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

  8. Hexo搭建Github静态博客

    1. 环境环境 1.1 安装Git 请参考[1] 1.2 安装node.js 下载:http://nodejs.org/download/ 可以下载 node-v0.10.33-x64.msi 安装时 ...

  9. 使用Hexo搭建Github静态博客

    1. 环境环境 1.1 安装Git 默认配置就好 1.2 安装node.js 下载:http://nodejs.org/download/ 安装时直接保持默认配置即可. 2. 配置Github 1.1 ...

随机推荐

  1. python操作mongodb

    # python操作mongodb # 首先,引入第三方模块pymongo,该模块是python用来操作mongodb的 import pymongo # 第二步,设置ip地址,以及表格名称,表格名字 ...

  2. 对return函数的认识

    例1: def funOut(): def funIn(): print('宾果!你成功访问到我啦!') return funIn() #注意这里return的是funIn()即是一个函数 funOu ...

  3. selenium用法详解

    selenium用法详解 selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题. 模拟浏览器进行网页加载,当requests,urllib无法正常获取 ...

  4. IOS 中openGL使用教程4(openGL ES 入门篇 | 离屏渲染)

    通常情况下,我们使用openGL将渲染好的图片绘制到屏幕上,但有时候我们不想显示处理结果,这时候就需要使用离屏渲染了. 正常情况下,我们将屏幕,也就是一个CAEAGLLayer对象作为渲染目标,离屏渲 ...

  5. mysql zip 文件安装

    1.下载 https://dev.mysql.com/downloads/mysql/ 2.解压,配置环境变量 MYSQL_HOME:D:\mysql path后面加 :%MYSQL_HOME%\bi ...

  6. Plupload 上传控件使用指南

    本文转载至(感谢原作者分享):http://www.cnblogs.com/2050/p/3913184.html#plupload_doc2 我之前写过一篇文章<文件上传利器SWFUpload ...

  7. [LeetCode] Course Schedule III 课程清单之三

    There are n different online courses numbered from 1 to n. Each course has some duration(course leng ...

  8. 合并两个list,不包含重复的对象

    package com.compare.test; import java.util.ArrayList;import java.util.Collections;import java.util.L ...

  9. vba打开输入文件

    Sub fileCreate2() Dim folderPath, fileName, s As String Dim fs, fo, fc, f As Object folderPath = &qu ...

  10. 【NOIP 2017】逛公园

    Description 策策同学特别喜欢逛公园.公园可以看成一张N个点M条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要 ...