甲骨文ARM架构安装宝塔Nginx防火墙及网站监控报表

前言

目前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.181.20;
另外在宝塔面板首次安装Nginx时务必使用编译安装,极速安装可能会出现错误;

  • 测试时间:2021-11-06
  • 测试环境:Ubuntu 20.04
  • 宝塔版本:7.7.0
  • 插件版本:Nginx防火墙 8.9.2 / 网站监控报表 6.2
  • 温馨提醒:其它系统及版本未进行测试,请自行验证,请勿在生产环境下尝试;

创建脚本

/www/server/panel/install目录下分别新建名为nginx_prepare.shnginx_configure.pl两个文件;
并在两个文件中分别填写如下代码:
nginx_prepare.sh

防止恶意采集,此处回复可见,评论无需注册; SunPma.com

nginx_configure.pl
防止恶意采集,此处回复可见,评论无需注册; SunPma.com

然后将这两个文件设置权限为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
由于博主两个插件都要使用,所以就没单独测试了,需要的可以自行测试;

发表评论 取消回复

138 条评论

  1. 少女牛奶

    谢谢🙏

  2. 阿利达

    感谢大佬,学习一下

  3. artisan

    网上竟然搜不到。误打误撞找到你写的。给力

  4. andy

    正需要,谢谢

  5. 孤泳者

    给力啊 刚遇到这个问题就搜到博主

  6. 倚竹聽雨

    看一下下撒。

  7. uzibird

    折腾数个月,放弃了,博主又燃起了我的希望

  8. 123

    我来试试

  9. 111

    我来看看

  10. hzx

    感谢大佬,支持

  11. 111

    看看!!

  12. 这可怎么办啊

    看看我就走

  13. duoduo

    还还有个6.4的备份

  14. KALI

    防火墙可以在正常使用了 ,报表还是报错,不过用不到

    1. sunpma
      @KALI

      网站报表最后一个能用的是6.4版本,现在的6.5-6.6都不支持

  15. Andy

    感谢大佬分享

  16. 碉堡

    非常感谢作者的分享

  17. k

    真不错,找好久

  18. tthh

    看看吧

  19. 168itw

    已经安装了宝塔的arm上,用这个方法可行嘛?》

  20. 艾斯德斯

    赞赞,终于能用了