Pelican Static Site Generator, Powered by Python:Pelican是python语言写的静态网站生成器。因为我一直打算用github pages做一个博客,现在已经学会用Hexo在github pages上做博客了。但是我一想:我一个pythoner,干嘛不用python写的静态网站生成器。我想应该是网上教程太少,那我今天就来搞一搞。顺便记录下来,整理出一个教程,希望一切顺利!
1.首先用virtualenv创建一个env
mkdir blog
cd blog
virtualenv env
source env/bin/activate #激活环境
2.使用pip安装pelican和markdown
pip install pelican
pip install markdown
3.创建pelican目录结构
pelican-quickstart
# 根据提示进行设置,没有输入内容就是使用默认值按‘回车’就可以了
> Where do you want to create your new web site? [.]
> What will be the title of this web site? 削微寒
> Who will be the author of this web site? xueweihan
> What will be the default language of this web site? [en] zh
> Do you want to specify a URL prefix? e.g., http://example.com (Y/n)
> What is your URL prefix? (see above example; no trailing slash) xueweihan.com
> Do you want to enable article pagination? (Y/n)
> How many articles per page do you want? [10]
> What is your time zone? [Europe/Paris] Asia/Shanghai
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n)
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n)
> Do you want to upload your website using FTP? (y/N) n
> Do you want to upload your website using SSH? (y/N) n
> Do you want to upload your website using Dropbox? (y/N) n
> Do you want to upload your website using S3? (y/N) n
> Do you want to upload your website using Rackspace Cloud Files? (y/N) n
> Do you want to upload your website using GitHub Pages? (y/N)
Done. Your new project is available at /Users/xueweihan/Documents/blog
文件结构如下:
blog/
├── content # 写的文章放这里
├── output # 生成的输出文件(发布的内容)
├── develop_server.sh
├── Makefile # 方便管理博客的Makefile
├── pelicanconf.py # 主配置文件
└── publishconf.py
我们下面只用到我解释的这几个目录和文件,大致有个印象即可
4.编写文章测试下效果
Date: 2016-02-28
Title: 测试
Tags: 测试
Slug: test
# pelican
Pelican Static Site Generator, Powered by Python:Pelican是python语言写的静态网站生成器。因为我一直打算用git pages做一个博客,现在已经学会用Hexo在git pages上做博客了。但是我还是一想:我一个pythoner,干嘛不用python写的静态网站生成器。应该是网上教程太少,那我今天就来搞一搞。顺便记录下来,整理出一个教程,希望一切顺利!
在content目录下创建一个名为:test.md的markdown文件,把上面的那些内容放进去,用来测试效果。
5.本地查看效果
# 在blog目录下执行
pelican content # 根据content中的内容,生成静态网站到output目下
# 在output目录下执行
python -m pelican.server
以上两个命令执行完,没有报错的话就用浏览器打开:127.0.0.1:8000,效果如下:
输入:ctrl + c
停止服务
5.上传到github pages 现在就差最后一步,上传到github pages上面。 一步步的来:
首先在github上创建一个项目,Repository name
填写:你的github用户名.github.io 如下图:
然后在output
目录依次输入:
git init
git add .
git commit -m "pelican static blog test"
git remote add origin [email protected]:你的github用户名/你的github用户名.github.io.git
# 例如我的就是:[email protected]:521xueweihan/521xueweihan.github.io.git
git push -u origin master
最后访问:http://你的github用户名.github.io/ 例如我的就是:http://521xueweihan.github.io/
还记得Makefile文件吗?我们通过修改这个文件,实现1条指令发布博客到github pages上。
把blog
目录下的Makefile文件中的内容替换成下面的内容(原Makefile文件的内容都不要)
PY?=python
PELICAN?=pelican
PELICANOPTS=
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
html:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
clean:
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
regenerate:
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
serve:
ifdef PORT
cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
else
cd $(OUTPUTDIR) && $(PY) -m pelican.server
endif
publish:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
github: publish
cd $(OUTPUTDIR) ; git add . ; git commit -m '更新博客' ; git push origin master
更新博客流程
blog
目录下make html
然后make serve
最后访问:127.0.0.1:8000make github
完成