Pelican在法语中是笔记本的意思,是一个静态站点生成器,使用Python语言写成。可以使用rst(reStructuredText)或者Markdown文件格式编写内容。Pelican包含一个命令行接口用于生成站点,并且可以很方便地与分布式版本控制系统以及web hook交互。 Pelican 3 有如下特性:
文章Articles 以及 独立页面 pages 支持
评论系统, 通过外部服务Disqus实现
基于Jinja2的模板支持
多语言支持
Atom/RSS 订阅
语法高亮
支持从WordPress, Dotclear, or RSS 订阅导入
集成外部工具: Twitter, Google Analytics
内容缓存和选择性输出 本文主详细说明了Pelican的用法。
安装
$ pip install pelican markdown
建立工程
为工程建立一个目录,并切换到工程目录
$ mkdir -p ~/projects/yoursite
$ cd ~/projects/yoursite
通过命令pelican-quickstart建立一个工程框架,过程中需要回答多个问题
$ pelican-quickstart
创建文章
建立文本文档,文档的开头格式如下:
Title: 30分钟掌握Pelican
Date: 2015-06-01 10:20
Modified: 2015-06-01 19:30
Category: Python
Tags: Pelican, github
Slug: master-Pelican-in-30-minutes
Authors: fireboy
Summary: Tutorial on Pelican
假设本文章使用Markdown语言写成, 存储为 ~/projects/yoursite/content/github.md.
生成静态页面
生成静态页面有两种方法,一种是:
pelican content -o output -s pelicanconf.py
另一种是:
make html
其实第二种方法只是使用make调用pelican命令,看一下工程根目录的makefile就明白了。makefile文件中有如下一样配置。
html:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
这些变量都在makefile文件的开头定义过,将其替换为真实值就是
html
pelican content -o output -s pelicanconf.py
当执行make html时make会根据makefile配置调用pelican命令生成静态网页文件
部署到github
Github提供两种类型的github pages服务,一种是 user pages,用于托管用户静态文件;另一种是project pages,用于托管工程项目的静态文件。这两种服务都可以服务都可以用来托管我们的博客,所不同的是user pages将master分之作为网站根目录,project pages将gh-pages分支作为网站根目录。
在介绍如何托管我们的静态文件之前先介绍一个后边会用到的开源项目ghp-import。该项目是使用Python开发的,其功能也很简单,将git仓库中的一个目录作为输入生成一个分支branch。其具体使用后文中介绍。
使用project pages部署博客
$ pelican content -o output -s pelicanconf.py
$ ghp-import output
$ git push origin gh-pages
第一行命令生成html文件,第二行从把it仓库中的output目录作为输入生成gh-pages分支,第三行将本地git仓库的gh-pages分之推送到github远程仓库中。
使用user pages部署博客
$ pelican content -o output -s pelicanconf.py
$ ghp-import output
$ git push git@github.com:fireboyvt/fireboyvt.github.io.git gh-pages:master
第一行和第二行的作用跟之前叙述的相同,唯一不同的是第三行。第三行会把当前本地git仓库的gh-pages分之推送到远程仓库git@github.com:fireboyvt/fireboyvt.github.io.git的master分支,示例中git@github.com:fireboyvt/fireboyvt.github.io.git是我的远程git博客仓库,你需要替换为你自己的仓库地址。
以上两种github pages服务的部署过程都可以通过make命令简化,只需要编辑makefile文件将相应的配置改为以上响应命令。比如,对于project pages服务需要如下改写makefile文件:
html
pelican content -o output -s pelicanconf.py
ghp-import output
git push origin gh-pages
对于user pages服务需要如下改写makefile文件:
html
pelican content -o output -s pelicanconf.py
ghp-import output
git push git@github.com:fireboyvt/fireboyvt.github.io.git gh-pages:master
其中,远程git仓库地址需要替换为你自己的。
博客工程仓库推送到github
现在我们已经将我们的博客托管到了github,但我们的源文件都在本地的git仓库,防止我们的源文件丢失,将我们的pelican工程推送的github是一个很好的选择。
添加评论插件
为了更好地与读者交互,我们希望为博客添加评论功能。常用的评论插件有disqus、多说等。以disqus为例说明使用方法。 首先要在pelicanconf.py文件中启用评论插件,相关代码为
DISQUS_SITENAME = u"sitename"
其中的sitename为你在disqus注册的站点名称。
使用自定义域名
Github的User pages服务生成的默认域名并不符合我们的需求,一个是体现不出特色,另一个是太长。所以,我们希望使用自己的域名。将我们自己的解析到github的服务器非常简单,分两类:一类是将子域名解析到github服务器,另一类是将根域名解析到github服务器。
将子域名解析到github
1.在github博客仓库根目录建立CNAME文件,文件内容应为想要指向博客的子域名,并且只能有一行,也就是只能有一个子域名,比如www.blog.com
2.在自己的域名的服务商提供的管理后台为域名添加C类解析,将www.blog.com解析到name.github.io 以上两步完成后就可以通过www.blog.com访问自己的博客了
将根域名解析到github
如果还需要将根域名解析到github,则需要在以上基础上,在域名服务商提供的管理后台添加A类解析,将blog.com解析到github的服务器,由于A类解析需要提供一个目的IP,所以就用到了dig命令。
dig命令是linux下用于域名解析的一个命令,我们只需要其中的一条内容,即name.github.io返回的A记录值,将这个值在域名服务商提供的管理后台填写到blog.com的A记录的目的值中。