Lua應(yīng)用程序與框架
- Orbit Lua的MVC Web框架,基于WSAPI。
- WSAPI 從Lua Web應(yīng)用程序抽象Web主機(jī)服務(wù)器的API
- Xavante 提供WSAPI接口的Lua Web服務(wù)器
Orbit
Orbit是Lua的MVC Web框架,完全擯棄CGILua腳本模型,轉(zhuǎn)而支持應(yīng)用程序,每個(gè)Orbit應(yīng)用程序都可以放在一個(gè)文件中,按需可分為多個(gè)文件。
Orbit框架運(yùn)行在WSAPI協(xié)議的服務(wù)器上,可工作在Xavante和一些CGI和FastCGI程序上。
所有Orbit應(yīng)用程序都遵守WSAPI協(xié)議,因此與Xavante、CGI和FastCGI一起使用,它包含一個(gè)啟動(dòng)程序,可輕松啟動(dòng)Xavante實(shí)例進(jìn)行開(kāi)發(fā)。
Windows上安裝Orbit
考慮到系統(tǒng)權(quán)限問(wèn)題,推薦不要將引用安裝到C盤(pán),否則會(huì)引起權(quán)限不足的問(wèn)題。
- 安裝LuaRocks
https://luarocks.org/modules/luarocks/luasocket
安裝Orbit是使用LuaRocks,Luarocks是安裝Orbit的命令,因此需要先安裝LuaRocks。
LuaRocks是Lua的包管理工具,基于Lua開(kāi)發(fā),提供命令行來(lái)管理Lua包依賴(lài)、安裝第三方Lua包等。是社區(qū)比較流行的的包管理方式之一,還有如LuaDist,但LuaRocks的包數(shù)量比LuaDist多。
環(huán)境:lua >= 5.1, < 5.2
下載安裝Lua5.1
http://luadist.org/
http://luabinaries.sourceforge.net/
將lua的安裝路徑配置到系統(tǒng)環(huán)境變量path中
$ lua -v
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
下載安裝LuaRocks3.0.4
http://luarocks.github.io/luarocks/releases/luarocks-3.0.2-win32.zip
http://luarocks.github.io/luarocks/releases/luarocks-3.0.4-win32.zip
$ cd luarocks-3.0.4
$ install.bat /F /MW /LUA "d:\lua\5.1" /P "d:\lua\luarocks" /NOADMIN /SELFCONTAINED /Q
$ luarocks --version
參數(shù)說(shuō)明
-
/F如果安裝目的地已經(jīng)有安裝則強(qiáng)制覆蓋 -
/MW使用MinGW編譯 -
/LUA指定Lua編譯器所在路徑 -
/P指定LuaRocks安裝路徑 -
/NOADMIN不使用管理員權(quán)限 -
/SELFCONTAINED將LuaRocks建立的各種目錄集中到安裝目錄下 -
/Q不現(xiàn)實(shí)確認(rèn)操作
安裝成功后將生成D:\lua\luarocks,將其路徑添加到系統(tǒng)環(huán)境path中。
錯(cuò)誤說(shuō)明
# 注意Lua版本為5.1,錯(cuò)誤原因是系統(tǒng)Lua版本過(guò)高,應(yīng)使用Lua5.1。
Could not find Lua. See /? for options for specifying the location of Lua, or installing a bundled copy of Lua 5.1.
將生成的 LuaRocks 路徑添加到環(huán)境路徑path中
$ where luarocks
D:\lua\5.1\bin\luarocks.exe
D:\lua\luarocks\luarocks.bat
打開(kāi)D:\lua\luarocks\config-5.1.lua文件,檢查配置項(xiàng)。
rocks_trees = {
{ name = [[user]],
root = home..[[/luarocks]],
},
{ name = [[system]],
root = [[c:\lua\luarocks\systree]],
},
}
variables = {
MSVCRT = 'm', -- make MinGW use MSVCRT.DLL as runtime
LUALIB = 'liblua.dll.a',
CC = [[C:\MinGW\bin\gcc.exe]],
MAKE = [[C:\MinGW\bin\make.exe]],
RC = [[C:\MinGW\bin\windres.exe]],
LD = [[C:\MinGW\bin\gcc.exe]],
AR = [[C:\MinGW\bin\ar.exe]],
RANLIB = [[C:\MinGW\bin\ranlib.exe]],
}
verbose = false -- set to 'true' to enable verbose output
將D:\lua\luarocks\systree\bin目錄添加到系統(tǒng)環(huán)境變量path中,進(jìn)而可以直接使用LuaRocks安裝的可執(zhí)行文件。注意C:\lua目錄及其下級(jí)均需要具有寫(xiě)入權(quán)限。
- 使用LuaRocks安裝Kepler-xavante
可直接登錄https://luarocks.org搜索需要下載的第三方包
$ luarocks install kepler-xavante
問(wèn)題:LuaRocks在Win10系統(tǒng)下,安裝依賴(lài)經(jīng)常會(huì)出現(xiàn)權(quán)限問(wèn)題。
$ luarocks --version
- 安裝WSAPI、FCCGI、Orbit、Xavante
要啟動(dòng)應(yīng)用程序,需要將+ExecCGI添加到Orbit應(yīng)用程序根目錄中的.htaccess文件中。
WSAPI
WSAPI充當(dāng)項(xiàng)目的基礎(chǔ),其中嵌入許多功能,系統(tǒng)支持Windows和UNIX。
WSAPI支持的服務(wù)器 和接口包括:CGI、FastCGI、Xavante
WSAPI提供的庫(kù)可輕松進(jìn)行Web編程,主要包括:請(qǐng)求處理、輸出緩沖、認(rèn)證、文件上傳、請(qǐng)求隔離、并發(fā)傳輸...
Xavante
Xavante 是一個(gè)Lua HTTP 1.1 Web服務(wù)器,基于URL映射處理程序的模塊化體系結(jié)構(gòu),目前提供:文件處理程序、重定向處理程序、WSAPI處理程序。
- 文件處理程序用于常規(guī)文件
- 重定向處理程序啟用URI重映射和WSAPI處理程序,以便與WSAPI應(yīng)用程序一起處理。
Lua的Web組件
- Copas 基于協(xié)同程序的調(diào)度程序,可由TCP/IP服務(wù)器使用。
- Cosmo 安全模板引擎,保護(hù)應(yīng)用程序免受模板中任意代碼的攻擊
- Cospcall 將Lua native pcall、xpcall、coroutine兼容
- LuaFileSystem 一種訪(fǎng)問(wèn)底層目錄結(jié)構(gòu)和文件屬性的可移植方式
- Rings 提供從Lua內(nèi)部創(chuàng)建新的Lua狀態(tài)的方式
Ubuntu配置Lua Web環(huán)境
使用root身份安裝make和make-guile命令,用于編譯源碼包。
$ sudo apt install make
$ sudo apt install make-guile
使用root身份安裝Lua5.1
$ sudo apt install lua5.1
# 查看Lua當(dāng)前版本
$ lua -v
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
使用root身份安裝luarocks,luarocks是Lua的包管理工具。
$ sudo apt install luarocks
# 查看luarocks版本
$ luarocks -version
/usr/bin/luarocks 2.4.2
LuaRocks main command-line interface
使用luarocks搜索并安裝wsapi-xavante,wsapi-xavante是支持Web服務(wù)API的Web服務(wù)器。
$ luarocks search wsapi-xavante
$ sudo luarocks install wsapi-xavante
Installing https://luarocks.org/wsapi-xavante-1.7-1.src.rock
wsapi-xavante 1.7-1 is now installed in /usr/local (license: MIT/X11)
$ wsapi --help
$ sudo find / -name wsapi
/usr/local/bin/wsapi
/usr/local/lib/luarocks/rocks/wsapi
/usr/local/lib/luarocks/rocks/wsapi-xavante/1.7-1/bin/wsapi
/usr/local/share/lua/5.1/wsapi
# 使用wsapi啟動(dòng)web服務(wù)器
$ cd /usr/local/lib/luarocks/rocks/wsapi/1.7-1/samples
$ wsapi
[Xavante launcher] Starting Xavante...
[2019-01-20 20:23:28] Xavante started on port(s) 8080
瀏覽器訪(fǎng)問(wèn) http://127.0.0.1:8080/hello.lua
使用luarocks安裝orbit,orbit是基于WSAPI的MVC框架。
$ luarocks search orbit
$ sudo luarocks install orbit
$ cd /usr/local/lib/luarocks/rocks/orbit/2.2.4-1/samples
$ wsapi
[Xavante launcher] Starting Xavante...
[2019-01-20 20:30:37] Xavante started on port(s) 8080
$ wsapi -p8090
$ wsapi -p8090 &
$ orbit -p 8090 &
瀏覽器輸入http://127.0.0.1:8080/hello/hello.lua 訪(fǎng)問(wèn)
安裝vscode編輯器
$ sudo snap install vscode --classic
安裝vim編輯器
$ sudo apt install vim
安裝mysql數(shù)據(jù)庫(kù)
$ sudo apt install mysql-server
$ sudo apt install mysql-client
$ sudo apt install mysql-libmysqlclient-dev
# 查看mysql運(yùn)行狀態(tài)
$ service mysql status
# 查看默認(rèn)密碼
$ vim /etc/mysql/debian.conf
user:sys-debian-maint
password:xxxxxxxxxxxxxxx
# 登錄mysql
$ mysql -u sys-debian-maint -p
安裝net-tools
$ sudo apt install net-tools
$ sudo netstat -tap | grep mysql
tcp 0 0 localhost:mysql 0.0.0.0:* LISTEN 24222/mysqld
ubuntu添加新建文件
主目錄>模板>右鍵【在終端打開(kāi)】
$ sudo gedit 文本文件