前言
目前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
时务必使用编译安装,极速安装可能会出现错误;
- 测试时间:2021-11-06
- 测试环境:Ubuntu 20.04
- 宝塔版本:7.7.0
- 插件版本:Nginx防火墙 8.9.2 / 网站监控报表 6.2
- 温馨提醒:其它系统及版本未进行测试,请自行验证,请勿在生产环境下尝试;
创建脚本
在/www/server/panel/install
目录下分别新建名为nginx_prepare.sh
和nginx_configure.pl
两个文件;
并在两个文件中分别填写如下代码:
nginx_prepare.sh
nginx_configure.pl
然后将这两个文件设置权限为600
,并将所有者设置为root
;
编译安装
在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
;
然后等待更新完成即可;
安装插件
注意:需要首先安装网站监控报表
等待安装完成后再安装Nginx防火墙
;
原因是Nginx防火墙
需要使用lua-cjson
但在ARM
下更新Nginx
时直接编译lua-cjson
会失败,具体原因没有深究;
而安装网站监控报表
时会默认使用luarocks
来安装lua-cjson
这就直接解决了此问题;
当然你也可以先安装luarocks
在使用luarocks install lua-cjson
命令来安装lua-cjson
;
由于博主两个插件都要使用,所以就没单独测试了,需要的可以自行测试;
macOS 本文所写的内容全部基于macOS Big Sur 11.1 作为一个用了N年Windows的人,对于mac那是一直非常馋的,但是由于对峡谷的热爱和囊中羞涩,一直到了去年年底才入手了第一台mbp。拿到手那肯定是要开始折腾了,于是就开始了没有尽头的踩坑…
请登录后发表评论
注册