在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打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
python if not in 多条件判断代码
Sep 21 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Python实现的用户登录系统功能示例
Feb 05 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
解决Python安装后pip不能用的问题
Jun 12 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
详解pandas的外部数据导入与常用方法
May 01 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
基于python实现百度语音识别和图灵对话
Nov 02 Python
最新pycharm安装教程
Nov 18 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 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
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
php类常量用法实例分析
2015/07/09 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
详解Python中的序列化与反序列化的使用
2015/06/30 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
使用python实现画AR模型时序图
2019/11/20 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
你常见到的runtime exception
2016/09/05 面试题
vue路由实现登录拦截
2021/03/24 Vue.js
大学生的应聘自我评价
2013/12/13 职场文书
教育专业自荐书范文
2013/12/17 职场文书
学习雷锋活动总结
2014/04/29 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
检讨书范文500字
2015/01/28 职场文书
贪污检举信范文
2015/03/02 职场文书
家电创业计划书
2019/08/05 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库