利用hexo搭建博客并推送到企业微信

Hi,

欢迎访问,这是在我司内部使用的一个博客系统。实现流程图如下:

1
2
3
4
5
6
push webhooks
Server(Hexo)---------->repository(github)---------->tools---->企业微信
^ |
| |
| read send msg |
+-----------------------people<------------------------------+

采用这个架构主要有以下这些考虑:

  • hexo是一个轻量级的静态博客框架,利用Node.js带来的超快生成速度,可以让上百个页面在几秒内完成渲染;
  • hexo原生支持Markdown的所有功能;
  • 新建文章一键部署;
  • 丰富的插件和主题支持;
  • 博客的核心是文章,不容有失。因此采用gitlab进行托管;
  • 接入企业微信。发表一篇新文章时会自动推送;

博客搭建流程

  1. 安装hexo,需提前安装好Node.js和git
  2. 建站。执行以下命令:

    1
    2
    3
    $ hexo init <folder>
    $ cd <folder>
    $ npm install
  3. 安装插件

    1
    2
    3
    4
    5
    $ npm install hexo-generator-feed --save
    $ npm install hexo-abbrlink --save #固定链接
    $ npm install hexo-generator-sitemap --save #SEO优化
    $ npm install hexo-math --save #支持LaTeX语法
    $ npm install hexo-deployer-rsync --save #支持部署到vps上
  1. 修改默认配置文件(<folder>/_config.yml),需要修改部分如下。其他配置文件参见这里,可根据需要修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    title: your title
    language: zh-Hans
    permalink: posts/:abbrlink/
    plugin:
    - hexo-generator-feed
    deploy:
    - type: git
    repository: git@github.com:SmartBrave/SmartBrave.github.io.git
    branch: master
    - type: rsync
    host: <主机地址>
    user: <用户名>
    root: <需要放置博客的根目录>
    port: <端口>
    delete: [true|false] #是否删除主机上的旧目录
    verbose: [true|false] #显示调试信息
    ignore_errors: [true|false] #忽略错误
    abbrlink:
    alg: crc32
    rep: hex
    math:
    engine: 'mathjax'
    mathjax:
    src: custom_mathjax_source
    config:
    # MathJax config
    katex:
    css: custom_css_source
    js: custom_js_source
    config:
    # KaTeX config
  2. 可根据需要安装自己喜欢的主题。若文章中用到LaTeX公式,需在主题配置文件中将mathjax下的enableper_page改为true,并在文章头部添加mathjax: true

  3. 下载tools并编译(请参考README)

    1
    2
    3
    $ git clone https://github.com/SmartBrave/blog_tools.git ~/blog_tools
    $ cd ~/blog_tools
    $ go build
  4. 部署

    1
    2
    $ cd ~ && nohup ~/blog_tools >/dev/null 2>&1 &
    $ cd <folder> && nohup hexo server >/dev/null 2>&1 &
  5. 在gitlab仓库中将webhooks配置成tools所监听的地址

  6. 如果要使用自己的域名访问,请在域名控制台添加一条CNAME记录,指向SmartBrave.github.io.git,并在<folder>/source目录下创建CNAME文件,输入域名即可。