甲骨文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时务必使用编译安装,极速安装可能会出现错误;

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

创建脚本

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

防止恶意采集,此处回复可见,评论无需注册; - 本站链接:suntl.com

nginx_configure.pl
防止恶意采集,此处回复可见,评论无需注册; - 本站链接:suntl.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.20

代码中的Nginx版本号需要改为你机器已经安装的Nginx版本
Nginx版本1.18.1即为1.18
Nginx版本1.20.2即为1.20
然后等待更新完成即可;

安装插件

注意:需要首先安装网站监控报表等待安装完成后再安装Nginx防火墙
原因是Nginx防火墙需要使用lua-cjson但在ARM下更新Nginx时直接编译lua-cjson会失败,具体原因没有深究;
而安装网站监控报表时会默认使用luarocks来安装lua-cjson这就直接解决了此问题;
当然你也可以先安装luarocks在使用luarocks install lua-cjson命令来安装lua-cjson
由于博主两个插件都要使用,所以就没单独测试了,需要的可以自行测试;

最后修改:2024 年 09 月 10 日

发表评论

145 条评论

  1. CFer

    谢谢分享

  2. 2y

    刚发现不能进入后台的“防火墙”项目。提示:抱歉,需要满足以下条件才能使用
    请将Nginx防火墙版本升级到8.8.4以上。 我Nginx防火墙是最新版本的。

    1. 小白
      @2y

      非常感谢!

    2. ss
      @2y

      学习下OωO

  3. 2y

    问题解决,非常感谢!

  4. 2y

    来得真及时。。。希望能解决!全网找到的唯一答案。

  5. 看一看

    看一看

  6. 121212

    試一下

  7. hzx

    看看

  8. hzx

    感谢大佬,试试

  9. KPL

    试试

  10. 小关

    試一下

  11. T

    试试

  12. GG

    谢谢分享

  13. 感谢分享

    新版还能用吗

  14. gxfx

    新版还能用吗

    1. 感谢博主
      @gxfx

      谢谢,看一下。

    2. 感谢博主
      @gxfx

      感谢博主

    3. 感谢博主
      @gxfx

      感谢博主分享 正在尝试中

  15. 试试

    能用了吗?

  16. 笑死

    还在想解决方法

  17. 太好了

    刚还在找这问题