安装与配置 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。