Lanyon:一个Markdown驱动的Web服务器
Lanyon是一个简洁的Web服务器,它能读取目录中的Markdown文件并将其转化为HTML进行服务,提供了一种直观且简单的创建网站的方式。这个创新性的工具源于Hastie,简化了从创建、生成到发布的多步骤流程,并消除了静态站点生成器中的源代码树和生成树的冗余,使得内容和资产仅需存储在一个目录中。
轻松上手
安装
在binaries
文件夹中可以找到Mac OS X和Linux(amd64)的二进制文件。您也可以通过Go源代码来构建二进制文件。唯一的依赖是github.com/russross/blackfriday
库,用于Markdown解析。假设你已经安装了Golang,你可以按照以下步骤构建:
$ git clone https://github.com/mkaz/lanyon
$ cd lanyon
$ go get
$ go build
然后将生成的二进制文件复制到你的路径中,如~/bin/
或/usr/local/bin/
。
运行站点
查看演示站点是快速了解如何运行的最好方式。只需在示例目录下运行二进制文件。Lanyon会在启动的目录中查找配置文件lanyon.json
,这个配置文件告诉它在哪里寻找模板以及从哪个目录提供内容。
$ cd lanyon/example
$ lanyon
>>> Lanyon listening on http://localhost:9999
现在,你可以访问那个URL看到演示站点正在运行。所有Markdown文件,即扩展名为.md
的文件,都可以通过.html扩展名进行引用。
例如,访问/giraffe.html
会首先检查HTML文件是否存在,如果不存在,则会查找giraffe.md
并将其转换为HTML。
配置
配置文件采用JSON格式,以下是一个包含所有参数的示例:
{
"PortNum": 9999,
"TemplateDir": "templates",
"PublicDir": "public",
"RedirectDomain": ["www.mkaz.com", "www.mkaz.com"]
}
PortNum - [必需] Web服务器监听的端口号,如果设置为80,需要以root权限启动。
TemplateDir - [必需] 存放模板文件的目录,接受完整路径或相对于Lanyon启动目录的相对路径。目录末尾可以带斜线。
PublicDir - [必需] 主站点Markdown文件所在的目录,这是你的Web服务器根目录,所有的资源也都包括在此处。接受完整路径或相对于Lanyon启动目录的相对路径。
RedirectDomain - [可选] 如果指定,会检查请求的域名是否与第一个匹配,如果不匹配,就会重定向到第二个域名。
通常情况下,你可以在两个位置都放置相同的域名,以确保所有请求都能指向正确的域名。
模板与定制
最简单的方法是修改style.css
文件来满足你的需求。示例模板基于开源的WordPress Underscores主题生成常见的博客布局。
对于更深入的自定义,Lanyon使用Go的模板语言,提供了基础的变量替换和少量逻辑功能。你可以修改模板以适应你的需求。查看仓库中的示例模板开始定制。存在用于文章和分类的模板。你可以通过命名“custom.html”(其中“custom”是你自定义模板的名字)来添加自己的模板。
在页面中通过以下方式引用这个模板:
---
title: 我的页面标题
date: 2005-02-01
layout: custom
---
我的页面内容
可用的模板变量有:
.Title - 页面标题
.Content - 页面主要内容
.Category - 文件所在目录
.Layout - 使用的布局模板
.Params - 参数映射键值对
Lanyon会将不识别的前端事项变量创建成参数。这提供了一种灵活的方式来控制模板,定制特定的页面。举个例子,使用参数来包含jQuery。
在你想包含jQuery的页面中,加入以下前端事项:
---
title: 我的jQuery页面
jquery: yes
---
这是一个包含jQuery的页面
然后,在你的模板中,可以使用if-else语句来检查jQuery参数并引入。
{{ if .Params.jquery }}
<script src="/a/jquery.min.js"></script>
{{ end }}
注:只有模板才能使用模板语言、变量和逻辑。单独的Markdown页面内不可使用。
错误页
当找不到页面时,Lanyon会查找名为404.md
的文件作为错误页。如果没有此文件,它将显示一个简单的错误消息。
Less支持
Lanyon支持Less文件自动编译为CSS。这就需要lessc
安装在系统中。任何在公共目录下创建的扩展名为.less
的文件都会被自动编译为css。你应该通过.web服务器访问它们作为.css
。
例如,文件public/a/style.less
将通过web服务器作为http://localhost:9999/a/style.css
被访问。
你可以使用Node.js的包管理器npm来安装lessc
。如果你已经有node.js安装:
$ npm install -g less less-plugin-clean-css
更多信息,请访问lesscss.org。
性能
我认为Lanyon在大多数服务器上的表现都非常好。然而,我建议在前面设置反向代理缓存服务器,如Varnish或nginx,并且使用CDN(如Amazon CloudFront)来进一步提高服务性能和减轻服务器负载。
我使用Lanyon无反向代理缓存地服务于我的个人站点mkaz.com,但使用了Amazon CloudFront作为CDN。
关于
Lanyon遵循MIT开源许可协议,详情请参阅LICENSE文件。
欢迎任何形式的评论、建议、贡献或者只是单纯的祝福。GitHub可能是最方便的途径,但如果你想的话,可以通过电子邮件marcus@mkaz.com联系我,或者在Twitter上找到我@mkaz。
Lanyon,让您的Markdown内容轻松变为互动网页,体验更自由、更高效的内容创作。立刻尝试,开启您的轻量级Web开发之旅!