资讯专栏INFORMATION COLUMN

lapis入门

endless_road / 2958人阅读

摘要:入门是为和编写的框架。使用来安装创建一个应用命令行工具附带了一个命令行工具,可帮助您创建新项目和启动服务器。在生产环境中,应当启用缓存以获得最佳性能。指令指定一个代码块,它将处理与其他不匹配的任何请求。将忽略常规的二进制文件。

lapis入门

Lapis 是为 Lua 和 MoonScript 编写的 Web 框架。 Lapis 很有趣,因为它建立在Nginx 发行的 OpenResty 之上。您的 Web 应用程序直接在 Nginx 内部运行。 Nginx 的事件循环允许您使用 OpenResty 提供的模块进行异步 HTTP 请求,数据库查询和其他请求。 Lua 的协程允许你编写在后台事件驱动的同步代码。除了提供Web框架,Lapis还提供了用于在不同配置环境中控制OpenResty的工具。即使你不想使用Web框架,但如果你使用OpenResty,你也许会发现它依旧是是有用的。

这个 Web 框架实现了 URL 路由器,HTML 模板,CSRF 和会话支持,PostgreSQL 或 MySQL 支持的主动记录系统,用于处理 model 和开发网站所需的一些其他有用的功能。

本指南希望能够给大家作为一个教程和参考

基本设置

将OpenResty安装到系统上。如果你使用Heroku,那么你可以使用Heroku OpenResty模块和Lua构建包。

使用luarocks来安装lapis

luarocks install lapis

创建一个应用

lapis 命令行工具

Lapis附带了一个命令行工具,可帮助您创建新项目和启动服务器。要看看Lapis能做什么,在你的shell中运行lapis help

现在,我们将创建一个新项目。切换到一个干净的目录并运行如下命令:

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 环境中的值填充模板变量。这将在下面更详细地讨论。

nginx 配置

让我们来看看 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 noticedaemon 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 消息(如果存在)

创建一个应用

现在你知道如何生成一个新项目并启动和停止服务器,你已经准备好开始编写应用程序代码。本指南分为 MoonScriptLua 两个。

如果你不确定要使用什么,我建议通过两个路径阅读。

Create an application with Lua
Create an application with MoonScript

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39470.html

相关文章

  • 创建Lapis应用程序

    摘要:使用创建应用程序生成一个新项目如果您尚未阅读,请阅读入门指南,了解有关创建新项目骨架的信息以及,配置和命令的详细信息。是包含应用程序的常规模块。 使用Lua创建Lapis应用程序 生成一个新项目 如果您尚未阅读,请阅读入门指南,了解有关创建新项目骨架的信息以及OpenResty,Nginx配置和lapis命令的详细信息。 您可以在当前目录中通过运行以下命令启动一个新的Lua项目: la...

    jzzlee 评论0 收藏0
  • lapis的配置及环境

    摘要:配置及环境被设计于依据不同环境载入不同的配置来运行服务器。环境名称仅影响加载的配置。例如,这里有一个的配置块编译时,首先检查环境变量。默认日志记录位置设置为,在默认的配置中指定。 配置及环境 Lapis 被设计于依据不同环境载入不同的配置来运行服务器。例如,可能您开发环境的配置设置为本地数据库的URL,禁用代码缓存和单个worker。然后,您生产环境的配置可能设定为远程数据库的 URL...

    sarva 评论0 收藏0
  • lapis的异常处理

    摘要:的异常处理错误的种类区分两种错误可恢复和不可恢复错误。捕获可恢复的错误帮助程序用于包装一个操作,以便它可以捕获错误并运行错误处理程序。相反,使用协同程序创建一个异常处理系统。 lapis的异常处理 错误的种类 Lapis 区分两种错误:可恢复和不可恢复错误。 Lua 的运行时在执行期间抛出的错误或调用错误被认为是不可恢复的。 (这也包括 Lua 内置函数 assert ) 因为不可恢复...

    cucumber 评论0 收藏0
  • Chrome插件开发入门:如何实现一键上班赖皮

    摘要:老板查岗时,一个快捷键,立即关闭所有赖皮页面。上传,发布插件。从零开始,开发简单的一键赖皮插件的上班族都在使用浏览器赖皮,所以我们选择采用插件来实现功能。 很多人介绍过Chrome插件,但必须要说,插件开发就是摆弄一个小玩具,第一要素是实用,其次是好玩。 单纯罗列各种功能是非常无趣的。 所以把一篇旧文拿出来与大家分享。 人,活着就是为了赖皮。 作为一个合格的开发人员,把30%的时间用...

    acrazing 评论0 收藏0
  • lapis请求处理

    摘要:处理函数的返回值用于渲染输出。例如,如果不满足某些条件,我们可以取消操作并重定向到另一个页面是处理一个常规动作的返回值,所以同样的事情你可以返回一个动作,可以传递给请求对象每个操作在调用时会请求对象作为其第一个参数传递。 lapis请求处理 每个被Lapis处理的HTTP请求在被Nginx处理后都遵循相同的基本流程。第一步是路由。路由是 url 必须匹配的模式。当你定义一个路由时,你也...

    Olivia 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<