使用Lua做Web开发

Lua应用程序与框架

  • Orbit Lua的MVC Web框架,基于WSAPI。
  • WSAPI 从Lua Web应用程序抽象Web主机服务器的API
  • Xavante 提供WSAPI接口的Lua Web服务器

Orbit

Orbit是Lua的MVC Web框架,完全摈弃CGILua脚本模型,转而支持应用程序,每个Orbit应用程序都可以放在一个文件中,按需可分为多个文件。

Orbit框架运行在WSAPI协议的服务器上,可工作在Xavante和一些CGI和FastCGI程序上。

所有Orbit应用程序都遵守WSAPI协议,因此与Xavante、CGI和FastCGI一起使用,它包含一个启动程序,可轻松启动Xavante实例进行开发。

Windows上安装Orbit

考虑到系统权限问题,推荐不要将引用安装到C盘,否则会引起权限不足的问题。

  1. 安装LuaRocks

https://luarocks.org/modules/luarocks/luasocket

安装Orbit是使用LuaRocks,Luarocks是安装Orbit的命令,因此需要先安装LuaRocks。

LuaRocks是Lua的包管理工具,基于Lua开发,提供命令行来管理Lua包依赖、安装第三方Lua包等。是社区比较流行的的包管理方式之一,还有如LuaDist,但LuaRocks的包数量比LuaDist多。

环境:lua >= 5.1, < 5.2

下载安装Lua5.1

http://luadist.org/
http://luabinaries.sourceforge.net/

将lua的安装路径配置到系统环境变量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

参数说明

  • /F 如果安装目的地已经有安装则强制覆盖
  • /MW 使用MinGW编译
  • /LUA 指定Lua编译器所在路径
  • /P 指定LuaRocks安装路径
  • /NOADMIN 不使用管理员权限
  • /SELFCONTAINED 将LuaRocks建立的各种目录集中到安装目录下
  • /Q 不现实确认操作

安装成功后将生成D:\lua\luarocks,将其路径添加到系统环境path中。

错误说明

# 注意Lua版本为5.1,错误原因是系统Lua版本过高,应使用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 路径添加到环境路径path

$ where luarocks
D:\lua\5.1\bin\luarocks.exe
D:\lua\luarocks\luarocks.bat

打开D:\lua\luarocks\config-5.1.lua文件,检查配置项。

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目录添加到系统环境变量path中,进而可以直接使用LuaRocks安装的可执行文件。注意C:\lua目录及其下级均需要具有写入权限。

  1. 使用LuaRocks安装Kepler-xavante

可直接登录https://luarocks.org搜索需要下载的第三方包

$ luarocks install kepler-xavante

问题:LuaRocks在Win10系统下,安装依赖经常会出现权限问题。

$ luarocks --version
  1. 安装WSAPI、FCCGI、Orbit、Xavante
    要启动应用程序,需要将+ExecCGI添加到Orbit应用程序根目录中的.htaccess文件中。

WSAPI

WSAPI充当项目的基础,其中嵌入许多功能,系统支持Windows和UNIX。
WSAPI支持的服务器 和接口包括:CGI、FastCGI、Xavante
WSAPI提供的库可轻松进行Web编程,主要包括:请求处理、输出缓冲、认证、文件上传、请求隔离、并发传输...

Xavante

Xavante 是一个Lua HTTP 1.1 Web服务器,基于URL映射处理程序的模块化体系结构,目前提供:文件处理程序、重定向处理程序、WSAPI处理程序。

  • 文件处理程序用于常规文件
  • 重定向处理程序启用URI重映射和WSAPI处理程序,以便与WSAPI应用程序一起处理。

Lua的Web组件

  • Copas 基于协同程序的调度程序,可由TCP/IP服务器使用。
  • Cosmo 安全模板引擎,保护应用程序免受模板中任意代码的攻击
  • Cospcall 将Lua native pcall、xpcall、coroutine兼容
  • LuaFileSystem 一种访问底层目录结构和文件属性的可移植方式
  • Rings 提供从Lua内部创建新的Lua状态的方式

Ubuntu配置Lua Web环境

使用root身份安装makemake-guile命令,用于编译源码包。

$ sudo apt install make
$ sudo apt install make-guile

使用root身份安装Lua5.1

$ sudo apt install lua5.1

# 查看Lua当前版本
$ lua -v
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio

使用root身份安装luarocksluarocks是Lua的包管理工具。

$ sudo apt install luarocks

# 查看luarocks版本
$ luarocks -version
/usr/bin/luarocks 2.4.2
LuaRocks main command-line interface

使用luarocks搜索并安装wsapi-xavantewsapi-xavante是支持Web服务API的Web服务器。

$ 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启动web服务器
$ 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

浏览器访问 http://127.0.0.1:8080/hello.lua

使用luarocks安装orbitorbit是基于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 访问

安装vscode编辑器

$ sudo snap install vscode --classic

安装vim编辑器

$ sudo apt install vim

安装mysql数据库

$ sudo apt install mysql-server
$ sudo apt install mysql-client
$ sudo apt install mysql-libmysqlclient-dev

# 查看mysql运行状态
$ service mysql status

# 查看默认密码
$ 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添加新建文件

主目录>模板>右键【在终端打开】

$ sudo gedit 文本文件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容