在GitHub Pages上使用Pelican搭建博客的教程


Posted in Python onApril 25, 2015

Pelican 介绍

首先看看 Pelican 的一些主要特性:

  •     Python实现,开放源码
  •     输出静态页面,方便托管
  •     支持主题,采用Jajin2模板引擎
  •     支持代码语法高亮
  •     支持reStructuredText、Markdown、AsciiDoc格式
  •     支持Disqus评论
  •     支持Atom和RSS输出

这些特性都是大爱,完全满足我对博客系统的基本需求,再配合免费无限制的GitHub Pages,一切近乎完美了。
安装 Pelican

开始前请自行安装Python环境,支持2.7.X和3.3+,为方便,再顺手装上distribute、pip、virtualenv。(注:我的操作系统是:Windows 7)

创建Pelican虚拟环境

virtualenv PelicanEnv --distribute
PelicanEnv\Scripts\activate

安装 Pelican

pip install pelican

如果您使用Markdown来写文章的话,还需要安装Markdown库

pip install Markdown

创建 Blog

创建一个 Blog 目录

mkdir myblog
cd myblog

快速创建 Blog

pelican-quickstart

根据提示一步步输入相应的配置项,不知道如何设置的接受默认即可,后续可以通过编辑pelicanconf.py文件更改配置。

以下是生成的目录结构:

myblog/

├── content              # 存放输入的源文件

│   └── (pages)          # 存放手工创建的静态页面

├── output               # 生成的输出文件

├── develop_server.sh    # 方便开启测试服务器

├── Makefile             # 方便管理博客的Makefile

├── pelicanconf.py       # 主配置文件

└── publishconf.py       # 发布时使用的配置文件

撰写文章

在 content 目录下用 Markdown 语法来写一篇文章

Title: My super title

Date: 2010-12-03 10:20

Category: Python

Tags: pelican, publishing

Slug: my-super-post

Author: Alexis Metaireau

Summary: Short version for index and feeds
This is the content of my super blog post.

生成页面

make html

现在就可以在output目录查看生成的html文件了。

由于我的操作系统是Windows,我对Makefile做了一些修改。

PY=python
PELICAN=pelican
PELICANOPTS=

BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
GITHUBDIR=$(BASEDIR)/togithub
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py

help:
 @echo '               '
 @echo 'Makefile for a pelican Web site       '
 @echo '               '
 @echo 'Usage:             '
 @echo ' make help   print help information    '
 @echo ' make all   (re)generate the web site   '
 @echo ' make html   (re)generate the web site   '
 @echo ' make clean   remove the generated files   '
 @echo ' make cptogithub copy output files to GITHUBDIR  '
 @echo ' make regenerate regenerate files upon modification '
 @echo ' make serve   serve site at http://localhost:8000'
 @echo ' make devserver  start/restart develop_server.sh '
 @echo ' make stopserver stop local server     '
 @echo ' make publish  generate using production settings '
 @echo '               '

all: html

html: clean $(OUTPUTDIR)/index.html cptogithub

clean:
 @echo -n 'Cleaning............................'
 @rm -fr $(OUTPUTDIR)
 @mkdir $(OUTPUTDIR)
 @echo 'Done'

$(OUTPUTDIR)/%.html:
 $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)

cptogithub:
 @echo -n 'Copying.............................'
 @cp -fR $(OUTPUTDIR)/* $(GITHUBDIR)
 @echo 'Done'

regenerate: clean
 $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)

serve:
 cd $(OUTPUTDIR) && $(PY) -m pelican.server

devserver:
 $(BASEDIR)/develop_server.sh restart

stopserver:
 kill -9 `cat pelican.pid`
 kill -9 `cat srv.pid`
 @echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'

publish:
 $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)

.PHONY: help all html clean cptogithub regenerate serve devserver stopserver publish

创建 GitHub Pages

GitHub Pages分两种,一种是项目页面,可创建多个;另一种是用户页面,每个用户ID只能创建一个。两种都可以用来托管Pelican博客,这里以用户页面为例。

点击这里,新建一个Repository,Repository名字可以是 xxx.github.io 或者 xxx.github.com,其中 xxx 是您的用户ID。

创建成功以后,便可以把生成的页面push到github。

cd output
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/xxx/xxx.github.io.git
git push -u origin master

现在可以通过 xxx.github.io 或者 xxx.github.com 来访问您的博客了。
域名绑定

在repo的根目录下面,新建一个名为CNAME的文本文件,里面写入你要绑定的域名,比如顶级域名 example.com 或者二级域名 xxx.example.com。

如果绑定的是顶级域名,则DNS要新建一条A记录,指向 204.232.175.78。

如果绑定的是二级域名,则DNS要新建一条CNAME记录,指向 xxx.github.io 或者 xxx.github.com 。

以我的为例:

CNAME文件

www.dongxf.com

DNSPod上设置

在GitHub Pages上使用Pelican搭建博客的教程

在浏览器地址栏中输入以下链接,都将跳转指向 http://www.dongxf.com/

    http://dongxf.com/
    http://www.dongxf.com/
    http://blog.dongxf.com/
    http://dongdxf.github.io/
    http://dongdxf.github.com/

未尽事宜

其他内容请参考 Pelican官方文档 。我正在翻译这个文档,才刚开始,进展缓慢。请点击 Pelican文档中文版 访问,欢迎提出宝贵意见和建议。

Python 相关文章推荐
Python修改Excel数据的实例代码
Nov 01 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
python如何实现int函数的方法示例
Feb 19 Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 Python
python判断完全平方数的方法
Nov 13 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
python的setattr函数实例用法
Dec 16 Python
python执行js代码的方法
May 13 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 #Python
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 #Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 #Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 #Python
Python实现单词拼写检查
Apr 25 #Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 #Python
使用PDB简单调试Python程序简明指南
Apr 25 #Python
You might like
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
Convert Seconds To Hours
2007/06/16 Javascript
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
浅谈Python中的闭包
2015/07/08 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
基于python指定包的安装路径方法
2018/10/27 Python
利用Python实现kNN算法的代码
2019/08/16 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
python爬虫添加请求头代码实例
2019/12/28 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
旅游管理专业大学生职业规划书
2014/02/27 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
工作态度检讨书范文
2015/05/06 职场文书
导游词之吉林吉塔
2019/11/11 职场文书