Pelican 入门:基于 Python 的静态站点生成器
如果您想创建自定义网站或博客,您有很多选择。许多提供商将托管您的网站并为您完成大部分工作。 (WordPress 是一个非常受欢迎的选项。)但是使用托管解决方案会失去一些灵活性。作为一名软件开发人员,我更喜欢管理自己的服务器,并在我的网站运行方式上保持更多自由。
但是,管理网络服务器是一项相当多的工作。安装它并获得一个简单的应用程序来提供内容很容易。但是掌握安全补丁和更新非常耗时。如果您只想提供静态网页,那么拥有一个 Web 服务器和大量应用程序可能比它的价值更多。手动创建 HTML 页面也不是一个好的选择。
相关内容
这就是静态站点生成器可以发挥作用的地方。这些应用程序使用模板来创建您想要的所有静态页面,并将它们与关联的元数据交叉链接。 (例如,显示带有共同标签或关键字的所有页面。)静态站点生成器可帮助您使用导航区域、页眉和页脚等元素创建具有共同外观和感觉的站点。
我已经使用Python多年了。所以,当我第一次开始寻找生成静态 HTML 页面的东西时,我想要用 Python 编写的东西。主要原因是我经常想深入了解应用程序的工作原理,而使用我已经知道的语言会更容易。 (如果这对您不重要或者您不使用 Python,还有其他一些很棒的静态站点生成器使用 Ruby、JavaScript 和其他语言。)
我决定试一试鹈鹕。它是用 Python 编写的常用静态站点生成器。直接支持reStructuredText,安装需要的包后可以支持Markdown。所有任务都通过命令行界面 (CLI) 工具执行,这对于任何熟悉命令行的人来说都很简单。其简单的快速启动 CLI 工具使创建网站变得非常容易。
在本文中,我将解释如何安装 Pelican 4、添加文章和更改默认主题。 (注意:这都是在 MacOS 上开发的;它应该可以使用任何风格的 Unix/Linux 工作,但我没有要测试的 Windows 主机。)
安装配置
第一步是创建一个virtualenv并安装 Pelican。
$ mkdir 测试站点
$ cd 测试站点
$ python3 -m venv venv
$ ./venv/bin/pip install --upgrade pip
...
成功安装 pip-18.1
$ ./venv/bin/pip 安装鹈鹕
收集鹈鹕
...
成功安装 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 6-1.12.0 unidecode-1.0.23
为了简单起见,我输入了标题和作者的值,并对 URL 前缀和文章分页回复 N。 (对于其余的问题,我使用了给定的默认值。)
Pelican 的快速入门 CLI 工具将创建基本布局和一些文件以帮助您入门。运行 pelican-quickstart 命令。为简单起见,我输入了 title 和 author 的值,并将 N 回复为 URL 前缀和文章分页。稍后在配置文件中更改这些设置非常容易。
$ ./venv/bin/鹈鹕-快速入门
欢迎使用 pelican-quickstart v4.0.1。
该脚本将帮助您创建一个基于 Pelican 的新网站。
请回答以下问题,以便此脚本可以生成 Pelican 所需的文件。
您想在哪里创建您的新网站? [.]
这个网站的标题是什么?我的测试博客
谁将成为本网站的作者?克雷格
本网站的默认语言是什么? [zh]
是否要指定 URL 前缀?例如,https://example.com (Y/n) n
是否要启用文章分页? (是/否) n
你的时区是什么时候? [欧洲/巴黎]
是否要生成一个tasks.py/Makefile 来自动生成和发布? (是/否)
您想使用 FTP 上传您的网站吗? (是/否)
您想使用 SSH 上传您的网站吗? (是/否)
您想使用 Dropbox 上传您的网站吗? (是/否)
您想使用 S3 上传您的网站吗? (是/否)
您想使用 Rackspace Cloud Files 上传您的网站吗? (是/否)
您想使用 GitHub Pages 上传您的网站吗? (是/否)
完毕。您的新项目位于 /Users/craig/tmp/pelican/test-site
您需要开始使用的所有文件都已准备就绪。
快速入门默认为欧洲/巴黎时区,因此请在继续之前进行更改。在您喜欢的文本编辑器中打开 pelicanconf.py 文件。查找 TIMEZONE 变量。
TIMEZONE = 'Europe/Paris'
将其更改为 UTC。
TIMEZONE = 'UTC'
要更新社交设置,请在 pelicanconf.py 中查找 SOCIAL 变量。
SOCIAL \u003d (('您可以在配置文件中添加链接', '#'),
('另一个社交链接', '#'),)
我将添加一个指向我的 Twitter 帐户的链接。
SOCIAL = (('Twitter (#craigs55)', 'https://twitter.com/craigs55'),)
请注意结尾的逗号——它很重要。该逗号帮助 Python 识别变量实际上是一个集合。确保不要删除该逗号。
现在您已经掌握了网站的基础知识。快速入门创建了一个包含多个目标的 Makefile。将 devserver 目标赋予 make 将在您的计算机上启动一个开发服务器,以便您可以预览所有内容。 Makefile 中使用的 CLI 命令被假定为您的 PATH 的一部分,因此您需要首先 activate virtualenv。
$ 源 ./venv/bin/activate
$ 制作开发服务器
鹈鹕-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
-> 修改:主题,设置。再生...
警告:在活动读者的内容中找不到有效文件:
| BaseReader(静态)
| HTMLReader (htm, html)
| RstReader (rst)
完成:在 0.18 秒内处理了 0 个文章、0 个草稿、0 个页面、0 个隐藏页面和 0 个草稿页面。
将您喜欢的浏览器指向http://localhost:8000即可查看您的简单测试博客。

您可以在右侧看到 Twitter 链接,在左侧看到 Pelican、Python 和 Jinja 的一些链接。 (Jinja 是 Pelican 可以使用的一种很好的模板语言。您可以在Jinja 的文档中了解更多信息。)
添加内容
现在您有了一个基本站点,添加一些内容。首先,将一个名为 welcome.rst 的文件添加到站点的 content 目录中。在您最喜欢的文本编辑器中,使用以下文本创建一个文件:
$密码
/Users/craig/tmp/pelican/test-site
$猫内容/welcome.rst
欢迎到我的博客!
###################
:日期: 20181216 08:30
:标签: 欢迎
:category: 简介
:slug: 欢迎
:作者:克雷格
:summary: 欢迎文件
欢迎到我的博客。
这是一个简短的页面,只是为了展示如何放置一个静态页面。
元数据行——日期、标签等——由 Pelican 自动解析。
编写文件后,devserver 应输出如下内容:
-> 修改:内容。再生...
完成:在 0.10 秒内处理了 1 篇文章、0 个草稿、0 个页面、0 个隐藏页面和 0 个草稿页面。
在浏览器中重新加载测试站点以查看更改。

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

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

所有评论(0)