本文介绍在Linux、FreeBSD、OpenBSD、macOS系统下安装Zola的方法,并使用Zola静态站点生成器(Static Site generator)。其中Zola可以用snap命令来安装,所以支持多种主流的Linux操作系统。
简介 静态网站生成器(全称Static Site generator,简称SSG)是一种工具,可根据原始数据和一组模板生成完整的静态HTML网站。Zola是类似于Hugo、Pelican和Jekyll的一种工具。它是用Rust编写的,并使用了Tera模板引擎,该引擎类似于Jinja2、Django模板、Liquid和Twig。内容使用CommonMark写成,CommonMark是Markdown的一个严格定义且高度兼容的规范。 应该注意的是,与其他站点相比,静态站点非常快并且不需要数据库,因此易于托管。在本文中,我们将安装并使用Zola创建一个简单的静态页面。首先,我们应该先安装它,然后继续创建并填充静态站点。
安装Zola 1、Arch Linux Zola在正式的Arch Linux存储库中可用,只需要一个简单的命令足以下载并安装,运行以下命令将其完成: sudo pacman -S zola 2、Alpine Linux 对于那些喜欢Alpine Linux的用户,Zola可以在Alpine Linux官方存储库中使用,目前仅在edge版本上可用。因此,您可以按以下方式安装它: apk add zola --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ 3、Fedora 自Fedora 29起,Zola已在官方存储库中可用: sudo dnf install zola 4、Void Linux Zola在官方的Void Linux存储库中可用,因此,像其他应用程序一样简单地安装它: sudo xbps-install zola 5、FreeBSD 所有想使用Zola的FreeBSD用户都可以运行以下命令安装它: pkg install zola 6、OpenBSD Zola在OpenBSD的官方软件包存储库中可用,要将其安装在OpenBSD操作系统上,运行下面的命令就足够了: doas pkg_add zola 7、macOS 如果您使用的是苹果机,则可以用Brew来安装Zola: brew install zola 8、Snapcraft 如果由于某种原因(例如在Ubuntu中)在任何存储库中都找不到Zola,则可以使用Snap命令安装。Zola在snapcraft上可用,并且假设您已经安装了snap(参考:在Ubuntu 18.04/Debian上安装和使用Snap的方法),则可以按以下命令安装Zola: sudo snap install --edge zola
使用Zola静态网站生成器(Zola Static Site generator) 安装Zola后,现在将立即深入了解Zola的工作方式,我们将通过制作一个简单的网站来做到这一点。通过该示例,我们希望您可以更轻松地在此基础上构建完善的网站。 步骤1:初始化您的博客或网站 第一步是初始化您的博客或网站,因为与某些静态网站生成器不同,Zola不对您网站的结构做任何假设。您将被问到几个问题,以便Zola能够确定如何订购您所需的大多数东西。初始化您的站点,如下所示。您可以使用喜欢的名称替换“computingforgeeksite”: cd ~ zola init computingforgeeksite 运行该命令后,将出现以下问题: > What is the URL of your site? (https://example.com): //computingforgeeks.com > Do you want to enable Sass compilation? [Y/n]: > Do you want to enable syntax highlighting? [y/N]: > Do you want to build a search index of the content? [y/N]: Done! Your site was created in /home/vagrant/computingforgeeksite 回答完问题后,您现在应该具有一个具有以下结构的“computingforgeeksite”目录: ├── config.toml ├── content ├── sass ├── static ├── templates └── themes 为了证明我们的Zola工作正常,我们可以使用以下命令启动Zola开发服务器: $ cd ~/computingforgeeksite $ zola serve -i 172.23.209.227 Building site... -> Creating 0 pages (0 orphan), 0 sections, and processing 0 images 当您打开浏览器并输入ID到服务器的域名或IP地址时(http://Domain Name|IP Address:1111)。如果您的服务器位于远程位置,并且您正在运行防火墙,则应允许1111端口。您应该看到与以下共享页面相似的页面:
步骤2:建立范例首页 正如本文的介绍部分所述,Zola使用Tera模板引擎,该引擎类似于Jinja2、Django模板、Liquid和Twig。我们将在这里看到该模板引擎如何工作。让我们导航到templates目录,然后创建其他页面将重用的基本模板: $ cd ~/computingforgeeksite/templates $ vim base.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>ComputingForGeeks Blog</title> </head> <body> <section class="section"> <div class="container"> {% block content %} {% endblock %} ##This section takes advantage of Tera templating engine. Other pages will be injected here. </div> </section> </body> </html> 该基本模板可以由其他页面扩展,以便该基本页面可以轻松处理重复部分。其他页面将重点介绍其设计要执行的特定功能。为了了解如何完成此操作,让我们创建一个索引页面,该页面将扩展此基本模板。 在同一模板目录中,创建index.html文件: {% extends "base.html" %} {% block content %} <h1 class="title"> ComputingForGeeks page extending the base template using Tera templating engine. </h1> {% endblock content %} {% block content %}和{% endblock content %}标签之间的文本将被注入到基本模板中。此时,如果我们启动zola服务器并访问http://Domain Name|IP Address:1111,我们将看到如下页面:
步骤3:添加一些内容 在Zola,有一个叫做“section”的东西。每当内容目录中的目录(或子目录)包含“_index.md”文件时,都会创建一个节。如果目录不包含_index.md文件,则不会创建任何节,但是该目录中的Markdown文件仍将创建页面(称为孤立页面)。 在继续之前,我们将在内容目录中创建一个“site”子目录,然后在其中创建“_index.md”文件。 该文件告诉Zola“site”是一个部分,这是内容在Zola中的分类方式: mkdir ~/computingforgeeksite/content/site 在_index.md文件中,我们有机会传递一些可以在页面中使用的变量。其中,让我们以TOML格式设置以下变量: $ cd ~/computingforgeeksite/content/site $ vim _index.md +++ title = "Glossary of Geeks blog posts" sort_by = "date" template = "site.html" page_template = "site-page.html" +++ ##Blog Posts Here 步骤4:建立网站范本 现在,我们已经通知“_index.md”文件查找“site.html”模板作为在本节中列出Markdown文件的基本模板,并加载“site-page.html”作为各个Markdown网站的模板文件,让我们继续在“templates”目录中创建这些文件: $ cd ~/computingforgeeksite/templates $ nano site.html {% extends "base.html" %} {% block content %} <h1 class="title"> {{ section.title }} </h1> <ul> {% for page in section.pages %} <li><a href="{{ page.permalink | safe }}">{{ page.title }}</a></li> {% endfor %} </ul> {% endblock content %} site.html扩展了base.html,但是这次我们使用此模板列出博客文章。我们在上面的_index.md文件中设置的标题可以作为{{section.title}}使用。在标题下方的列表中,我们循环浏览本节(站点目录)中的所有页面,并使用{{page.title}}和{{ page.permalink | safe }}。 此时,当我们启动zola服务器并将浏览器指向http://Domain Name|IP Address:1111/site时,我们应该看到如下标题:
步骤5:创建Markdown内容 我们将在分区区域中加载的页面为markdown格式,它们应位于“site”目录中。在站点目录中,创建一个名为blog1.md的文件,其中包含以下内容: $ cd ~/computingforgeeksite/content/site $ nano blog1.md +++ title = "My first web page" date = 2021-04-18 +++ This is my first blog post for computing for geeks. 标题和日期将在site-page.html模板中以{{page.title}}和{{page.date}}的形式提供给我们。结束语+++下方的所有文本将以{{page.content}}的形式提供给我们。 此时,当启动zola服务器并将浏览器指向http://Domain Name|IP Address:1111/site时,我们应该看到标题和第一个markdown文件标题为超链接,如下所示:
让我们在相同位置添加site-page.html文件: {% extends "base.html" %} {% block content %} <h1 class="title"> {{ page.title }} </h1> <p class="subtitle"><strong>{{ page.date }}</strong></p> {{ page.content | safe }} {% endblock content %} 添加此模板后,我们可以启动zola服务器,当将浏览器指向http://Domain Name|IP Address:1111/site/bolg1时,我们应该看到整个markdown文件的内容,如下所示:
步骤6:部署就绪文件 在完成样式和调优或博客的设置之后,是时候将其显示给您的朋友了。Zola服务器可用于通过“zola build”命令来构建您的站点。该命令在public/文件夹中创建站点,您可以轻松地将其复制到Web服务器、Vercel、Netlify、GitHub Pages等中。 这是本示例的最终文件结构,如下图所示:
至此,整个操作步骤完成。
相关主题 |