在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进行数据分析_关于Package的安装问题
May 22 Python
Python探索之Metaclass初步了解
Oct 28 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
用python爬取租房网站信息的代码
Dec 14 Python
对Python实现累加函数的方法详解
Jan 23 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
python 如何实现遗传算法
Sep 22 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
Python基础之pandas数据合并
Apr 27 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
如何使用PHP往windows中添加用户
2006/12/06 PHP
php基础知识:函数基础知识
2006/12/13 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
微信小程序如何连接Java后台
2019/08/08 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
Python使用wxPython实现计算器
2018/01/30 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
python中format()函数的简单使用教程
2018/03/14 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
Django密码存储策略分析
2020/01/09 Python
对python中各个response的使用说明
2020/03/28 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Python Http请求json解析库用法解析
2020/11/28 Python
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
分布式数据库需要考虑哪些问题
2013/12/08 面试题
消防安全责任书
2014/04/14 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
淘宝店策划方案
2014/06/07 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
十二月早安励志心语大全
2019/12/03 职场文书