Lua中使用Web开发

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1Lua中使用Web开发目录Kepler环境搭建..................................................................................................2Xavante参数配置...............................................................................................3将LUA嵌入ASP.Net页面....................................................................................5标签:lua,web服务器,web开发,web服务2LUA中使用Web开发初探是本文要介绍的内容,主要是来了解并学习在lua中如何实现web开发的,具体内容来看本文详细内容讲解。Kepler环境搭建我本身是做Web开发的,自然喜欢把新学习的东西往Web方面联系。提到Web和Lua,所有人都会自然而然的想起一个开源的项目Kepler()。它给我最大的感觉就是短小精悍,实在有点难以置信,包括Socket,IO,TCP/IP,HTTP,WebCGI等众多功能模块的软件包在内的下载和安装包,居然只有900K左右!安装的过程也很简单,我写一下我在Windows2003/XP下安装Kepler的过程:1、下载并安装LuaRocks(),默认的最新版本安装目录在C:LuaRocks.5.2,安装之后,推荐将这个目录加入Windows系统Path环境参数中。2、在CMD命令窗口中键入luarocksinstallkepler-xavante(没加Path参数的,需要打出luarocks全路径),注意,此时你的电脑一定要可以正常连结网络,以便可以在网上下载Kepler,Xavante程序功能包,会有约3~5分钟的下载安装过程。3、Kepler安装完成后,C:LuaRocks目录下会新建2个子目录bin和rocks,bin下面是Kepler核心的可执行文件,rocks下面是它使用到的Lua软件功能包和配置信息。安装完成之后,建议将C:LuaRocksin目录也加入Windows系统Path环境参数中。4、运行setup-kepler(没加Path参数的,需要打出C:LuaRocksinsetup-kepler)批处理命令进行默认Web站点的配置。我采用Kepler安装后默认的配置,如果希望改变配置,可以修改C:LuaRocksockskepler1.1-1in目录下setup-kepler文件内容。5、Web站点初始化完毕,会发现C:LuaRocks目录下,又多出一个kepler子目录(此目录名和以上安装Web站点的配置有关),这就是以后我们经常关注的站点内容了,打开C:LuaRockskeplerhtdocsest.lp文件看看,是不是感觉中间的内容就是Lua语法的ASP/JSP?:)6、Web网站的内容都具备了,就差启动Web服务器进程了。运行xavante_start(没加Path参数的,需要打出C:LuaRocksinxavante_start)批处理命令就可以,关于Web网站的参数配置,下文会详细介绍。安装的工作已经完成了,如果采用的是Kepler的默认配置,那么用你的浏览器打开是不是看到Kepler的欢迎页面了?3喜欢正版攻略的朋友,安装的过程也可以参照,不过我感觉它写的不够详细,尤其是最后一步,存在错误:直接运行xavante.exe文件会造成引用库找不到的错误,不能成功启动Web服务程序的,这是由于环境路径没有配置好的原因,稍微细心点的朋友,打开C:LuaRocksinxavante_start.bat文件,一看便知。Xavante参数配置在Kepler软件包中,真正起Web服务器作用的模块叫做Xavante。它的配置文件是一个Lua文件,它位于C:LuaRockskepleretcxavanteconfig.lua,在使用setup-kepler命令安装站点之前,可以修改Kepler默认的配置文件C:LuaRocksockskepler1.1-1confxavanteconfig.lua让你的修改生效于以后所有创建的新网站。下面我们看看这个配置文件的配置内容。这个文件的默认内容:--文件开头关于版权信息略去requirexavante.filehandlerrequirexavante.cgiluahandlerrequirexavante.redirecthandlerrequireorbit.ophandler--DefineherewhereXavanteHTTPdocumentsscriptsarelocatedlocalwebDir=XAVANTE_WEBlocalsimplerules={{--URIremappingexamplematch=^/$,with=xavante.redirecthandler,params={index.lp}},{--cgiluahandlerexamplematch={%.lp$,%.lp/.*$,%.lua$,%.lua/.*$},with=xavante.cgiluahandler.makeHandler(webDir)},{--ophandlerexamplematch={%.op$,%.op/.*$},with=orbit.ophandler.makeHandler(webDir)},{--wsapihandlerexamplematch={%.ws$,%.ws/},with=wsapi.xavante.makeGenericHandler(webDir)},{--filehandlerexamplematch=.,with=xavante.filehandler,params={baseDir=webDir}},4}--Displaysamessageintheconsolewiththeusedportsxavante.start_message(function(ports)localdate=os.date([%Y-%m-%d%H:%M:%S])print(string.format(%sXavantestartedonport(s)%s,date,table.concat(ports,,)))end)xavante.HTTP{server={host=*,port=8080},defaultHost={rules=simplerules},}文件共分3个部分:simplerules,xavante.start_message,xavante.HTTP:simplerules:类似于ASP.Net在IIS里面的URLRewrite功能的URL重发功能,说白了就是依次检索,找到匹配的RequestURL正则项,转发给这个匹配项中所定义的Web站点中某个脚本文件进行运算,最后返回HTTPResponse的内容。xavante.start_message:用于记录每次Xavante进程启动后,程序发生的Log记录格式的配置。xavante.HTTP:用于Web服务器主要参数配置。修改port=8080,可以修改HTTP服务的默认端口。如果想在你的Xavante服务器上绑定域名,请添加一项:virtualHosts={[]=simplerules--就是你自己网站的域名},注意:这里virtualHosts的H一定要大写,否则程序将报错!这一点,是Kepler官方网站资料上存在笔误,我调了半个多小时才尝试出来这一点,希望后来的朋友少走点弯路。还有就是,配置了virtualHosts节之后,原来的defaultHost节内容不能去掉,不然也会造成程序出错,加入了域名绑定后,我完整的xavante.HTTP配置如下:xavante.HTTP{server={host=*,port=80},defaultHost={rules=simplerules},virtualHosts={[]=simplerules},}5注意:如果这事你有其它Web服务程序(如AppachISS等)同时使用80端口,也将造成Xavante启动出错。因此,请在启动Xavante之前,暂停其它Web服务程序。这一点,我一直很费解:为什么Xavante的配置非要将Port的配置强制加到每个站点上去呢?我是新手,请熟悉的朋友指教一二,非常感谢!我尝试使用Kepler和Xavante只有2天左右,先写这么多,希望有机会和对此感兴趣的朋友讨论学习!将LUA嵌入ASP.Net页面考虑到Xavante的稳定性问题,我决定尝试一下使用IIS作为Web服务器,并且在ASP.Net里面使用Progress对象调用LUA的VM来调用LUA代码。新建一个ASPX页面,写入以下Codebehind代码:usingSystem.Collections;usingSystem.Configuration;usingSystem.Data;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.HtmlControls;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Xml.Linq;usingSystem.Diagnostics;publicpartialclass_Default:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){if(!object.Equals(Request[lua],null)){stringluaFile=Request[lua];if(!string.IsNullOrEmpty(luaFile){Response.Cache.SetNoStore();Response.Cache.SetNoServerCaching();stringoutput=_Default.EnvokeLua(this,luaFile);Response.Write(output);Response.End();}}}staticstringEnvokeLua(Pagepg,stringluaFile){stringrtval=string.Empty;HttpServerUtilityhsu=pg.Server;stringexeFile=hsu.MapPath(~/lib/lua.exe);stringluaPath=hsu.MapPath(string.Format(~/lua/{0}.lua,luaFile));using(Processproc=newProcess()){6proc.StartInfo.FileName=exeFile;proc.StartInfo.Arguments=string.Format(@{0},luaPath);proc.StartInfo.RedirectStandardOutput=true;proc.StartInfo.UseShellExecute=false;proc.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;proc.S

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功