$ sudo apt-get install apache2 libapache2-mod-fcgid libfcgi-dev build-essential$ sudo a2enmod rewrite$ sudo a2enmod fcgid$ sudo /etc/init.d/apache2 force-reload安装LuaRocks
$ sudo apt-get install luarocks
安装WSAPI,FCGI,Orbit和Xavante
$ sudo luarocks install orbit$ sudo luarocks install wsapi-xavante$ sudo luarocks install wsapi-fcgi
设置Apache2
$ sudo raj /etc/apache2/sites-available/default
在< Directory/var/www/>下面添加以下部分.配置文件的一部分.如果此部分具有'AllowOverride None',则需要将'None'更改为'All',以便.htaccess文件可以在本地覆盖配置.
AddHandler fcgid-script .lua AddHandler fcgid-script .ws AddHandler fcgid-script .op FCGIWrapper "/usr/local/bin/wsapi.fcgi" .ws FCGIWrapper "/usr/local/bin/wsapi.fcgi" .lua FCGIWrapper "/usr/local/bin/op.fcgi" .op #FCGIServer "/usr/local/bin/wsapi.fcgi" -idle-timeout 60 -processes 1 #IdleTimeout 60 #ProcessLifeTime 60
重启服务器以确保所做的更改生效.
要启用您的应用程序,您需要添加+ ExecCGI到Orbit应用程序根目录中的.htaccess文件 : 在这种情况下,/var/www.
Options +ExecCGIDirectoryIndex index.ws
简单示例 : 轨道
#!/usr/bin/env index.lua-- index.luarequire"orbit"-- declarationmodule("myorbit", package.seeall, orbit.new)-- handlerfunction index(web) return my_home_page()end-- dispatchmyorbit:dispatch_get(index, "/", "/index")-- Sample pagefunction my_home_page() return [[ First Page
]]end
现在,您应该可以启动网络浏览器了.转到http://localhost:8080/,您应该看到以下输出 :
First Page
Orbit提供另一个选项,即Lua代码可以生成html.
#!/usr/bin/env index.lua-- index.luarequire"orbit"function generate() return html { head{title "HTML Example"}, body{ h2{"Here we go again!"} } }endorbit.htmlify(generate)print(generate())
创建表单
一个简单的表单示例如下所示 :
#!/usr/bin/env index.luarequire"orbit"function wrap (inner) return html{ head(), body(inner) }endfunction test () return wrap(form (H'table' { tr{td"First name",td( input{type = 'text', name='first'})}, tr{td"Second name",td(input{type = 'text', name='second'})}, tr{ td(input{type = 'submit', value = 'Submit!'}), td(input{type = 'submit',value = 'Cancel'}) }, }))endorbit.htmlify(wrap,test)print(test())
WSAPI
如前所述,WSAPI充当许多项目的基础,并在其中嵌入了多个功能.您可以使用WSAPI并支持以下平台,
WSAPI支持的服务器和接口包括,
WSAPI提供了许多库,这使我们更容易使用Lua进行Web编程. Lua中的一些受支持的功能包括,
WSAPI的一个简单示例如下所示 :
#!/usr/bin/env wsapi.cgimodule(..., package.seeall)function run(wsapi_env) local headers = { ["Content-type"] = "text/html" } local function hello_text() coroutine.yield("您可以在上面的代码中看到形成并返回一个简单的html页面.您可以看到协同程序的用法,它可以将语句返回到调用函数.最后,返回html状态代码(200),标题和html页面.
Xavante
Xavante是一个Lua HTTP 1.1 Web服务器,它使用了基于URI映射处理程序的模块化体系结构. Xavante目前提供,
文件处理程序用于常规文件.重定向处理程序启用URI重映射和WSAPI处理程序以处理WSAPI应用程序.
下面显示了一个简单示例.
require "xavante.filehandler"require "xavante.cgiluahandler"require "xavante.redirecthandler"-- Define here where Xavante HTTP documents scripts are locatedlocal webDir = XAVANTE_WEBlocal simplerules = { { -- URI remapping example match = "^[^%./]*/$", with = xavante.redirecthandler, params = {"index.lp"} }, { -- cgiluahandler example match = {"%.lp$", "%.lp/.*$", "%.lua$", "%.lua/.*$" }, with = xavante.cgiluahandler.makeHandler (webDir) }, { -- filehandler example match = ".", with = xavante.filehandler, params = {baseDir = webDir} },} xavante.HTTP{ server = {host = "*", port = 8080}, defaultHost = { rules = simplerules },}
要使用Xavante的虚拟主机,对xavante.HTTP的调用将更改为如下 :
xavante.HTTP{ server = {host = "*", port = 8080}, defaultHost = {}, virtualhosts = { ["www.sitename.com"] = simplerules }}
Lua Web Components
Copas ,一个基于协同程序的调度程序,可以由TCP/IP服务器使用.
Cosmo ,一个"安全模板"引擎,可以保护您的应用程序免受模板中任意代码的攻击.
Coxpcall 将Lua native pcall和xpcall封装为与coroutine兼容的.
LuaFileSystem ,一种可移植的方式访问底层目录结构和文件属性s.
Rings ,这是一个提供从Lua内部创建新Lua状态的方法的库.
结束注释
有很多基于Lua的Web框架和组件可供我们使用,根据需要,它可以选择.还有其他可用的Web框架,其中包括以下内容;
Moonstalk 可实现高效开发和托管使用Lua语言构建的动态生成的基于Web的项目;从基本页面到复杂的应用程序.
Lapis ,一个使用MoonScript(或Lua)构建Web应用程序的框架. Nginx的自定义版本,名为OpenResty.
Lua Server Pages ,一个Lua脚本引擎插件,可以消除任何其他方法嵌入式Web开发,为传统的C服务器页面提供了显着的捷径.
这些Web框架可以利用您的Web应用程序并帮助您在做强大的操作.