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

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

               push                       webhooks
Server(Hexo)---------->repository(github)---------->tools---->企业微信
    ^                                                            |
    |                                                            |
    |       read                            send msg             |
    +-----------------------people<------------------------------+

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

博客搭建流程

$ hexo init <folder>
$ cd <folder>
$ npm install
$ 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上
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
$ git clone https://github.com/SmartBrave/blog_tools.git ~/blog_tools
$ cd ~/blog_tools
$ go build
$ cd ~ && nohup ~/blog_tools >/dev/null 2>&1 &
$ cd <folder> && nohup hexo server >/dev/null 2>&1 &

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

$ 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. 在博客目录下执行:
$ hexo g -d

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

 $ npm install hexo-deployer-git --save

可能遇到的问题

  1. 若博客无法访问,请检查网络是否连通;没问题之后检查 server 是否被 kill,若被干掉了需要启动 server:
$ cd <folder>
$ nohup hexo server >/dev/null 2>&1 &
  1. 同理,若无法推送到企业微信,有可能是 blog_tools 被 kill,启动即可;
项目仓库