Hi,
欢迎访问,这是在我司内部使用的一个博客系统。实现流程图如下:
<!--more-->
采用这个架构主要有以下这些考虑:
- hexo是一个轻量级的静态博客框架,利用Node.js带来的超快生成速度,可以让上百个页面在几秒内完成渲染;
- hexo原生支持Markdown的所有功能;
- 新建文章一键部署;
- 丰富的插件和主题支持;
- 博客的核心是文章,不容有失。因此采用gitlab进行托管;
- 接入企业微信。发表一篇新文章时会自动推送;
- ...
博客搭建流程
-
安装hexo,需提前安装好Node.js和git
-
建站。执行以下命令:
123$ hexo init <folder>$ cd <folder>$ npm install -
安装插件
12345$ 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/ -->
-
修改默认配置文件(
<folder>/_config.yml
),需要修改部分如下。其他配置文件参见这里,可根据需要修改12345678910111213141516171819202122232425262728293031title: your titlelanguage: zh-Hanspermalink: posts/:abbrlink/plugin:- hexo-generator-feeddeploy:- type: gitrepository: git@github.com:SmartBrave/SmartBrave.github.io.gitbranch: master- type: rsynchost: <主机地址>user: <用户名>root: <需要放置博客的根目录>port: <端口>delete: [true|false] #是否删除主机上的旧目录verbose: [true|false] #显示调试信息ignore_errors: [true|false] #忽略错误abbrlink:alg: crc32rep: hexmath:engine: 'mathjax'mathjax:src: custom_mathjax_sourceconfig:# MathJax configkatex:css: custom_css_sourcejs: custom_js_sourceconfig:# KaTeX config -
可根据需要安装自己喜欢的主题。若文章中用到LaTeX公式,需在主题配置文件中将
mathjax
下的enable
和per_page
改为true
,并在文章头部添加mathjax: true
。 -
下载tools并编译(请参考README)
123$ git clone https://github.com/SmartBrave/blog_tools.git ~/blog_tools$ cd ~/blog_tools$ go build -
部署
12$ cd ~ && nohup ~/blog_tools >/dev/null 2>&1 &$ cd <folder> && nohup hexo server >/dev/null 2>&1 & -
在gitlab仓库中将webhooks配置成tools所监听的地址
-
如果要使用自己的域名访问,请在域名控制台添加一条CNAME记录,指向SmartBrave.github.io.git,并在
<folder>/source
目录下创建CNAME文件,输入域名即可。
<!--
***以上3步,可以直接在docker上获取我配置好的镜像
-->
写作流程
1. 写博客
- 登录到服务器,在文章存放目录下(
<folder>/source/_post
)新建一个md文件,命名为文章名.md
; - 或者使用
hexo new article
新建文章,然后编辑; - 编辑文章,完成后保存退出。文章中图片资源可存放在
/www/blog/source/images/
文件夹下,通过/images/xxx.jpg
引用(或通过图床引用,在此不表);
2. 部署到github
- 在博客目录下执行:
1$ hexo g -d
若提示找不到git,请执行:
可能遇到的问题
-
若博客无法访问,请检查网络是否连通;没问题之后检查server是否被kill,若被干掉了需要启动server:
12$ cd <folder>$ nohup hexo server >/dev/null 2>&1 & -
同理,若无法推送到企业微信,有可能是blog_tools被kill,启动即可;