利用 hexo 搭建博客并推送到企业微信
欢迎访问,这是在我司内部搭建使用的一个博客系统。实现流程图如下:
push webhooks
Server(Hexo)---------->repository(github)------------>tools--->企业微信
^ |
| |
| read send msg |
+---------------------people<--------------------------------+
采用这个架构主要有以下这些考虑:
- hexo 是一个轻量级的静态博客框架,利用 Node.js 带来的超快生成速度,可以让上百个页面在几秒内完成渲染;
- hexo 原生支持 Markdown的所有功能;
- 新建文章一键部署;
- 丰富的插件和主题支持;
- 博客的核心是文章,不容有失。因此采用 gitlab 进行托管;
- 接入企业微信。发表一篇新文章时会自动推送;
- ...
博客搭建流程
- 安装 hexo,需提前安装好 Node.js 和 git
- 建站。执行以下命令:
$ 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上
- 修改默认配置文件(
<folder>/_config.yml),需要修改部分如下。其他配置文件参见这里,可根据需要修改。
title: your title
language: zh-Hans
permalink: post/: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_mathjaxsource
config:
# MathJax config
katex:
css: custom_csssource
js: custom_jssource
config:
# KaTeX config
- 可根据需要安装自己喜欢的主题。若文章中用到 LaTeX 公式,需在主题配置文件中将 mathjax 下的 enable 和 per_page 改为
true,并在文章头部添加mathjax: true。 - 下载 tools 并编译(请参考 README)
$ 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 &
- 在 gitlab 仓库中将 webhooks 配置成 tools 所监听的地址
**以上3步,可以直接在 docker 上获取我配置好的镜像**
$ docker pull smartbrave/docker-hexo
配置完成后,使用下面的命令运行
$ docker run -d -v /www/blog/source/_post/_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. 写博客
- 登录到服务器,在文章存放目录下(
<folder>/source/_post)新建一个 md 文件,命名为文章名.md; - 或者使用
hexo new article新建文章,然后编辑; - 编辑文章,完成后保存退出。文章中图片资源可存放在
/www/blog/source/images/文件夹下,通过/images/xxx.jpg引用(或通过图床引用,在此不表);
2. 部署到 github
- 在博客目录下执行:
$ hexo g -d
若提示找不到 git,请执行:
$ npm install hexo-deployer-git --save
可能遇到的问题
- 若博客无法访问,请检查网络是否连通;没问题之后检查 server 是否被 kill,若被干掉了需要启动 server:
$ cd <folder>
$ nohup hexo server >/dev/null 2>&1 &
- 同理,若无法推送到企业微信,有可能是 blog_tools 被 kill,启动即可;