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

Hi,

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

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

<!--more-->

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

  • 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上

<!--hexo 支持emoji:https://https://ppxu.me/2015/12/24/enable-emoji-in-hexo/ -->

  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文件,输入域名即可。

<!-- ***以上3步,可以直接在docker上获取我配置好的镜像

1
2
3
$ docker pull smartbrave/docker-hexo
# 配置完成后,使用下面的命令运行
$ docker run -d -v /www/blog/source/_posts/_config.yml:/www/blog/_config.yml:rw -v /www/blog/source/_posts/source:/www/blog/source:rw -v /www/blog/source/_posts/themes:/www/blog/themes:rw -p 4001:4000 --privileged=true docker.io/smartbrave/docker-hexo bash -c 'cd /www/blog && hexo server'

-->

写作流程

1. 写博客

  1. 登录到服务器,在文章存放目录下(<folder>/source/_post)新建一个md文件,命名为文章名.md
  2. 或者使用hexo new article新建文章,然后编辑;
  3. 编辑文章,完成后保存退出。文章中图片资源可存放在/www/blog/source/images/文件夹下,通过/images/xxx.jpg引用(或通过图床引用,在此不表);

2. 部署到github

  1. 在博客目录下执行:
    1
    $ hexo g -d

若提示找不到git,请执行:

1
$ npm install hexo-deployer-git --save

可能遇到的问题

  1. 若博客无法访问,请检查网络是否连通;没问题之后检查server是否被kill,若被干掉了需要启动server:

    1
    2
    $ cd <folder>
    $ nohup hexo server >/dev/null 2>&1 &

  2. 同理,若无法推送到企业微信,有可能是blog_tools被kill,启动即可;

项目仓库