lapis入門

lapis入門

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來安裝lapis

luarocks install lapisapi

建立一個應用

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 環境中的值填充模板變量。這將在下面更詳細地討論。

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

相關文章
相關標籤/搜索