【原创实践】安装与配置 lua-cjson 在宝塔 Nginx 上

安装与配置 lua-cjson 在宝塔 Nginx 上

1️⃣ 安装 LuaJIT 开发环境

在 Ubuntu 20.04 上安装 LuaJIT 及开发头文件:

bash 复制代码
sudo apt update
sudo apt install luajit libluajit-5.1-dev

确认安装成功:

bash 复制代码
luajit -v

输出类似:

nginx 复制代码
LuaJIT 2.1.0-beta3

确认头文件路径:

bash 复制代码
find /usr -name lua.h

通常会看到:

bash 复制代码
/usr/include/luajit-2.1/lua.h
/usr/local/include/luajit-2.1/lua.h

2️⃣ 下载 lua-cjson 并编译

bash 复制代码
cd /usr/local/src
git clone https://github.com/openresty/lua-cjson.git
cd lua-cjson

使用正确的 LuaJIT include 路径编译:

bash 复制代码
make clean
make LUAJIT=1 LUA_INCLUDE_DIR=/usr/include/luajit-2.1

如果出现路径问题,可以强制指定 CFLAGS:

bash 复制代码
make clean
make LUAJIT=1 LUA_INCLUDE_DIR=/usr/include/luajit-2.1 \
  CFLAGS="-O3 -Wall -fpic -I/usr/include/luajit-2.1"

编译成功后,会生成:

复制代码
cjson.so

3️⃣ 拷贝到 Nginx Lua 模块路径

宝塔 Nginx Lua 模块路径通常为:

swift 复制代码
/www/server/nginx/lib/lua/

将编译好的 cjson.so 拷贝到:

bash 复制代码
cp cjson.so /www/server/nginx/lib/lua/
cp cjson.so /www/server/nginx/lib/lua/5.1/  # 如果存在 5.1 目录

4️⃣ 配置 Nginx lua_package_path 与 lua_package_cpath

编辑 /www/server/nginx/conf/nginx.conf,在 http {} 内加入:

nginx 复制代码
lua_package_path "/www/server/nginx/lib/lua/?.lua;;";
lua_package_cpath "/www/server/nginx/lib/lua/?.so;;";

可以使用命令自动添加:

bash 复制代码
sudo sed -i '/lua_package_path/a\    lua_package_cpath "/www/server/nginx/lib/lua/?.so;;";' /www/server/nginx/conf/nginx.conf

5️⃣ 重启 Nginx

bash 复制代码
sudo nginx -t
sudo systemctl restart nginx

或者通过宝塔面板重载 Nginx。


6️⃣ 测试 lua-cjson 是否可用

在 nginx.conf 临时加入测试 location

nginx 复制代码
location /test_cjson {
    default_type text/plain;
    content_by_lua_block {
        local ok, cjson = pcall(require, "cjson")
        if ok then
            ngx.say("cjson OK")
        else
            ngx.say("cjson NOT FOUND: ", cjson)
        end
    }
}

访问测试:

bash 复制代码
curl http://127.0.0.1/test_cjson

输出:

nginx 复制代码
cjson OK

✅ 表示安装和配置成功。


7️⃣ 总结

  • 安装 LuaJIT 及开发头文件

  • 下载 lua-cjson 并指定正确 include 路径编译

  • 拷贝 cjson.so 到 Nginx Lua 模块目录

  • 配置 lua_package_pathlua_package_cpath

  • 重启 Nginx 并测试

这样 Nginx Lua 就可以正常 require("cjson"),你的 Lua 脚本访问鉴权接口就不会再报 500。

相关推荐
困惑阿三1 小时前
客户消息及时反馈
nginx·node.js·飞书·企业微信
liurunlin8883 小时前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
BullSmall4 小时前
Nginx负载均衡会话保持配置指南
运维·nginx·负载均衡
你才是臭弟弟5 小时前
Nginx部署前后端
运维·nginx
红黑色的圣西罗6 小时前
Lua和C#交互探究记录
c#·lua·交互
_下雨天.16 小时前
Nginx性能调优与深度监控
运维·nginx
weiwx8316 小时前
Nginx location 和 proxy_pass 配置详解
服务器·网络·nginx
向往着的青绿色1 天前
雷池(SafeLine)社区版免费部署教程|从环境检查到防护实操全流程
网络·计算机网络·nginx·网络安全·容器·网络攻击模型·信息与通信
分享牛1 天前
Operaton入门到精通23-Operaton 2.0 原生支持 JUnit 6 核心指南
数据库·junit