目前ARM架构机型在宝塔面板安装Nginx防火墙和网站监控报表,会出现冲突,不能正常使用;出现的错误代码包括但不限于以下两种:unknown directive "lua_shared_dict"PANIC: unprotected error in call to Lua API (bad light userdata pointer)其主要原因是因为宝塔面板在安装Nginx时,判断机器架构为ARM就会直接忽略编译和加载LuaJIT选项;解决方法就是重新为Nginx编译加载LuaJIT选项,而ARM架构需要LuaJIT版本在2.1以上才能编译成功;本方法在甲骨文ARM架构下测试,其它服务商的ARM架构应该同样适用,Nginx版本测试过1.18和1.20;另外在宝塔面板首次安装Nginx时务必使用编译安装,极速安装可能会出现错误;
ARM架构
Nginx
unknown directive "lua_shared_dict"
PANIC: unprotected error in call to Lua API (bad light userdata pointer)
ARM
LuaJIT
2.1
1.18
1.20
在/www/server/panel/install目录下分别新建名为nginx_prepare.sh和nginx_configure.pl两个文件;并在两个文件中分别填写如下代码:nginx_prepare.sh
/www/server/panel/install
nginx_prepare.sh
nginx_configure.pl
然后将这两个文件设置权限为600,并将所有者设置为root;
600
root
在SSH终端输入以下代码(清理脚本换行符,避免编译安装失败):
SSH终端
sed -i 's/\r//g' /www/server/panel/install/nginx_prepare.sh
在SSH终端输入以下代码开始更新Nginx并按脚本加载LuaJIT选项:
cd /www/server/panel/install && bash install_soft.sh 0 update nginx 1.18
代码中的Nginx版本号需要改为你机器已经安装的Nginx版本1.18.1即为1.18;然后等待更新完成即可;
1.18.1
注意:需要首先安装网站监控报表等待安装完成后再安装Nginx防火墙;原因是Nginx防火墙需要使用lua-cjson但在ARM下更新Nginx时直接编译lua-cjson会失败,具体原因没有深究;而安装网站监控报表时会默认使用luarocks来安装lua-cjson这就直接解决了此问题;当然你也可以先安装luarocks在使用luarocks install lua-cjson命令来安装lua-cjson;由于博主两个插件都要使用,所以就没单独测试了,需要的可以自行测试;
网站监控报表
Nginx防火墙
lua-cjson
luarocks
luarocks install lua-cjson
暂无评论
请先登录后发表评论!
暂无评论