oschina git仓库提交webHook触发hexo博客更新

创建一个项目

项目界面

  1. 将服务器上的代码整个打包传到项目上来,使用如下命令
    1.1 git init
    1.2 git add .
    1.3 git commit -m ‘init’
    1.4 git remote add origin ‘your remote ssh address’
  2. 后续就需要配置openresty,解决自动提交webHook触发脚本执行的功能
    2.1 openresty的安装可以参照官网
    2.2 启动还是跟nginx一样的,start nginx
    2.3 配置nginx的配置,执行lua脚本
    2.4 lua脚本中需要验证密码这一块,我暂时没处理,oschina的验证规则是在post body里面有一个参数是password,可以和自己的配置的webHook秘钥进行匹配就可以
    2.5 lua脚本只是简单执行依据脚本命令

    1
    2
    3
    os.execute("bash /opt/lua/hexo.sh");
    ngx.say("OK")
    ngx.exit(200)

    2.6 主要是后续的shell命令,操作的流程是获取git 远程的代码,执行hexo的generate生成静态文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #! /bin/bash
    blog_dir=/opt/blog
    branch=master
    hexo=/root/.nvm/versions/node/v9.11.1/bin/hexo

    cd $blog_dir
    git reset --hard origin/$branch
    git clean -f
    git pull origin master

    cd $blog_dir
    $hexo generate
    echo "success"

    2.7 静态文件的目录是public,前面装好的openresty也可以用作服务代理,将域名的root访问路径指向到public目录即可
    2.8 漏了nginx的转发配置了,有两个 一个是webHook地址,一个是服务器的请求地址

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    server {
    listen 80;
    server_name db101.cn;

    lua_code_cache off;

    location / {
    root /opt/blog/public;
    index index.html index.htm;
    }

    location /hexo/github {
    content_by_lua_file /opt/lua/hexo.lua;
    }
    }

后续就可以当更新了source下面的md文件。可以直接通过域名访问到最新的更新了。也可以修改其他的主体或者配置一类的文件。当有push操作时触发webHook操作,调用服务器的地址,最终更新页面。

上述步骤参考的网址 > https://blog.liaol.net/

Hello World

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment