使用Pelican 和 Markdown来制作博客
2018-11-14 # 技术

Pelican是一个python3环境下的纯静态内容生成工具,可以上传至github来生成个人网站。和我之前使用的Hexo非常相似,但很明显比起Javascript我更加喜欢Python。

Pelican的官方页面是:点击这里

第一步:安装pelican和markdown

安装pelican和markdown,至于为什么使用markdown语法,这就看个人喜好呢,下载的markdownpad就是window下markdown的编辑器呢,非常简单。但我还是选择了使用sublimeText加插件的方式来做。linux下我认为也一样可行吧。

1
2
pip install pelican
pip install markdown

记得markdown是需要从python中单独安装的。否则pelican无法解析的,切记。

第二步:安装markdown Editing 和markdown preview 插件

在sublime中,使用Command+Shift+P来打开包管理工具,选择Package Control: install package来进行搜索安装包。分别安装“markdown preview” 和 “MarkdownEditing”这两个包进行安装。

第一个包是用来提供预览,第二个包是用来在编辑的时候做语法高亮和加入快捷键的。

安装完markdown preview之后可以在sublime Text中做如下设置,来设置预览快捷键。在首选项->快捷键设置里添加。

1
{ "keys": ["alt+m"], "command": "markdown_preview", "args": {"target": "browser", "parser":"markdown"}  }

如上述代码,添加的是”alt+m”快捷键,在编辑markdown文件时可以通过按alt+m快速在浏览器中预览,虽然不如实时预览方便,但markdown的格式很简单,经常用的人并不需要频繁的预览。

不通过快捷键手动来使用markdown preview,通过按组合键Ctrl+Shift+P或是点击Preference->Package Control调出命令面板,输入mdp,下图中红框圈出的就是在浏览器中预览markdown文件。

调出图片

选中后,你将见到两个选项:GitHub和Mardown。GitHub选项意味着使用GitHub的在线API来解析.md文件。它的解析速度取决于你的联网速度。据称有每天60次访问的限制。[2]但能免费获得GFM格式的语法支持和EMOJI表情的支持。

另外一个常用功能是图中第五个,Export HTML in Sublime Text,即导出html文件到sublime text。当然了还是使用快捷键会省事的多。

下面是如何使用markdown Editing

安装好后,可以在Preferences => packages setting => Markdown setting中修改theme,有好几种语法高亮的风格。

如何让对md文本采用,markdown高亮风格。在打开的md文本中,点击view=> syntax在其中选择markdown editing。

如何让sublime自动识别md格式就使用对应的风格?

这个要先从markdown有几种格式来说起,md分为标准、GFM和Multi markdown等几种格式。当然是一个比一个功能强大,Markdown Editing包默认是采用Multi格式的。就是说打开的md文件,会自动让sublime按照Multi Markdown格式来显示。如果要让其自动识别md文件,必须要Preferences => packages setting => Markdown setting =>Multi Markdown setting - User 中写入如下配置:

1
{"color_scheme": "Packages/MarkdownEditing/MarkdownEditor-ArcDark.tmTheme",}

这是选择主题,当然了如果你要修改其他的格式文件。还可以从Preferences => packages setting => Markdown setting =>Multi Markdown setting - Default中粘贴相应的到User中来覆盖。比如我修改了布局文件:

"wrap_width": 100,

这样整个文档的宽度就变成100了。

Markdown Editing的快捷键

  • Ctrl+Win+V 选中的内容将自动转换为行内式超链接,链接到剪贴板中的内容
  • Ctrl+Win+R 选中的内容将自动转换为参考式超链接,链接到剪贴板中的内容
  • Ctrl+Alt+R 弹出提示框插入一个参考式超链接,在提示框中输入链接内容和定义参考ID[^3]
  • Ctrl+Win+K 插入一个标准的行内式超链接
  • Win+Shift+K 插入一个标准的行内式图片(此快捷键可能与输入法有冲突)
  • Ctrl+1 至 Ctrl+6 插入一级至六级标题
  • Win+Alt+i 选中的内容转换为斜体
  • Win+Alt+b 选中的内容转换为粗体[^1]
  • Ctrl+Shift+6 自动插入一个脚注,并跳转到该脚注的定义中。
  • Alt+Shift+F 查找没有定义的脚注并自动添加其定义链接
  • Alt+Shift+G 查找没有定义的参考式超链接并自动添加其定义链接
  • Ctrl+Alt+S 脚注排序
  • Ctrl+Shift+. 缩进当前内容
  • Ctrl+Shift+, 提前当前内容
  • shift + *号 可以将当前选中的内容,设置为粗体或者斜体。

为每篇博文写上摘要
在 markdown 头部的 Front-matter 里面加入 description 字段。优先会使用 description 字段的内容作为文章摘要。

第三步 生成html文件

写完后,回到logs目录下,执行make html命令进行博客的生成,如果没有上面那个命令就执行下面那个命令。我这个版本就是没有的。

make html
pelican -o output -s pelicanconf.py

make html命令将把刚才写的博文生成html,存放到output目录下。接着执行make serve开启测试服务器。在浏览器中输入http://localhost:8000即可看到博文效果。如果没有make serve命令,就logs根目录中使用如下命令:

 pelican -l

这样应该就可以在本地环境下预览网页效果了。

第四步 外观主题调整

下载并设置博客主题

回到logs目录下,按如下步骤下载pelican官方主题,从里面挑选出自己喜欢的主题吧,大多数主题预览界面你可以打开这个网页进行查看。不过如今pelican又新出了很多主题,所以你需看看pelican主题开源库。

git clone https://github.com/getpelican/pelican-themes.git

这样子一堆的主题就下载到你的logs文件夹下的一个叫pelican-themes的文件夹里。一下子下的有点多,其实下次自己喜欢什么下什么。没必要全部下载下来。

打开pelicanconf.py配置文件,更改或添加THEME为自己喜欢的主题,例如本博客所挑选的gum,更多的配置含义请关注官方文档。

THEME = 'pelican-themes/gum'

添加评论系统
开启个人博客的原因在于分享知识,分享就需要交流,评论模块当然少不了。在Disqus上申请帐号,按照流程Disqus会分配给你站点的Shortname,记牢Shortname,如果忘了请进入admin/settings中查看。然后同理,在pelicanconf.py添加

DISQUS_SITENAME = Shortname 

最终步:上传博客到github

经过以上的折腾,离成功只差最后一步呢。写好的博文总要找个站点发布吧,本文基于github pages,当然你也可以选择你熟悉的站点服务器。具体步骤如官方教程,非常简单。按照官方教程,你就拥有一个二级域名和一个版本库,比如我的http://ypfno1.github.io/,当然现在访问会出现跳转,那是因为我绑定了一个独立域名 zhuran.xyz。要做到这点,只需要在ypfno1.github.io里加入一个CNAME就可以了。

然后就是使用github 或者 git命令行把output里的东西,push到远端的ypfno1.github.io这个仓库里了。

搞了半天才成功的,首先你最好安装一个命令行的git。然后你需要建立本地仓库

git init
git add .
git remote add origin https://github.com/ypfno1/ypfno1.github.io

这样就把当地仓库和远端仓库连接起来了。

然后我使用

git push -u origin master -f 

之后被提示错误,如下图所示:

1
2
3
4
5
6
error: failed to push some refs to 'https://github.com/ypfno1/ypfno1.github.io'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

原因是原来我的远端仓库里是一堆之前用hexo制作的内容,和本地没有半毛钱关系。

只好使用强制合并,来解决问题。

git push -u origin master -f 

最终问题,解决了。

但官方文档上说的是,使用如下命令来merger,但目前我对git命令还没有研究透彻。所以暂时只能这样。接下去再研究吧,我发现在这点上,阮一峰的一篇博文讲的非常好。git的远程操作

$ git pull origin master
$ git push -u origin master

至此,Pelican来写博客的全部流程应该做完了。只是暗自感慨一天能完成的工作,真多。

最后提醒下自己,md文件一定也要备份到github中,最好新建一个仓库来存放。否则md文件一丢,换电脑后就再难恢复了。