在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 yield使用方法示例
Dec 04 Python
浅析Python中的多重继承
Apr 28 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
了解不常见但是实用的Python技巧
May 23 Python
python调试神器PySnooper的使用
Jul 03 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
Python如何对齐字符串
Jul 30 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
Python实现PS滤镜中的USM锐化效果
Dec 04 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
初品cakephp 入门基础
2012/02/16 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php中__toString()方法用法示例
2016/12/07 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
教你用Python写安卓游戏外挂
2018/01/11 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
python随机生成库faker库api实例详解
2019/11/28 Python
Python中常见的数制转换有哪些
2020/05/27 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
酒店拾金不昧表扬信
2014/01/18 职场文书
趣味活动策划方案
2014/02/08 职场文书
活动总结书
2014/05/08 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
教师工作证明范本
2015/06/12 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript