如果您想创建一个自定义网站或博客,您有很多选择。许多提供商将托管您的网站并为您完成大部分工作。(WordPress 是一个非常流行的选择。)但是,通过使用托管解决方案,您会失去一些灵活性。作为一名软件开发人员,我更喜欢管理自己的服务器,并在网站的运行方式上保持更大的自由度。
但是,管理 Web 服务器需要相当多的工作。安装它并启动一个简单的应用程序来提供内容很容易。但是,及时掌握安全补丁和更新非常耗时。如果您只想提供静态网页,那么拥有 Web 服务器和大量应用程序可能得不偿失。手动创建 HTML 页面也不是一个好的选择。
这就是静态站点生成器可以发挥作用的地方。这些应用程序使用模板来创建您想要的所有静态页面,并将它们与相关的元数据交叉链接。(例如,显示所有带有通用标签或关键字的页面。)静态站点生成器可以帮助您创建一个具有通用外观和感觉的站点,使用导航区域以及页眉和页脚等元素。
我已经使用 Python 多年了。因此,当我第一次开始寻找生成静态 HTML 页面的工具时,我想要一些用 Python 编写的东西。主要原因是,我经常想深入了解应用程序的内部工作原理,而使用我已经熟悉的语言会使这更容易。(如果这对您不重要,或者您不使用 Python,那么还有其他一些很棒的 静态站点生成器,它们使用 Ruby、JavaScript 和其他语言。)
我决定尝试一下 Pelican。它是一个常用的静态站点生成器,用 Python 编写。它直接支持 reStructuredText,并且在安装了所需的软件包后可以支持 Markdown。所有任务都通过命令行界面 (CLI) 工具执行,这对于任何熟悉命令行的人来说都很简单。其简单的快速入门 CLI 工具使创建网站变得非常容易。
在本文中,我将解释如何安装 Pelican 4、添加文章以及更改默认主题。(注意:所有这些都是在 MacOS 上开发的;它应该在使用任何 Unix/Linux 版本时工作相同,但我没有 Windows 主机进行测试。)
安装和配置
第一步是创建一个 virtualenv 并安装 Pelican。
$ mkdir test-site
$ cd test-site
$ python3 -m venv venv
$ ./venv/bin/pip install --upgrade pip
...
Successfully installed pip-18.1
$ ./venv/bin/pip install pelican
Collecting pelican
...
Successfully installed MarkupSafe-1.1.0 blinker-1.4 docutils-0.14 feedgenerator-1.9 jinja2-2.10 pelican-4.0.1 pygments-2.3.1 python-dateutil-2.7.5 pytz-2018.7 six-1.12.0 unidecode-1.0.23
为了简单起见,我输入了标题和作者的值,并对 URL 前缀和文章分页回复了 N。(对于其余问题,我使用了给定的默认值。)
Pelican 的快速入门 CLI 工具将创建基本布局和一些文件以帮助您入门。运行 pelican-quickstart 命令。为了简单起见,我输入了 title 和 author 的值,并对 URL 前缀和文章分页回复了 N。稍后在配置文件中更改这些设置非常容易。
$ ./venv/bin/pelican-quickstart
Welcome to pelican-quickstart v4.0.1.
This script will help you create a new Pelican-based website.
Please answer the following questions so this script can generate the files needed by Pelican.
> Where do you want to create your new web site? [.]
> What will be the title of this web site? My Test Blog
> Who will be the author of this web site? Craig
> What will be the default language of this web site? [en]
> Do you want to specify a URL prefix? e.g., https://example.com (Y/n) n
> Do you want to enable article pagination? (Y/n) n
> What is your time zone? [Europe/Paris]
> Do you want to generate a tasks.py/Makefile to automate generation and publishing? (Y/n)
> Do you want to upload your website using FTP? (y/N)
> Do you want to upload your website using SSH? (y/N)
> Do you want to upload your website using Dropbox? (y/N)
> Do you want to upload your website using S3? (y/N)
> Do you want to upload your website using Rackspace Cloud Files? (y/N)
> Do you want to upload your website using GitHub Pages? (y/N)
Done. Your new project is available at /Users/craig/tmp/pelican/test-site
您入门所需的所有文件都已准备就绪。
快速入门默认设置为 Europe/Paris 时区,因此在继续之前更改它。在您最喜欢的文本编辑器中打开 pelicanconf.py 文件。查找 TIMEZONE 变量。
TIMEZONE = 'Europe/Paris'
将其更改为 UTC。
TIMEZONE = 'UTC'
要更新社交设置,请在 pelicanconf.py 中查找 SOCIAL 变量。
SOCIAL = (('You can add links in your config file', '#'),
('Another social link', '#'),)
我将添加一个指向我的 Twitter 帐户的链接。
SOCIAL = (('Twitter (#craigs55)', 'https://twitter.com/craigs55'),)
请注意尾随逗号 - 这很重要。该逗号有助于 Python 识别该变量实际上是一个集合。确保您不要删除该逗号。
现在您有了网站的基础。快速入门创建了一个带有许多目标的 Makefile。将 devserver 目标提供给 make 将在您的机器上启动一个开发服务器,以便您可以预览所有内容。Makefile 中使用的 CLI 命令假定是您的 PATH 的一部分,因此您需要先 activate virtualenv。
$ source ./venv/bin/activate
$ make devserver
pelican -lr /Users/craig/tmp/pelican/test-site/content o
/Users/craig/tmp/pelican/test-site/output -s /Users/craig/tmp/pelican/test-site/pelicanconf.py
-> Modified: theme, settings. regenerating...
WARNING: No valid files found in content for the active readers:
| BaseReader (static)
| HTMLReader (htm, html)
| RstReader (rst)
Done: Processed 0 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 0.18 seconds.
将您喜欢的浏览器指向 http://localhost:8000 以查看您的简单测试博客。

您可以在右侧看到 Twitter 链接,并在其左侧看到指向 Pelican、Python 和 Jinja 的一些链接。(Jinja 是一种很棒的模板语言,Pelican 可以使用它。您可以在 Jinja 的文档 中了解更多信息。)
添加内容
现在您有了一个基本站点,添加一些内容。首先,将名为 welcome.rst 的文件添加到站点的 content 目录。在您最喜欢的文本编辑器中,创建一个包含以下文本的文件
$ pwd
/Users/craig/tmp/pelican/test-site
$ cat content/welcome.rst
Welcome to my blog!
###################
:date: 20181216 08:30
:tags: welcome
:category: Intro
:slug: welcome
:author: Craig
:summary: Welcome document
Welcome to my blog.
This is a short page just to show how to put up a static page.
元数据行——日期、标签等——由 Pelican 自动解析。
在您编写文件后,devserver 应该输出类似这样的内容
-> Modified: content. regenerating...
Done: Processed 1 article, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 0.10 seconds.
在您的浏览器中重新加载测试站点以查看更改。

元数据(例如,日期和标签)已自动添加到页面。此外,Pelican 自动检测到 intro 类别,并将该部分添加到顶部导航栏。
更改主题
使用像 Pelican 这样的流行开源软件最棒的部分之一是,许多用户会进行更改并将它们贡献回项目。许多贡献都以主题的形式出现。
站点的主题设置颜色、布局选项等。尝试新主题真的很容易。您可以在 Pelican Themes 上预览许多主题。
首先,克隆 GitHub 仓库
$ cd ..
$ git clone --recursive https://github.com/getpelican/pelicanthemes
Cloning into 'pelicanthemes'...
由于我喜欢蓝色,我将尝试 blueidea。
编辑 pelicanconf.py 并添加以下行
THEME = '/Users/craig/tmp/pelican/pelican-themes/blueidea/'
devserver 将重新生成您的输出。在您的浏览器中重新加载网页以查看新主题。

主题控制布局的许多方面。例如,在默认主题中,您可以在文章旁边看到带有元标签的类别(Intro)。但是,该类别未在 blueidea 主题中显示。
其他考虑事项
这只是 Pelican 的一个非常快速的介绍。有一些重要的主题我没有涵盖。
首先,我犹豫不决转向静态站点的原因之一是它不允许在文章上进行讨论。幸运的是,有一些第三方提供商会为您托管讨论。我目前正在关注的一个是 Disqus。
其次,以上所有操作都是在我的本地机器上完成的。如果我想让其他人查看我的站点,我必须将预生成的 HTML 文件上传到某个地方。如果您查看 pelican-quickstart 输出,您将看到使用 FTP、SSH、S3 甚至 GitHub Pages 的选项。每个选项都有其优点和缺点。但是,如果我必须选择一个,我可能会发布到 GitHub Pages。
Pelican 还有许多其他功能——我每天仍在学习更多关于它的知识。如果您想自托管一个具有简单静态内容的网站或博客,并且您想使用 Python,那么 Pelican 是一个不错的选择。它有一个活跃的用户社区,他们正在修复错误、添加功能和创建新的和有趣的主题。试一试吧!
3 条评论