用 Github Pages 部署静态博客已经是很早就比较热门的事情,官方推荐的是Jekyll,与之类似的有Octpress。也有利用Nodejs开发的Hexo。这几个应该算是最火的几个静态博客生产程序了。

除了Jekyll是得到Github支持的外,其他的程序就只能通过自己在本地生成HTML页面然后上传到Github上。由于本人没有学过Ruby,而且早就深深被Python所吸引(从本人博客也能看出自己特别喜欢Python啦,可能是工作需要),心想尽管hexo部署起来也不难,毕竟会点nodejs,但是反正都得在本地生成,为何不继续用自己喜欢的Python呢?于是就用了Pelican。尽管对真正的博客作者来说,选择工具对他们来说并不是太重要,或者也没办法关心到位,可对于我们这些比较喜欢技术的人来说,用自己喜欢的语言往往能增加更多趣味。

安装

Pelican 安装与部署非常方便,这里稍微引用几句,其实真的想用的话看看quick start一会就回了。

1
2
3
4
5
6
7
#安装
pip install pelican markdown
#创建本地网站文件夹(yoursite)
mkdir -p ~/projects/yoursite
cd ~/projects/yoursite
#新建pelican项目,会进入交互界面设置一些选项
pelican-quickstart

然后生成的目录是这样的
1
2
3
4
5
6
7
8
9
yourproject/
├── content #这里存放所有的md文件,即手稿
│ └── (pages)
├── output #这里是输出的html文件
├── develop_server.sh
├── fabfile.py
├── Makefile
├── pelicanconf.py # 设置文件
└── publishconf.py # Settings to use when ready to publish

感觉根目录下真正有用的就这几个我中文注释的文件(夹)

写作与测试

在content目录下新建一个.md的markdown文件,然后进行写作。
然后在根目录(yourproject)下输入pelican content 即可在output文件夹里看到生成的信息。
然后:

1
2
cd output
python -m pelican.server port

即能在本地开启一个端口默认为8000的服务程序,在浏览器里输入http://localhost:8000 即可看到效果

主题与插件

这个略过,,有兴趣的可以看文档

部署到 GitHub 与 Coding

网上的那些介绍统统是将output文件夹里的东西直接push到GitHub,可参考 http://www.jb51.net/article/64912.htm
而这样的话会有个问题,每次都必须在本地写作,然后生成后再提交的github。
我想把整个项目都部署到Coding,然后把output里面的文件夹作为GitHub Pages部署到GitHub。这样我就能即利用CodingIDE进行在线写作,又方便的讲项目同步至Coding,且能利用GitHub Pages实现博客的部署。当然目前Coding Pages也相当不错,而且是香港服务器不用考虑备案问题,方法应该类似。

Git有很多用法,我这里就介绍下自己用的本办法:

  1. 根据上述那篇介绍,注册GitHub Pages项目,叫zealseeker.github.io,并将output文件夹里的东西上传到GitHub
  2. 删除本地的output文件夹,将“yourproject”文件夹作为项目文件夹同步到coding,并开启CodingIDE。
  3. 在CodingIDE中部署环境,见安装部分
  4. 添加Git子模块:
    1
    git submodule add https://github.com/zealseeker/zealseeker.github.io.git output
  5. 大功告成,不过现在比较麻烦的是,每次都要提交两边,一遍是用于上传到Coding,一遍是上传到GitHub,我想到的时候,生成文章的同时可以让他自动执行git commit,比如写这么个deploy.sh
    1
    2
    3
    4
    5
    6
    #!/bin/sh
    pelican content
    cd output
    git add -A
    git commit -m 'update'
    git push
    然后再写个test.sh
    1
    2
    3
    4
    #!/bin/sh
    pelican content
    cd output
    python -m pelican.server 8080
    在右边“访问链接”里生成个临时链接即可查看效果

不过由于种种原因,本博客最终还是选择了hexo+coding。其实具体说为什么,自己也说不清,可能是怕自己会忍不住研究Pelican。其实选择一个博客系统最重要的应该还是把精力放在写作本身,而不是像it爱好者一样研究如何让系统更个性化。
其次为何用coding呢,主要是感觉它的webide不错,加上理论上在国内访问速度更快(既然是个中文博客,本来流量也不多,更不指望有外国人的流量啦)。

关于hexo的教程网上也挺多,这里也不班门弄斧了。比较推荐参考的是:http://www.eyrefree.org/2016/03/23/2016-03-23-Hexo-Coding-Pages/