成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深度解析LUA Web開發學習筆記

移動開發 iOS
LUA Web開發學習筆記是本文要介紹的內容,主要是來了解LUA中的Web開發,不多說,具體內容的實現來看本文詳解。

LUA Web開發學習筆記是本文要介紹的內容,主要是來了解LUA中的Web開發,不多說,具體內容的實現來看本文詳解。

Kepler環境搭建

我本身是做Web開發的,自然喜歡把新學習的東西往Web方面聯系。提到Web和Lua,所有人都會自然而然的想起一個開源的項目Kepler (http://www.keplerproject.org/)。它給我最大的感覺就是短小精悍,實在有點難以置信,包括Socket, IO, TCP/IP, HTTP, WebCGI等眾多功能模塊的軟件包在內的下載和安裝包,居然只有900K左右!安裝的過程也很簡單,我寫一下我在Windows2003/XP下安裝Kepler的過程:

1、下載并安裝LuaRocks (http://www.luarocks.org/),默認的最新版本安裝目錄在 C:LuaRocks.5.2,安裝之后,推薦將這個目錄加入Windows系統Path環境參數中。

2、在CMD命令窗口中鍵入 luarocks install kepler-xavante (沒加Path參數的,需要打出 luarocks 全路徑),注意,此時你的電腦一定要可以正常連結網絡,以便可以在網上下載Kepler, Xavante程序功能包,會有約3~5分鐘的下載安裝過程。

3、Kepler安裝完成后,C:LuaRocks 目錄下會新建2個子目錄 bin 和 rocks,bin下面是Kepler核心的可執行文件,rocks 下面是它使用到的Lua軟件功能包和配置信息。安裝完成之后,建議將 C:LuaRocks.in 目錄也加入Windows系統Path環境參數中。

4、運行 setup-kepler (沒加Path參數的,需要打出 C:LuaRocks.insetup-kepler )批處理命令進行默認Web站點的配置。我采用Kepler安裝后默認的配置,如果希望改變配置,可以修改 C:LuaRocks

ockskepler1.1-1.in 目錄下 setup-kepler 文件內容。

5、Web站點初始化完畢,會發現 C:LuaRocks 目錄下,又多出一個 kepler 子目錄(此目錄名和以上安裝Web站點的配置有關),這就是以后我們經常關注的站點內容了,打開 C:LuaRockskeplerhtdocs est.lp 文件看看,是不是感覺中間的內容就是Lua語法的ASP/JSP? :)

6、Web網站的內容都具備了,就差啟動Web服務器進程了。運行 xavante_start (沒加Path參數的,需要打出 C:LuaRocks.inxavante_start )批處理命令就可以,關于Web網站的參數配置,下文會詳細介紹。
安裝的工作已經完成了,如果采用的是Kepler的默認配置,那么用你的瀏覽器打開 http://localhost:8080/ 是不是看到Kepler的歡迎頁面了?

喜歡正版攻略的朋友,安裝的過程也可以參照 http://www.keplerproject.org/en/Installation ,不過我感覺它寫的不夠詳細,尤其是最后一步,存在錯誤:直接運行 xavante.exe 文件會造成引用庫找不到的錯誤,不能成功啟動Web服務程序的,這是由于環境路徑沒有配置好的原因,稍微細心點的朋友,打開 C:LuaRocks.inxavante_start.bat 文件,一看便知。

Xavante參數配置

在Kepler軟件包中,真正起Web服務器作用的模塊叫做Xavante。它的配置文件是一個Lua文件,它位于 C:LuaRockskepleretcxavanteconfig.lua ,在使用 setup-kepler 命令安裝站點之前,可以修改Kepler默認的配置文件 C:LuaRocks

ockskepler1.1-1confxavanteconfig.lua 讓你的修改生效于以后所有創建的新網站。下面我們看看這個配置文件的配置內容。(Kepler官方手冊關于Xavante的說明請參見

  1. http://www.keplerproject.org/xavante/ 

這個文件的默認內容:

-- 文件開頭關于版權信息略去

  1. require "xavante.filehandler"  
  2. require "xavante.cgiluahandler"  
  3. require "xavante.redirecthandler"  
  4. require "orbit.ophandler"  
  5.  
  6. -- Define here where Xavante HTTP documents scripts are located  
  7. local webDir = XAVANTE_WEB 
  8. local simplerules = {  
  9. { -- URI remapping example  
  10. match = "^/$",  
  11. with = xavante.redirecthandler,  
  12. params = {"index.lp"}  
  13. },   
  14. { -- cgiluahandler example  
  15. match = {"%.lp$", "%.lp/.*$", "%.lua$", "%.lua/.*$" },  
  16. with = xavante.cgiluahandler.makeHandler (webDir)  
  17. },  
  18. { -- ophandler example  
  19. match = {"%.op$", "%.op/.*$" },  
  20. with = orbit.ophandler.makeHandler (webDir)  
  21. },  
  22. { - wsapihandler example  
  23. match = {"%.ws$", "%.ws/" },  
  24. with = wsapi.xavante.makeGenericHandler (webDir)  
  25. },  
  26. { -- filehandler example  
  27. match = ".",  
  28. with = xavante.filehandler,  
  29. params = {baseDir = webDir}  
  30. },  
  31. }   
  32.  Displays a message in the console with the used ports  
  33. xavante.start_message(function (ports)  
  34. local date = os.date("[%Y-%m-%d %H:%M:%S]")  
  35. print(string.format("%s Xavante started on port(s) %s",  
  36. date, table.concat(ports, ", ")))  
  37. end)  
  38. xavante.HTTP{  
  39. server = {host = "*"port = 8080},  
  40. defaultHost = {  
  41. rules = simplerules 
  42. },  

文件共分3個部分:

  1. simplerules, xavante.start_message, xavante.HTTP: 

simplerules :類似于ASP.Net在IIS里面的URL Rewrite功能的URL重發功能,說白了就是依次檢索,找到匹配的Request URL正則項,轉發給這個匹配項中所定義的Web站點中某個腳本文件進行運算,最后返回HTTP Response的內容。

xavante.start_message :用于記錄每次Xavante進程啟動后,程序發生的Log記錄格式的配置。

xavante.HTTP: 用于Web服務器主要參數配置。修改port = 8080, 可以修改HTTP服務的默認端口。如果想在你的Xavante服務器上綁定域名,請添加一項:

  1. virtualHosts = {  
  2. ["www.rex.com"] = simplerules --www.rex.com 就是你自己網站的域名  
  3. }, 

注意:這里 virtualHosts 的 H 一定要大寫,否則程序將報錯!這一點,是Kepler官方網站資料上存在筆誤,我調了半個多小時才嘗試出來這一點,希望后來的朋友少走點彎路。還有就是,配置了 virtualHosts 節之后,原來的 defaultHost 節內容不能去掉,不然也會造成程序出錯,加入了域名綁定后,我完整的 xavante.HTTP 配置如下:

  1. xavante.HTTP{  
  2. server = {host = "*"port = 80},  
  3. defaultHost = {  
  4. rules = simplerules 
  5. },  
  6. virtualHosts = {  
  7. ["www.rex.com"] = simplerules  
  8. },  

注意:如果這事你有其它Web服務程序(如Appach ISS等)同時使用80端口,也將造成Xavante啟動出錯。因此,請在啟動Xavante之前,暫停其它Web服務程序。這一點,我一直很費解:為什么Xavante的配置非要將Port的配置強制加到每個站點上去呢?我是新手,請熟悉的朋友指教一二,非常感謝!

我嘗試使用Kepler和Xavante只有2天左右,先寫這么多,希望有機會和對此感興趣的朋友討論學習!

將LUA嵌入ASP.Net頁面

考慮到Xavante的穩定性問題,我決定嘗試一下使用IIS作為Web服務器,并且在ASP.Net里面使用Progress對象調用LUA的VM來調用LUA代碼。新建一個ASPX頁面,寫入以下Code behind代碼:

  1. using System.Collections;  
  2. using System.Configuration;  
  3. using System.Data;  
  4. using System.Linq;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.HtmlControls;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.WebControls.WebParts;  
  11. using System.Xml.Linq;  
  12. using System.Diagnostics;  
  13. public partial class _Default : System.Web.UI.Page  
  14. {  
  15. protected void Page_Load(object sender, EventArgs e)  
  16. {  
  17. if (!object.Equals(Request["lua"], null))  
  18. {  
  19. string luaFile = Request["lua"];  
  20. if (!string.IsNullOrEmpty(luaFile))  
  21. {  
  22. Response.Cache.SetNoStore();  
  23. Response.Cache.SetNoServerCaching();  
  24. string output = _Default.EnvokeLua(this, luaFile);  
  25. Response.Write(output);  
  26. Response.End();  
  27. }  
  28. }  
  29. }  
  30.  
  31. static string EnvokeLua(Page pg,string luaFile)  
  32. {  
  33. string rtval = string.Empty;  
  34. HttpServerUtility hsu = pg.Server;  
  35. string exeFile = hsu.MapPath("~/lib/lua.exe");  
  36. string luaPath = hsu.MapPath(string.Format("~/lua/{0}.lua", luaFile));  
  37. using (Process proc = new Process())  
  38. {  
  39. proc.StartInfo.FileName = exeFile;  
  40. proc.StartInfo.Arguments = string.Format(@" {0}", luaPath);  
  41. proc.StartInfo.RedirectStandardOutput = true;  
  42. proc.StartInfo.UseShellExecute = false;  
  43. proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;  
  44. proc.Start();  
  45. proc.WaitForExit();  
  46. rtval = proc.StandardOutput.ReadToEnd();  
  47. }  
  48. return rtval;  
  49. }  

這樣很簡單,通過一個ASPX頁面作為代理,就可以解釋執行LUA文件了:通過訪問 http://localhost/default.aspx?lua=abc.lua ,你就可以解釋執行位于該網站相對LUA目錄下 abc.lua 文件,并獲得輸出,在通過HTTP Response的方式獲得輸出了。這種純粹的Text輸出方式,也比較適合使用AJAX和REST的Web程序中。

小結:深度解析LUA Web開發學習筆記的內容介紹完了,希望通過本文的學習能對你有所幫助!學習筆記的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-23 17:33:08

LuaMetatable

2011-08-24 15:22:09

2011-09-07 17:19:16

Web widget

2011-08-23 13:15:37

LUAPackage

2011-08-23 11:13:56

Lua

2011-08-29 10:01:27

QTWebkit插件

2011-08-29 18:09:45

LUAWeb開發服務器

2011-08-23 17:52:39

LUAWeb 開發

2015-09-09 09:39:59

網絡Web

2019-03-06 09:55:54

Python 開發編程語言

2010-06-12 13:08:51

UML全稱

2010-07-27 15:42:18

AdobeFlex

2016-12-15 09:44:31

框架Caffe源碼

2016-11-01 15:32:43

深度學習

2023-03-06 16:24:38

Web組件H5小程序

2011-08-25 16:38:06

EditPluslua

2011-08-23 16:22:45

Lua 4.0函數

2025-06-18 09:34:42

2010-06-28 15:41:17

UML圖類型

2010-06-28 18:44:54

UML對象圖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av一二三区 | 九色网址| av在线一区二区 | 在线免费观看黄a | 日韩高清中文字幕 | 久精品视频 | 午夜精品久久久久久久久久久久 | 一区二区三区欧美在线 | 九九伦理电影 | 毛片在线免费播放 | 亚洲欧美激情精品一区二区 | 久久综合影院 | 伊人手机在线视频 | 人人干天天干 | 国产伦精品一区二区三区高清 | 欧美黑人体内she精在线观看 | 99精品国自产在线观看 | 亚洲精品日韩欧美 | 欧美成人一区二免费视频软件 | 日本在线免费看最新的电影 | 91免费视频 | www.免费看片.com | 欧美国产91 | 中文字幕在线精品 | 欧美亚洲视频 | 精品久久久久久久久久久久久久 | 91精品一区二区三区久久久久久 | 99热这里有精品 | 久久99精品视频 | 日韩在线资源 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 欧美成人精品一区二区男人看 | 精品麻豆剧传媒av国产九九九 | 亚洲精品久久久久中文字幕二区 | 日本在线视频一区二区 | 男人的天堂久久 | 欧美色综合天天久久综合精品 | 国产精品久久久久久久久久久久久 | 色偷偷噜噜噜亚洲男人 | 欧美在线综合 | 国内自拍视频在线观看 |