我曾多次萌生过写博客的想法,后来都不了了之。想写博客,却又觉得搭建博客太过麻烦,一直没做成这件事。 最后终于下定决心去尝试,于是便有了这个博客。本文主要介绍一下搭建博客的过程,利用 Pelican 和 GitHub Pages 从零开始搭建博客。 Pelican 是一款用 Python 编写的静态网站生成工具,可以将Markdown,Jupyter Notebook等文件转换为静态 Html 页面,并且生成与这些页面匹配的 css 等组件,组成一个完整的静态网站。将静态网站提交到 GitHub,利用 GitHub 上的 GitHub Pages 功能,即可在互联网公开发布个人博客。 系统要求¶
安装Pelican与必要依赖¶新建一个虚拟环境专门用于博客搭建,由于我使用 anaconda,所以直接新建 anaconda 环境,如果是纯 Python 可以使用 virtualenv 新建环境。 当然如果不担心包版本之间的冲突,也可不新建虚拟环境。 conda create --name pelican python=3.6 之后的操作如无说明都在 pelican 这一环境下执行的 source activate pelican 安装 pelican 和必要的依赖 pip install -r requirements.txt
pelican==3.6.3 Markdown==2.6.6 jupyter>=1.0 ipython>=4.0 nbconvert>=4.0 beautifulsoup4 matplotlib 新建Pelican项目¶新建一个文件夹,比如就叫 在文件夹内执行 cd Blog pelican-quickstart 现在 Blog 文件夹内应该是如下结构 . ├── content ├── develop_server.sh ├── fabfile.py ├── Makefile ├── output ├── pelicanconf.py └── publishconf.py 其中 pelican content -s publishconf.py 而 两个文件默认内容分别如下
#!/usr/bin/env python # -*- coding: utf-8 -*- # from __future__ import unicode_literals AUTHOR = 'zodiac wang' SITENAME = 'zodiac wang' SITEURL = '' PATH = 'content' TIMEZONE = 'Asia/Shanghai' DEFAULT_LANG = 'en' # Feed generation is usually not desired when developing FEED_ALL_ATOM = None CATEGORY_FEED_ATOM = None TRANSLATION_FEED_ATOM = None AUTHOR_FEED_ATOM = None AUTHOR_FEED_RSS = None # Blogroll LINKS = (('Pelican', 'http:///'), ('Python.org', 'http:///'), ('Jinja2', 'http://jinja./'), ('You can modify those links in your config file', '#'),) # Social widget SOCIAL = (('You can add links in your config file', '#'), ('Another social link', '#'),) DEFAULT_PAGINATION = 10 # Uncomment following line if you want document-relative URLs when developing #RELATIVE_URLS = True
#!/usr/bin/env python # -*- coding: utf-8 -*- # from __future__ import unicode_literals # This file is only used if you use `make publish` or # explicitly specify it as your config file. import os import sys sys.path.append(os.curdir) from pelicanconf import * SITEURL = '' RELATIVE_URLS = False FEED_ALL_ATOM = 'feeds/all.atom.xml' CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' DELETE_OUTPUT_DIRECTORY = True # Following items are often useful when publishing #DISQUS_SITENAME = "" #GOOGLE_ANALYTICS = "" 安装ipynb插件¶pelican默认支持 markdown 文件作为博客文章的源文件,如果使用 markdown 写博客则可以跳过这一步。 而我希望可以直接将 Jupyter Notebook 文件作为源文件而不做转换,因为我的 Notebook 中有很多代码及其生成的结果。但 Pelican 默认不支持ipynb文件,所以需要安装pelican-ipynb插件 新建 plugins 文件夹,将插件文件下载到 plugins 文件夹内 mkdir plugins cd plugins git clone https://github.com/danielfrg/pelican-ipynb 修改 pelicanconf.py 文件,在最下边添加几行代码,激活插件 MARKUP = ('md', 'ipynb') PLUGIN_PATH = './plugins' PLUGINS = ['pelican-ipynb.markup'] #pelican-ipynb 为添加的submodule文件夹名 IGNORE_FILES = [".ipynb_checkpoints"] # 如果有ipynb_checkpoints文件添加这一行以忽略 pelican-ipynb 插件具体配置方法有好几种,详见项目Readme,我使用的是推荐配置方法。 写第一篇博客¶是时候写第一篇博客了。 将
相应字段的含义:
现在Blog文件夹下结构应该是这个样子
生成Html文件¶切换到Blog文件夹下,生成Html文件 pelican content -s publishconf.py 切换到output文件夹下,开启本地服务器 python -m pelican.server [port] 在浏览器输入 GitHub Pages¶以上只是在本地生成了一个网页服务,要想让博客出现在互联网上,有两类方法
我选择将博客托管到 GitHub 上。 首先在 GitHub 上新建一个名为 提交文件¶在 如果Blog文件也需要管理,可以将output仓库作为子摸块添加到上层仓库中 cd output git init git remote add origin https://github.com/zodiac911/zodiac911. 提交文件并push到远端 git add -A git commit / git push origin master #提交文件 这里很多人会推荐使用一个叫作 更换主题¶经过以上设置,就可以在 从 pelican-themes 找一个主题下载到 mkdir themes cd themes git clone https://github.com/talha131/pelican-elegant 为使新主题生效,在pelicanconf.py 文件,添加一行代码: THEME = "themes/pelican-elegant" elegant主题补充设置¶为了获取完全体的 elegant 体验,需要额外安装几个插件,安装方法即直接 git clone 对应的仓库到 plugins 文件夹 这些特性主要包括
默认启用不需要额外插件的特性大致如下
修改 pelicanconf.py 中相应参数,以激活插件 PLUGINS = ['pelican-ipynb.markup', 'sitemap', 'tipue_search', 'extract_toc'] 一些可选的额外设置 RECENT_ARTICLES_COUNT (integer) COMMENTS_INTRO ('string') SITE_LICENSE ('string') SITE_DESCRIPTION ('string') EMAIL_SUBSCRIPTION_LABEL ('string') EMAIL_FIELD_PLACEHOLDER ('string') SUBSCRIBE_BUTTON_TITLE ('string') MAILCHIMP_FORM_ACTION ('string') SITESUBTITLE ('string') LANDING_PAGE_ABOUT ({}) PROJECTS ([{},...]) 文章 metadata 中的额外设置项 subtitle summary disqus_identifier modified keywords 日常维护¶每次写了新博客之后,只需要执行以下命令 pelican content -s publishconf.py cd output git add -A git commit -m / git push origin master 可以写个脚本执行以上步骤 References:
|
|