在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 strip lstrip rstrip使用方法
Sep 06 Python
Python3.2模拟实现webqq登录
Feb 15 Python
Python中的数学运算操作符使用进阶
Jun 20 Python
浅析python中的分片与截断序列
Aug 09 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
Django使用httpresponse返回用户头像实例代码
Jan 26 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
使用Python 统计高频字数的方法
Jan 31 Python
python try 异常处理(史上最全)
Mar 07 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
Pytorch 实现变量类型转换
May 17 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
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
python检测是文件还是目录的方法
2015/07/03 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
岗位职责说明书
2014/05/07 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
地道战观后感500字
2015/06/04 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
Python Parser的用法
2021/05/12 Python
Django模型层实现多表关系创建和多表操作
2021/07/21 Python