New Start

Posted by 如花与食客 on March 14, 2018
   

New Start

1.Blog

Wrodpress + Divi主题 -> Ghost -> Jekyll

一直在搭建个人Blog,但是一直并没有维护起来。在经过几次服务器迁移后,好多数据已经丢失。然后就没有继续维护了,只是用Markdown自己做一些简单的小笔记。 直到有天看到了Jekyll,它只是一个生成静态网页的工具,不需要数据库支持,只用自己保存.md文件即可。

2.环境

CentOS7 + Gitee + huxblog-boilerplate

由于2018年初腾讯云搞活动就一次性买了3年的云主机,用作自己做一些小项目。这次就直接把Blog先放进来。 Gitee作为代码仓库,将Blog的内容进行存储。

在Jekyll的主题的选择上,使用了黄玄大佬开源的一个稳定模板huxblog-boilerplate

3.安装

3-1.安装Jekyll

具体在CentOS中安装Jekyll可参考一下两篇文章:

3-2.自动化部署

在Blog搭建完成后,发现每当我向代码仓库提交代码后,必须在服务器中进行pull和jekyll的更新才可以完成一次Blog的更新,这样子很是不人性化。

正好Gitee提供了WebHooks 设置,我们可以以此来实现当我们本地push了以后,服务器那边可自动进行Pull和jekyll的更新。

a.配置项目公私钥

  • 生产公钥
    ssh-keygen -t rsa -C "[email protected]"  
    
    # Generating public/private rsa key pair...
    # 三次回车即可生成 ssh key
    
  • 查看公钥
    cat ~/.ssh/id_rsa.pub
    # ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
    
  • 添加公钥 add-ssh
  • 测试
    ssh -T [email protected]
    Welcome to Gitee.com, yourname! # 返回,说明正常
    

    b. 配置webhook服务

  • 安装nvm
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
    vim /etc/profile
    #加入下面的内容
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
    source /etc/profile
    nvm install stable # 安装稳定版
    nvm current # 查看当前的版本
    
  • 安装gitee-webhook-handler gitee-webhook-handler是用于处理接收和验证来自Gitee的webhook请求的所有逻辑的Node.js Web服务器。
    mkdir /opt/webhook #创建目录
    cd /opt/webhook
    npm install -g gitee-webhook-handler # 当前的版本为v0.1.2
    
  • 创建对应的webhook服务 新建webhook.js
    vim webhook.js
    

    webhook.js的内容

    var http = require('http')
    var createHandler = require('gitee-webhook-handler')
    var handler = createHandler({ path: '/webhook', secret: 'myhashsecret' })
     
    http.createServer(function (req, res) {
      handler(req, res, function (err) {
        res.statusCode = 404
        res.end('no such location')
     })
    }).listen(7777)
     
    handler.on('error', function (err) {
      console.error('Error:', err.message)
    })
     
    handler.on('Push Hook', function (event) {
      console.log('Received a push event for %s to %s',
        event.payload.repository.name,
        event.payload.ref)
    })
     
    handler.on('Issue Hook', function (event) {
      console.log('Received an issue event for %s action=%s: #%d %s',
        event.payload.repository.name,
        event.payload.action,
        event.payload.issue.number,
        event.payload.issue.title)
    })
    
  • 创建需要执行的脚本 新建执行脚本文件
    vim deploy.sh
    

    deploy.sh内容

    cd /jekyll # 切换至jekyll 目录
      
    git pull xxxx # 拉取内容
      
    pkill -f jekyll # 停止之前的服务
      
    jekyll server --detach # jekyll restart
    

    在这里以后需要修改,不能每次更新一下就让网站关闭在开启。

  • 添加webhook服务 add webhook server
  • 测试服务 add webhook server

    c. pm2

    npm install -g pm2
    pm2 start webhook.js
    pm2 monit # 可以通过此命令查看服务的状态
    

    4.关于Reveal.js

    一个能够帮助我们很轻易地使用 HTML 创建一个漂亮的演示文稿的框架。查看在线 Demo。

reveal.js 有很多功能特性,包括 嵌套幻灯片,Markdown 内容,PDF 导出,演讲注释,以及一个 JavaScript API。