【原创实践】安装与配置 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 小时前
DeepSeek Harness 本地安装与启动指南
nginx
難釋懷6 小时前
Nginx主动健康检查
运维·nginx
重庆小透明8 小时前
深入探寻微服务【第五篇微服务限流实战】
微服务·junit·架构
難釋懷13 小时前
Nginx-Openresty
nginx·junit·openresty
qetfw13 小时前
Debian 部署 Discuz! 论坛:Nginx、PHP 与 MariaDB 配置
linux·运维·nginx·debian·php·discuz
CDN36014 小时前
大文件分发排坑:出海手游 APK 下载中断、速度慢,CDN 预热与后端 Nginx 优化方案
运维·前端·nginx·网络优化·大文件分发
記億揺晃着的那天1 天前
NAS 内网域名访问为什么需要浏览器授权
网络·nginx·js·nas
小努蛋1 天前
linux编译openresty异常问题,lua_cjson.c:706:5: 错误: ‘for‘ 循环初始化声明只在 C99 或 C++ 模式下允许
开发语言·lua·openresty
骇客野人2 天前
基于Nginx+Eureka+Apollo+Jenkins+SpringBoot Web系统分布式部署方案
nginx·eureka·jenkins
Kendra9192 天前
从 0 到上线:单文件网页 App 部署到阿里云 ECS 全流程(Nginx+Node+PM2+PostgreSQL)
nginx·阿里云·云计算·部署·个人开发·今天吃什么