Lapis 是为 Lua 和 MoonScript 编写的 Web 框架。 Lapis 颇有趣,由于它创建在Nginx 发行的 OpenResty 之上。您的 Web 应用程序直接在 Nginx 内部运行。 Nginx 的事件循环容许您使用 OpenResty 提供的模块进行异步 HTTP 请求,数据库查询和其余请求。 Lua 的协程容许你编写在后台事件驱动的同步代码。除了提供Web框架,Lapis还提供了用于在不一样配置环境中控制OpenResty的工具。即便你不想使用Web框架,但若是你使用OpenResty,你也许会发现它依旧是是有用的。html
这个 Web 框架实现了 URL 路由器,HTML 模板,CSRF 和会话支持,PostgreSQL 或 MySQL 支持的主动记录系统,用于处理 model 和开发网站所需的一些其余有用的功能。nginx
本指南但愿可以给你们做为一个教程和参考shell
将OpenResty安装到系统上。若是你使用Heroku,那么你可使用Heroku OpenResty模块和Lua构建包。数据库
luarocks install lapis
api
lapis 命令行工具缓存
Lapis附带了一个命令行工具,可帮助您建立新项目和启动服务器。要看看Lapis能作什么,在你的shell中运行lapis help
服务器
如今,咱们将建立一个新项目。切换到一个干净的目录并运行以下命令:app
lua new wrote nginx.conf wrote mime.types wrote app.moon
Lapis编写一个基本的 Nginx 配置和一个空白 Lapis 应用程序。框架
随意查看生成的配置文件(nginx.conf是惟一重要的文件)。如下是它的功能的简要概述:异步
任何请求在/static/将提供静态文件(若是你要提供这个功能,你能够建立这个目录)
对/favicon.ico的请求则响应/static/favicon.ico这个文件
而后全部其余请求将由Lua提供,更具体地说是一个名为“app”的模块
当您使用lapis命令行工具启动服务器时,将处理nginx.conf文件,并使用当前 Lapis 环境中的值填充模板变量。这将在下面更详细地讨论。
让咱们来看看 lapis new
给咱们的配置。虽然没有必要当即查看,但若是想要构建更高级的应用程序或者甚至只是想将应用程序部署到生产环境,那么了解它是很重要的。
这里是生成的nginx.conf
:
worker_processes ${{NUM_WORKERS}}; error_log stderr notice; daemon off; events { worker_connections 1024; } http { include mime.types; server { listen ${{PORT}}; lua_code_cache ${{CODE_CACHE}}; location / { default_type text/html; content_by_lua ' require("lapis").serve("app") '; } location /static/ { alias static/; } location /favicon.ico { alias static/favicon.ico; } } }
首先要注意的是,这不是一个正常的Nginx配置文件。 Lapis 使用特殊的${{VARIABLE}}
语法在启动服务器以前注入环境设置。
error_log stderr notice
和 daemon off
让咱们的服务器在前台运行,并将日志打印到控制台。这对于开发时是很好的,可是在生产时必定要关闭
lua_code_cache
对于开发时也是另外一个有用的设置。当设置为 off
时,将致使全部Lua
模块在每一个请求时从新加载。对 Web 应用程序的源代码的修改能够自动重载。在生产环境中,应当启用(on
)缓存以得到最佳性能。默认为off
。
content_by_lua
指令指定一个 Lua
代码块,它将处理与其余 location
不匹配的任何请求。它加载 Lapis
并告诉它为名为 app
的模块提供服务。以前运行的 lapis new
提供了一个框架模块app
来开始
虽然能够手动启动 Nginx
,可是 Lapis
包装了一个方便的命令去构建配置和启动服务器。
在 shell
中运行 lapis server
将启动服务器。 Lapis
将尝试查找您的OpenResty安装。它将搜索如下目录中的nginx二进制文件。 (最后一个表明你PATH中的任何东西)
"/usr/local/openresty/nginx/sbin/" "/usr/local/opt/openresty/bin/" "/usr/sbin/" ""
记住,你须要 OpenResty 而不是正常安装 Nginx。 Lapis 将忽略常规的 Nginx 二进制文件。
请继续并启动服务器,看看它是什么样子:lapis server
默认配置将服务器置于前台运行,使用CTRL + C中止服务器。
若是服务器在后台运行,可使用 lapis term
中止。它必须在应用程序的根目录中运行。此命令查找正在运行的服务器的PID文件,并向该进程发送 TERM
消息(若是存在)
如今你知道如何生成一个新项目并启动和中止服务器,你已经准备好开始编写应用程序代码。本指南分为 MoonScript
和 Lua
两个。
若是你不肯定要使用什么,我建议经过两个路径阅读。
Create an application with Lua
Create an application with MoonScript