更换VPS地址

真是坑爹,最近几天VPS服务器的地址ping不通了,麻蛋!!!

不过没有关系,我更换了一个VPS服务器!


huaji

林李大战

一个时代过去了!对我又老了四岁真棒!


林李大战

又到单身狗节了

单身狗节我在干啥?


恩闲的蛋疼去跑步发现跑步都没有以前快了真棒!以前我可是10公里配速4分半的男人现在不仅不持久了而且还死慢真棒😳


Run_Run_Run


恩看看看这是我以前记录😳


Run_Run_Run_Record

如何使用Github的webhooks服务实现HEXO博客的自动部署

Github的Webhooks服务是什么

简单来说,在Github网站上,你可以设置一些监听事件,当这些事件被触发后,Github会向特定的url地址上发送一个http post请求,一个监听事件需要绑定在一个组织或者仓库上,对于每个组织或者仓库,你最多可以配置20个监听事件。


如何配置Github的监听事件

进入你的Github仓库,点击Settings按钮后,然后点击左侧Webhooks & services按钮,然后再点击add webhook即可出现下图所示界面。首先,需要在Payload URL栏配置url地址,我的博客部署在我买的vps上,所以我只需要配置我的vps服务器的ip地址加上特定的端口号就可以,形如http://***.**.**.**:port/path,当监听事件触发后,github会向该地址发送一个post请求,然后配置content type类型,在secret栏输入密钥,这个密钥在写监听程序的时候需要用到。配置完成后,点击add webhook按钮,一个webhook服务就配置完成了。
webhook_config


如何响应github发出的post请求?

本文以node.js为例,介绍如何写一个简单的服务去响应github的post请求。在阅读之前,可能需要你掌握shell脚本、javascript、node.js的基础,不然可能看不明白。首先,你需要安装github-webhook-handler,执行npm install github-webhook-handler,安装完成后,新建一个js文件,本文是deploy.js,代码如下:

var http = require('http')
var createHandler = require('github-webhook-handler')
var handler = createHandler({ path: '/****', secret: '*****' })//secret一定要和github上配置的一致
// 上面的 path 保持和 GitHub 后台设置的一致

function run_cmd(cmd, args, callback) {
  var spawn = require('child_process').spawn;
  var child = spawn(cmd, args);
  var resp = "";

  child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
  child.stdout.on('end', function() { callback (resp) });
}

http.createServer(function (req, res) {
  handler(req, res, function (err) {
    res.statusCode = 404
    res.end('no such location')
  })
}).listen(6666)//这里看到监听的是6666端口,所以在github上配置的url如果是ip+port的形式,那么port也是6666

handler.on('error', function (err) {
  console.error('Error:', err.message)
})

handler.on('push', function (event) {
  console.log('Received a push event for %s to %s',
    event.payload.repository.name,
    event.payload.ref);
  run_cmd('/bin/sh', ['./deploy.sh'], function(text){ console.log(text) });
  //上面那行代码表示执行本文件所在目录下的shell脚本deploy.sh
    })

js文件完成后,在js文件所在目录下新建deploy.sh脚本,我的脚本内容如下:

#!/bin/bash
PORT=80
CUR_PATH=`pwd`  
WEB_PATH=${CUR_PATH}"/.."
WEB_USER='apple'
WEB_USERGROUP='staff'

echo "Start deployment"
cd $WEB_PATH
echo "pulling source code..."
git reset --hard origin/master
git clean -f
git pull
git checkout master
echo "changing permissions..."
chown -R $WEB_USER:$WEB_USERGROUP $WEB_PATH
NUM=`ps -a | grep hexo | grep -v grep | head -n 1 | awk '{print $2}'` #取出hexo进程的pid
if [ -n "$NUM" ];then
        echo "kill hexo process pid: $NUM"
    kill -9 $NUM
else
        echo "hexo process not found"
fi
HEXO_BASH=`which hexo` 
HEXO_GENERATE=${HEXO_BASH}" generate"            #执行hexo generate命令
HEXO_START_SERVER=${HEXO_BASH}" server -p $PORT &"   #在后台启动hexo服务
echo "HEXO_GENERATE: $HEXO_GENERATE"
eval $HEXO_GENERATE
echo "HEXO_START_SERVER: $HEXO_START_SERVER"
eval $HEXO_START_SERVER 
echo "Finished."

shell脚本完成后,需要安装forever,forever是一个让node.js程序实现自启动的工具,执行npm install forever安装forever。安装完成后,只需要执行forever start ./deploy.js即可让deploy.js在后台启动。至此,github的webhooks服务就配置完了。如果一切正常,当你在本地修改hexo博客内容并向github上push更新时,你的博客所在的服务器就会响应github发出post连接,重新部署hexo服务,这样,你的博客就是你更新后的状态了。当github发送一个post请求时,你可以在github上看到是否成功。
webhook_result

如何用HEXO搭建个人博客

HEXO是什么

首先,HEXO是一个用node.js实现的十分简洁、优雅的博客框架,用它来搭建个人博客非常的方便,HEXO支持Markdown,配合HEXO主题,我们可以使用Markdown快速的写出漂亮的博客。


如何安装HEXO

首先,需要在电脑上安装node.js,如何安装node.js? (最好安装cnpm,可以确保安装速度)。安装完node.js,下面就要进行HEXO的安装,HEXO本身也是一种node.js的第三方组件。安装HEOX很简单,只需要执行npm install -g hexo-cli 。至此,HEXO就安装完成了。


如何使用HEXO搭建博客?

关于这部分内容,请参考HEXO官方文档,毕竟官方文档才是最准确的。