在GitHub Pages上使用Pelican搭建博客的教程
作者:Xiaofeng Dong 发布时间:2021-08-02 18:47:48
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上设置
在浏览器地址栏中输入以下链接,都将跳转指向 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文档中文版 访问,欢迎提出宝贵意见和建议。
猜你喜欢
- 0x01 生成shellcode首先通过下列命令生成一个shellcode,使用msfvenom -p选项来指定paylaod,这里选用wi
- 一、基本用法Queue类实现了一个基本的先进先出容器。使用put()将元素增加到这个序列的一端,使用get()从另一端删除。具体代码如下所示
- 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生
- 本文要实现的功能是:根据下拉列表的选项将数据库中对应的内容显示在页面,选定要排除的选项后,提交剩余的选项到数据库。为了方便前后台交互,利用了
- 从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable
- 假设你需要允许在Hero管理页面上导入CSV数据。为此,您需要添加一个指向更改Hero列表页面的链接,点击这个链接会跳转到上传页面。你需要编
- 名称:YUI Compressor最新版本:2.4.2用途:js/css压缩必备指数:使用难度:(YUI Compressor非常易用,只是
- Python慢的重要原因:1、python是动态性语言不是静态性语言在python程序执行的时候,编译器不知道变量的类型。2、python是
- 由于ajax在跨域的访问上有问题,目前最好的方法是做代理.写了个代理程序和心得为了做ajax的代理,研究了下服务器端的xmlhttp并和客户
- 1、生成了身份证前六位地区码对照表JSON文件2、python 读取JSON文件提取码【3297】 json文件下载废话不多说,先上效果图一
- 说明1、Task是Future的子类,Task是对协程的封装,我们把多个Task放在循环调度列表中,等待调度执行。2、Task对象可以跟踪任
- 某些杀毒软件会把正常的asp文件误认为是asp木马文件,而自动删除,影响正常使用。下面方法可能会有效避免被杀毒软件删除把dim t
- 是在客户端确认还是在服务器端确认? <SCRIPT LANGUAGE="VBSc
- 本文实例讲述了Python3.5内置模块之time与datetime模块用法。分享给大家供大家参考,具体如下:1、模块的分类a、标准库(Py
- 一、请求扩展1.before_request作用: 类比django中间件中的process_request,在请求到来执行路由函数之前先执
- 一、变量1.变量•指在程序执行过程中,可变的量;•定义一个变量,就会伴随有3个特征,分别是内存ID、数据类型和变量值。•其他语言运行完之前,
- 异常描述有时我们的Excel有一个调整过自定义格式的日期字段:当我们用pandas读取时却是这样的效果:不管如何指定参数都无效。出现原因没有
- 前言项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩一:导入包from PIL import Imageimp
- 相信有些小伙伴,在没接触py之前,肯定都是有所准备的,想学语言由来已久,拿小编来说,一直趁着空挡就开始找课程学习,用记下学习历程,还会向一些
- /* --注意:准备数据(可略过,非常耗时) CREATE TABLE CHECK1_T1 ( ID INT, C1 CHAR(8000)