使用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 文本文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常好的话题!Nginx和Lua的结合是一个强大的开发组合,它允许您通过编写Lua脚本来扩展和定制Nginx的功能。您可以在Nginx配置文件中使用Lua指令,并在Lua脚本中访问和操作请求和响应对象。 下面是一些关于Nginx Lua开发的常见问题: 1. 如何启用Nginx Lua模块? 要启用Nginx Lua模块,您需要在编译Nginx时添加--with-http_lua_module选项。然后,您可以在Nginx配置文件中使用lua指令。 2. 如何编写Lua脚本并在Nginx中使用? 您可以在Nginx配置文件中使用lua指令来包含和执行Lua脚本。例如,您可以使用lua_block指令将Lua代码块嵌入到配置文件中,或者使用lua_file指令引用外部的Lua脚本文件。 3. Lua脚本可以用于哪些方面的开发使用Lua脚本,您可以在Nginx中执行各种任务,如路由请求、验证和处理请求、修改请求头、访问数据库等。您可以通过编写Lua函数来实现这些功能,并在配置文件中调用它们。 4. 是否有一些常用的Nginx Lua开发库或框架? 是的,有一些常用的Nginx Lua开发库或框架,例如OpenResty和Lapis。OpenResty是一个基于Nginx和Lua的全功能Web应用服务器,提供了许多有用的Lua库和模块。Lapis是一个基于OpenResty的Web框架,简化了使用Lua进行Web开发的过程。 5. 是否有一些示例或教程来学习Nginx Lua开发? 是的,有很多在线资源可以帮助您学习Nginx Lua开发。您可以查阅官方文档、教程和示例代码,也可以参考一些社区分享的博客文章和论坛讨论。 希望这些回答能对您有所帮助!如果您有更多关于Nginx Lua开发的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值