Elvyn's Blog
Elvyn's Blog
Elvyn's Blog

记录pelican+github page+域名博客的诞生

1. 环境


  • Windows 10
  • Anaconda3的Python3环境
  • Git
  • VS Code

1.1 需要安装

  • Pelican #python库,Anaconda3的环境中没有此库,用的pip安装。
  • Make #make工具,一个命令行软件,用于构件软件,需要搜索下载安装,另需要视情况将其安装目录添加至系统环境变量path中。由于Pelican支持Make工具简化命令,所以能安装就安装,调试页面、生成内容时输入相关命令行不用打一长串字符可是方便多了。
  • ghp-import #Github Pages Import, python库,用pip安装,如果安装有Git,则这个工具可用可不用。Pelican生成的Makefile文件中默认发布到Github是使用这个ghp-import的,我们可以自行修改成用git命令推送,下面有讲。

1.2 检测环境

运行git,在git中运行pelican --helpmake --help查看是否正常
如果仍未能安装pelican,可以点击这个链接参考安装:pelican官方文档中文-安装说明
如果未能安装Make,可以点击这个链接参考安装:安装Make

2. 生成博客系统


2.1 初始化

找地方新建一个文件夹,在此文件夹中运行命令行输入pelican-quickstart命令即可生成系统,注意pelican与-之间不用空格。以下命令为用powershell在e:/dropbox/elv.com/中新建blog文件夹生成博客系统

cd e:/dropbox
mkdir elv.com/blog
cd elv.com/blog
pelican-quickstart

最后一个命令回车后,屏幕会就博客系统初始化设置一个问题一个问题问你,看清楚输入相应回复或直接默认回车。注意问到是否生成一个Makefile时选. 然后在blog目录下生成contentoutput两个空文件夹以及Makefile, pelicanconf.py, publishconf.py, tasks.py4个文件,Makefile和task.py是根据刚刚的问题选择生成的。

  • content文件夹,用于存放自己写的博客文章md文件或html文件;
  • output文件夹,用于博客系统根据content文件夹的内容/更新后,生成相应的文章页面及博客框架的更新,现在为空,初次使用后会自动额外生成一些目录和文件;
  • pelicanconf.py文件和publishconf.py文件是两个设置文件,设置主要在这俩文件中设;
  • Makefile编辑打开可以看到是一些预生成的博客的用于相关简化操作的命令集;
  • task.py不用理,我也不知道,我也没去看。

博客系统就初始化生成啦,下面要对它做一下设置和完善。

2.2 初步配置

初步的设置可以很简单,设置前我们先将github.io的远程库同步一下

2.2.1 同步github.io库

假定github上已经建好elv.github.io库。这里如果用clone,则会在output文件中再生成一个elv.github.io的文件夹,如果用初始化再add再pull的话则不会,根据自己喜好选择。下面的命令是后一种方法:在git中定位到上面的output文件夹里,再将github库拉下来,此处使用https的方式

cd e:/dropbox/elv.com/blog/output
git init
git remote add origin https://github.com/user/user.github.io.git
git pull origin master:master

先来测试一下,在output文件夹中新建test.md文件,编辑写入:

title: hello blog
date: 2019-07-30

### 这是一个标题
这里是内容

注意pelican要求每一篇md文章,都必须至少包含title这行内容 保存后,来到blog文件夹,随便运行个命令行工具,但注意目录要定位在blog文件夹,运行

make html

再运行

make serve

然后打开浏览器访问localhost:8000,测试能否正常浏览博客及文章。

2.2.2 简单设置

能正常浏览的话,则可以对着浏览器展示出来的效果,打开pelicanconf.py文件作一些修改设置:

AUTHOR = '' #作者名,无关紧要
SITENAME = "" #网站名,一般显示在浏览器标签栏和网站的明显位置
SITEURL = '' #网站URL
TIMEZONE = 'Asia/Shanghai' #时区
DEFAULT_LANG = 'en' #默认语言

FEED_ALL_ATOM = None #这行及往下4行是对网站feed的设置,此处全为None禁用
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None

LINKS = () #填写一些网站链接,可写可不写
SOCIAL = () #填写一些社交链接,可写可不写

DEFAULT_PAGINATION = 15 #页面显示条目

详细的配置项可以查看这个页面:pelican官方文档中文-配置部分

改成自己想要的内容后保存。这时可以重新再make html一次,去output文件夹会看到博客系统自动生成的文件夹和文件。

2.2.3 初次发布

output文件夹这些内容push到github中。 先运行一次

make publish

make htmlmake publish都是根据文章内容生成站点,区别是它们调用不同的配置文件:make html调用pelicanconf.pymake publish调用的是publishconf.py。而publishconf.py又是预先导入pelicanconf.py配置的,在此基础上我们可以对在线发布作一些额外设置。这样可以理解成本地调试测试时用make html生成本地站点;要实际发布上线站点时则用make publish来生成内容。

如果遇到ERROR: Unable to delete directory ...\output\.git的错误提示,则编辑Makefile第80行即publish下面一行,将其中的PUBLISHCONF改成CONFFILE:

publish:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)

当然,如果改成这样的话,就相当于跟make html无异了。
保存后再重新运行,应该就可以运行通过。 然后,再运行

make github

如果又遇到错误,而又不想折腾ghp-import的话,也可以编辑Makefile第89、90行,即github:publish下面一行,将:

ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
git push origin $(GITHUB_PAGES_BRANCH)

改成(适用于Git Bash):

cd $(OUTPUTDIR) && git add .; git commit -m 'commit message'; git push origin master

或者改成(适用于可运行git命令的Powershell):

cd $(OUTPUTDIR) ; git add . ; git commit -m 'commit message' ; git push origin master ; cd ..

注意命令行前面应该是一个tab符,不是4个空格,否则会报错。

如此,暂告一段落。