Linux系统安装Lua语言及Lua外部库

安装Lua

Lua语言是一种轻量级、高效且可扩展的脚本语言,具有简洁易学的语法和占用资源少的特点。它支持动态类型,提供了丰富的表达式和运算符,同时具备自动垃圾回收机制和跨平台性。Lua语言易于嵌入到其他应用程序中,并可与其他语言进行交互,因此在游戏开发、移动应用开发、嵌入式系统和网络服务等领域有着广泛的应用。

lua语言官方网站: The Programming Language Lua

在Linux系统安装Lua语言非常简洁,先更新软件列表:

bash 复制代码
sudo apt update

安装Lua语言:

bash 复制代码
sudo apt install lua5.4

安装Lua语言开发相关的资源包,有了它以后开发者可以编写C/C++代码来扩展Lua的功能,实现一些在Lua脚本中难以实现或者效率较低的操作。

bash 复制代码
sudo apt-get install liblua5.4-dev

验证下是否安装成功:

bash 复制代码
lua -v

安装Lua包管理器luarocks(在/home家目录)

bash 复制代码
wget https://luarocks.org/releases/luarocks-3.11.1.tar.gz

解压压缩包

bash 复制代码
tar zxpf luarocks-3.11.1.tar.gz

安装相关配置

bash 复制代码
 ./configure && make && sudo make install

在终端输入:

bash 复制代码
 lua

经典的hello world

Lua 复制代码
print("hello world")

在终端输入命令即可运行lua脚本:

bash 复制代码
lua hello.lua

安装外部的Lua库并搭建一个Web服务器

Lua有时会用到luasql库操作数据库(目前是支持lua5.3),还有使用lua来编写Nginx服务器脚本,我这里是构建了一个简单的Web服务器:

使用luarocks安装lua的网络套接字库luasocket

bash 复制代码
sudo luarocks install luasocket

在Lua的交互页面输入命令即可导入luasocket包:

Lua 复制代码
require("socket")

编写脚本并引入luasocket库,开启8080端口

Lua 复制代码
local socket = require("socket")  
local server = socket.bind("*", 8080)  
local ip, port = server:getsockname()  
  
print("ip地址", ip, "端口", port)  
  
while true do  
    local client = server:accept()  
    client:settimeout(0)  
  
    local line, err = client:receive()  
    if not err then  
        print("Received line: ", line)  
  
        local response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nGay Away!!!!"  
        client:send(response)  
    end  
  
    client:close()  
end

运行成功后在浏览器输入 虚拟机或服务器的ip地址:8080 即可看到我们想输出的信息

构建一个可以打开HTML文件的Web服务器

Lua 复制代码
local socket = require("socket")  
local server = socket.bind("*", 8080)  
local ip, port = server:getsockname()  
local fs = require("io")  -- 用于文件操作  
  
print("服务器监听在 ip地址 ", ip, " 端口 ", port)  
  
while true do  
    local client = server:accept()  
    client:settimeout(0)  
  
    local line, err = client:receive()  
    if not err then  
        print("Received line: ", line)  
  
        -- 读取index.html文件的内容  
        local file, err = fs.open("index.html", "r")  
        if not err then  
            local content = file:read("*a") -- 读取文件所有内容  
            file:close()  
  
            -- 构造HTTP响应  
            local response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n" .. content  
            client:send(response)  
        else  
            print("Error opening file: ", err)  
            local response = "HTTP/1.1 500 Internal Server Error\r\n\r\nError opening index.html"  
            client:send(response)  
        end  
    end  
  
    client:close()  
end

运行成功:

相关推荐
橙*^O^*安10 分钟前
Go 语言基础:变量与常量
运维·开发语言·后端·golang·kubernetes
NiKo_W13 分钟前
Linux 文件系统与基础指令
linux·开发语言·指令
工程师小星星19 分钟前
Golang语言的文件组织方式
开发语言·后端·golang
乂爻yiyao19 分钟前
java 代理模式实现
java·开发语言·代理模式
张子夜 iiii1 小时前
实战项目-----Python+OpenCV 实现对视频的椒盐噪声注入与实时平滑还原”
开发语言·python·opencv·计算机视觉
2301_770373731 小时前
Java集合
java·开发语言
啊?啊?1 小时前
18 从对象内存到函数调用:C++ 虚函数表原理(继承覆盖 / 动态绑定)+ 多态实战
开发语言·c++·多态原理
bkspiderx2 小时前
C++标准库:文件流类
开发语言·c++
阿拉斯加大闸蟹2 小时前
基于RDMA 通信的可负载均衡高性能服务架构
运维·架构·负载均衡
Darkwanderor2 小时前
Linux 的权限详解
linux