摘要:配置及環境被設計于依據不同環境載入不同的配置來運行服務器。環境名稱僅影響加載的配置。例如,這里有一個的配置塊編譯時,首先檢查環境變量。默認日志記錄位置設置為,在默認的配置中指定。
配置及環境
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" })
配置文件對于訪問組合嵌套的表有著不錯的語法。 MoonScript 和 Lua 都有自己的變體,有關語法的更多細節,請查看相應的指南。[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 和支持庫。這里是他們的列表:
port(number) - Nginx 的端口,在nginx.conf 中默認定義
num_workers(number) - Nginx 啟動的work數,在 nginx.conf 中默認定義
session_name(string) - 將存儲會話的 cookie 的名稱
secret(string) - encode_with_secret使用的秘密密鑰,也用于簽署會話
cookie
measure_performance(bool) - 用于啟用性能時間和查詢跟蹤
logging(table) - 配置要記錄到控制臺或日志文件的事件
配置日志logging 配置鍵可用于禁用 Lapis 默認情況下執行的各種日志記錄。logging配置的默認值為:
{ queries = true, requests = true }
所有日志都使用 OpenResty 提供的 print 函數 對 Nginx 的 notice 日志進行記錄。默認 notice 日志記錄位置設置為 stderr ,在默認的 Lapis Nginx 配置中指定。它可以使用 error_log 指令進行配置。
性能測量如果 measure_performance 配置值設置為 true, Lapis 可以收集各種操作的計時和計數。
這些數據存儲在 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_json local 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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/39494.html
摘要:入門是為和編寫的框架。使用來安裝創建一個應用命令行工具附帶了一個命令行工具,可幫助您創建新項目和啟動服務器。在生產環境中,應當啟用緩存以獲得最佳性能。指令指定一個代碼塊,它將處理與其他不匹配的任何請求。將忽略常規的二進制文件。 lapis入門 Lapis 是為 Lua 和 MoonScript 編寫的 Web 框架。 Lapis 很有趣,因為它建立在Nginx 發行的 OpenRest...
摘要:使用創建應用程序生成一個新項目如果您尚未閱讀,請閱讀入門指南,了解有關創建新項目骨架的信息以及,配置和命令的詳細信息。是包含應用程序的常規模塊。 使用Lua創建Lapis應用程序 生成一個新項目 如果您尚未閱讀,請閱讀入門指南,了解有關創建新項目骨架的信息以及OpenResty,Nginx配置和lapis命令的詳細信息。 您可以在當前目錄中通過運行以下命令啟動一個新的Lua項目: la...
摘要:配置語法配置示例的配置模塊提供了對遞歸合并的支持。例如,我們可以定義一個基本配置,然后覆蓋更多具體的配置聲明中的一些值這將產生以下兩個配置結果默認值省略您可以在相同的配置名稱上調用函數多次,每次將傳入的表合并到配置中。 Lua 配置語法 配置示例 Lapis 的配置模塊提供了對遞歸合并 table 的支持。 例如,我們可以定義一個基本配置,然后覆蓋更多具體的配置聲明中的一些值: --...
摘要:的異常處理錯誤的種類區分兩種錯誤可恢復和不可恢復錯誤。捕獲可恢復的錯誤幫助程序用于包裝一個操作,以便它可以捕獲錯誤并運行錯誤處理程序。相反,使用協同程序創建一個異常處理系統。 lapis的異常處理 錯誤的種類 Lapis 區分兩種錯誤:可恢復和不可恢復錯誤。 Lua 的運行時在執行期間拋出的錯誤或調用錯誤被認為是不可恢復的。 (這也包括 Lua 內置函數 assert ) 因為不可恢復...
閱讀 996·2023-04-26 01:47
閱讀 1680·2021-11-18 13:19
閱讀 2048·2019-08-30 15:44
閱讀 659·2019-08-30 15:44
閱讀 2301·2019-08-30 15:44
閱讀 1239·2019-08-30 14:06
閱讀 1428·2019-08-30 12:59
閱讀 1906·2019-08-29 12:49