本文讲讲这个博客的搭建过程,基础主题基于Yummy-Jekyll,配置了MathJax作为LaTex渲染器,Gitalk作为评论模块,VSCode作为编辑器。写个中文版本的pipeline。
Jekyll
Jekyll是一个编译静态网页的基于Ruby的工具。具体使用方法请参考官网。
部署点
旧:Github
新建一个*.github.io仓库来作为个人主页的仓库,内部的内容可以直接选择一个比较完善的基础主题进行fork,再进行修改。
Yummy-Jekyll就是一个完全基于Markdown进行编写的博客系统。
修改或创建CNAME来自定义域名(也可以通过*.github.io仓库的设置界面中进行设置),然后域名解析端(域名服务运营商的控制台处)把域名指向*.github.io界面即可。
新:VPS
迁移到了阿里云轻量,迁移到了腾讯云轻量,如何将Github Page迁移到自己的服务器,请参考本文:https://www.grayxu.cn/wiki/transfer-Blog/
MathJax
Github Page只能加载静态界面,所以需要一个第三方的渲染过程,这里就通过 cdn.mathjax.org
的web服务获取MathJax服务。
具体过程只需要在Web文件(即需要渲染的html页面)的配置命令中加入对应的脚本,如以下的例子
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
config中常用的有:
TeX-AMS-MML_HTMLorMML.js:允许使用 TeX, LaTeX, 或者 MathML 符号书写公式。如果浏览器支持就处理为MathML,否则就使用Html和Css渲染。
TeX-AMS_HTML.js:允许使用 TeX 或者 LaTeX 符号书写公式。使用Html和Css渲染。
TeX-MML-AM_HTMLorMML.js:允许使用 TeX, LaTeX, MathML,或者 AsciiMath 符号书写公式。如果浏览器支持就处理为MathML,否则就使用Html和Css渲染。
refer : 加载和配置MathJax
in line LaTex
默认的MathJax是不支持行内LaTex语句的,这也是绝大部分教程里对于MathJax配置没有说清楚的一点。在Web文件再中加入以下脚本即可。
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true
},
"HTML-CSS": { availableFonts: ["TeX"] }
});
</script>
<script type="text/javascript" src="path-to-MathJax/MathJax.js">
Gitalk
博客的评论系统基于Gitalk,在Web界面中加入(或者抽离一个commmet html)
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
然后进行初始化
const gitalk = new Gitalk({
clientID: 'GitHub Application Client ID',
clientSecret: 'GitHub Application Client Secret',
repo: 'GitHub repo', // 建议使用一个新的公开仓库
owner: 'GitHub repo owner',
admin: ['GitHub repo owner and collaborators, only these guys can initialize github issues'],
id: location.pathname, // Ensure uniqueness and length less than 50
distractionFreeMode: false // Facebook-like distraction free mode
})
gitalk.render('gitalk-container')
如果基于一个比较完善的博客系统修改的话,就可以有在外部设置界面中进行配置。如mzlogin可供参考。
refer: Gitalk
gitalk gitment这种插件在做评论的时候,因为Github账户权限细分的问题,需要获得比较高的权限,可能有遭到中间人攻击的风险,请保证网络接入点的安全!具体参考https://github.com/imsun/gitment#is-it-safe-to-make-my-client-secret-public
VSCode
使用VSCode进行Markdown的编写过程,VSCode的插件有很强大的自定义功能,基础插件配置如下:
PicGo
PicGo用来解决Markdown插入图片的需求,PicGo默认使用sm.ms作为图床,可以为其配置七牛云、Github、腾讯云COS等。七牛云的性能稍好一些,有一定免费空间,Github可控性强。
举例PicGo使用Github作为图床的配置。
settings.json
"picgo": {
"path": "" // path to your external configure file, default value is "", which means that vs-picgo will use "picBed" info below. External configure file should be a JSON file containing all the "picBed" info below.
},
"picBed": {
"current": "github", // current image hosting, default value is "smms"
"github": {
"repo": "GrayXu/Online-Storage",
"token": "***",//这是在settings里添加的token来操作Github仓库
"path": "img/",
"customUrl": "",//图片的url,会拼接上path,不写的话会展示Wiegithub的raw。
"branch": "master",
"username": "GrayXu"
} // github image hosting
},
"picgoPlugins": {}
注:我已经将图床迁移到ucloud的对象存储服务上,并作了其他介质上做了冗余副本备份。
Markdown All in One!
可以支持多种CSS,以及LaTex渲染展示。
Push
个人博客怎么做订阅?
- RSS
- Webpushr做浏览器推送,在footer上添加一段JS即可。因为是纯静态页面,没办法自动做推送。可以考虑使用他们提供的RESTful API在后端写个脚本。
数据分析
使用Google Analytics,类似地,注册获得API后,在网页上添加JS脚本即可。