##前言 目前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.22和1.20; 另外在宝塔面板首次安装Nginx时务必使用编译安装,极速安装可能会出现错误; ## 解决方案(先安装好Nginx1.22) 创建脚本 在/www/server/panel/install目录下分别新建名为`nginx_prepare.sh`和`nginx_configure.pl`两个文件; 并在两个文件中分别填写如下代码: `nginx_prepare.sh` ```shell #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH wget -c -O LuaJIT-2.1.zip https://github.com/LuaJIT/LuaJIT/archive/refs/heads/v2.1.zip -T 10 unzip LuaJIT-2.1.zip if [ -e LuaJIT-2.1 ]; then cd LuaJIT-2.1 make linux make install export LUAJIT_LIB=/usr/local/lib export LUAJIT_INC=/usr/local/include/luajit-2.1/ ln -sf /usr/local/lib/libluajit-5.1.so.2 /usr/local/lib64/libluajit-5.1.so.2 if [ `grep -c /usr/local/lib /etc/ld.so.conf` -eq 0 ]; then echo "/usr/local/lib" >> /etc/ld.so.conf fi ldconfig cd .. fi rm -rf LuaJIT-2.1* ``` `nginx_configure.pl`: ```shell --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module ``` 然后将这两个文件设置权限为600,并将所有者设置为root; 在SSH终端输入以下代码(清理脚本换行符,避免编译安装失败): ```shell sed -i 's/\r//g' /www/server/panel/install/nginx_prepare.sh ``` ## 编译安装 ```shell cd /www/server/panel/install && bash install_soft.sh 0 update nginx 1.22 ``` 代码中的Nginx版本号需要改为你机器已经安装的Nginx版本1.22.1即为1.22; 然后等待更新完成即可; ###安装插件 注意:需要首先安装网站监控报表等待安装完成后再安装Nginx防火墙; 原因是Nginx防火墙需要使用lua-cjson但在ARM下更新Nginx时直接编译lua-cjson会失败,具体原因没有深究; 而安装网站监控报表时会默认使用luarocks来安装lua-cjson这就直接解决了此问题; 当然你也可以先安装luarocks在使用luarocks install lua-cjson命令来安装lua-cjson; 由于博主两个插件都要使用,所以就没单独测试了,需要的可以自行测试。 WMI Scripting HTML 当前访问者IP地址及地址归属: Last modification:January 5th, 2024 at 10:27 am © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments