lapis的配置及环境

编程入门 行业动态 更新时间:2024-10-27 16:32:12

lapis的配置及<a href=https://www.elefans.com/category/jswz/34/1771403.html style=环境"/>

lapis的配置及环境

配置及环境

Lapis 被设计于依据不同环境载入不同的配置来运行服务器。例如,可能您开发环境的配置设置为本地数据库的URL,禁用代码缓存和单个worker。然后,您生产环境的配置可能设定为远程数据库的 URL,启用代码缓存和8个worker

当启动服务器时,lapis 命令行工具接受第二个参数:

$ lapis server [environment] 

默认情况下,环境是development。环境名称仅影响加载的配置。如果你没有任何配置,这绝对没有效果,所以让我们创建一些。

创建配置

每当 Lapis 执行依赖于配置的代码时,它会尝试加载 config 模块。 config 模块是我们定义环境特定的变量的地方。它是一个标准的 Lua/MoonScript 文件,所以让我们创建它。

如果未找到 config 模块,则不会抛出错误,此时则会使用默认的配置。

local config = require("lapis.config")config("development", {port = 8080
})config("production", {port = 80,num_workers = 4,code_cache = "on"
})

我们使用 lapis.config 中提供的配置助手来创建我们的配置。在上面的例子中,我们定义了两个配置,并为每个配置设置端口。

配置只是一个简单的表。使用上面的特殊构建器语法构建配置表。

我们可以通过传递环境名称的数组表 来一次 配置多个环境:

config({"development", "production"}, {session_name = "my_app_session"
})

配置文件对于访问组合嵌套的表有着不错的语法。 MoonScriptLua 都有自己的变体,有关语法的更多细节,请查看相应的指南。[lua配置语法]()

配置和Nginx

编译 nginx.conf 时使用配置中的值。插入的Nginx配置变量不区分大小写。它们通常以所有大写形式编写,因为在检查配置之前会先检查 shell 的环境是否有值。

例如,这里有一个 Lapis Nginx 的配置块:

events {worker_connections ${{WORKER_CONNECTIONS}};
}

编译时,首先检查环境变量 LAPIS_WORKER_CONNECTIONS。如果它没有值,那么将检查当前环境的配置的 worker_connections

在应用程序中访问配置

该配置也可在应用程序中使用。我们可以像下面这样来访问配置表:

local config = require("lapis.config").get()
print(config.port) 

当前环境的名称存储在 _name 中。

print(config._name) -- development, production, etc...

默认配置

所有配置都有一些默认值,下面这些是他们在表中的语法:

default_config = {port = "8080",secret = "please-change-me",session_name = "lapis_session",num_workers = "1",logging = {queries = true,requests = true}
}

可用配置

虽然大多数配置键是随意使用的,但是有一些名称是被保留用于配置 Lapis 和支持库。这里是他们的列表:

portnumber) - Nginx 的端口,在nginx.conf 中默认定义

num_workersnumber) - Nginx 启动的work数,在 nginx.conf 中默认定义

session_namestring) - 将存储会话的 cookie 的名称

secretstring) - encode_with_secret使用的秘密密钥,也用于签署会话
cookie

measure_performancebool) - 用于启用性能时间和查询跟踪

loggingtable) - 配置要记录到控制台或日志文件的事件

配置日志

logging 配置键可用于禁用 Lapis 默认情况下执行的各种日志记录。logging配置的默认值为:

{queries = true,requests = true
}

所有日志都使用 OpenResty 提供的 print 函数 对 Nginxnotice 日志进行记录。默认 notice 日志记录位置设置为 stderr ,在默认的 Lapis Nginx 配置中指定。它可以使用 error_log 指令进行配置。

性能测量

如果 measure_performance 配置值设置为 trueLapis 可以收集各种操作的计时和计数。

这些数据存储在 ngx.ctx.performance 中。在以下字段将被收集到表中:

view_time - 呈现视图所用的时间(以秒为单位)

layout_time - 呈现布局所用的时间(以秒为单位)

db_time - 执行查询所花费的时间(以秒为单位)

db_count - 执行的查询数

http_time - 执行 HTTP 请求所花费的时间(以秒为单位)

http_count - 发送的 HTTP 请求数

如果在请求中未执行相应的操作,则字段将为 nil。这些字段在请求过程中填写,因此最好只在请求结束时访问它们,以确保所有数据可用。 after_dispatch 助手可以用来注册一个函数,以便在请求处理的最后阶段运行。

在此示例中,性能数据在每个请求结束时打印到日志中:

local lapis = require("lapis")
local after_dispatch = require("lapis.nginx.context").after_dispatch
local to_json = require("lapis.util").to_jsonlocal config = require("lapis.config")config("development", {measure_performance = true
})local app = lapis.Application()app:before_filter(function(self)after_dispatch(function()print(to_json(ngx.ctx.performance))end)
end)-- ...return app

更多推荐

lapis的配置及环境

本文发布于:2024-02-17 06:39:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1693045.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:环境   lapis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!