【原创实践】安装与配置 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_path 与 lua_package_cpath

  • 重启 Nginx 并测试

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

相关推荐
2601_965619697 小时前
AI视频制作:财经数据可视化视频怎么做:AI 自动生成图表动画的实操流程
人工智能·nginx·音视频
2601_965619698 小时前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
姜鱼问生1 天前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器
xixingzhe22 天前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
北风toto2 天前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
卜锦元2 天前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
小小龙学IT2 天前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源
Coisinier3 天前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
2301_32241428043 天前
基于web的校园失物招领管理系统59695-计算机毕设 原创(免费领源码+部署教程+开发环境)
mysql·nginx·php·apache·thinkphp·phpstudy·wampserver
flytalei3 天前
从YAML到Nginx服务访问:动手理解 Kubernetes Pod、Deployment 与 Service
运维·nginx·kubernetes