甲骨文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. Andy

    感谢大佬分享

  2. 碉堡

    非常感谢作者的分享

  3. k

    真不错,找好久

  4. tthh

    看看吧

  5. 168itw

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

  6. 艾斯德斯

    赞赞,终于能用了

  7. Nil

    真不错,找好久,终于找到有用的脚本了

  8. deelii

    感谢 必须顶顶!

  9. fuox

    感谢 必须顶顶!

  10. Dimole

    感谢分享

  11. 我想要

    感谢大佬分享OωO

  12. 刀剑客

    感谢分享

  13. 老猹

    感谢楼主分享,mjj|´・ω・)ノ

  14. cxk

    插眼|´・ω・)ノ

  15. sf

    谢谢分享~

  16. 嘻哈

    感谢大佬,试试

  17. 写一下

    谢谢,看一下。

  18. 山东大人

    谢谢啊,看看以下。

  19. 卡新人

    谢谢,看一下

  20. KPL

    谢谢分享