起风了

  • 首页
  • 智能●家
    • Android TV
    • 电视盒子
    • 智能媒体中心
    • Emby
    • Kodi
  • 网络设备
    • 家庭网关
    • 存储设备
  • 网站运维
    • 网站建设
    • 网站优化
  • 教程
  • 软件
    • 电视直播
    • 在线影视
  1. 首页
  2. 教程
  3. 正文

解决甲骨文云ARM机器宝塔面板Nginx与Nginx防火墙和网站监控报表冲突报错(个人笔记)

2024年9月4日 319点热度 2人点赞 0条评论

目前ARM架构机型在安装宝塔面板时,宝塔面板的 nginx 编译脚本会直接忽略 ARM 对 LuaJIT 的支持,这导致了许多依赖 lua 语言的插件失效,例如 Nginx 防火墙、网站监控报表,表现就是 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、1.21、1.22。

另外在宝塔面板首次安装Nginx时务必使用编译安装,极速安装可能会出现错误;

之所以还用宝塔7.7.0版是因为新版暂时无法手动破解,关于新版宝塔面板降级为7.7.0版的教程《宝塔面板降级 7.7.0 版本、开心、汉化 aaPanel 面板》

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

创建脚本

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

#!/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*
Install_cjson

nginx_configure.pl

--add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module

然后将这两个文件设置权限为600,并将所有者设置为root;

在SSH终端输入以下代码:

安装lua5(这一步可以忽略)

apt install lua5* -y

编译安装Nginx

sed -i 's/\r//g' /www/server/panel/install/nginx_prepare.sh

在SSH终端输入以下代码开始更新Nginx并按脚本加载LuaJIT选项:代码中的Nginx版本号需要改为你机器已经安装的Nginx版本,1.18.1即为1.18;1.22.1即为1.22
然后等待更新完成即可;

cd /www/server/panel/install && bash install_soft.sh 0 update nginx 1.22

安装插件

注意:需要首先安装 网站监控报表 ,等待安装完成后再安装 Nginx防火墙;
原因是 Nginx防火墙 需要使用 lua-cjson,但在ARM下更新Nginx时直接编译lua-cjson会失败而安装 网站监控报表 时会默认使用luarocks来安装lua-cjson这就直接解决了此问题;

当然你也可以先安装luarocks在使用luarocks install lua-cjson命令来安装lua-cjson;

以上内容经网络搜索结果后自行整理,部分代码有改动,如介意请自行搜索使用原方法,主要参考https://suntl.com/1104.html


宝塔面板解锁付费插件 — Nginx防火墙、网站监控报表 等

方法一:

打开目录/www/server/panel/class找到并编辑panelplugin.py文件
使用Ctrl+F搜索并找到softList['list'] = tmpList这段代码,在其下方添加如下代码:

                softList['pro'] = 1
        for soft in softList['list']:
            soft['endtime'] = 0

示例:

方法二:

找到并编辑/www/server/panel/data/plugin.json文件

// 解锁付费插件
搜索字符串"endtime": -1全部替换为"endtime": 999999999999

// 解锁授权图标
搜索字符串"ltd": -1, "pro": -1全部替换为"ltd": -1, "pro": 0

其中pro表示专业版,ltd表示企业版;-1表示无授权,0表示永久授权;

找到并编辑/www/server/panel/data/repair.json文件

查找字符串"id": 16将这段修复权限的代码全部删除;

方法三:

找到并编辑/www/server/panel/class/panelPlugin.py文件
使用Ctrl+F搜索并找到softList['list'] = tmpList这段代码,在其下方添加如下代码:

// 解锁专业版
                softList['pro'] = 1
        for soft in softList['list']:
            soft['endtime'] = 0

// 解锁企业版
                softList['ltd'] = 99999999999
        for soft in softList['list']:
            soft['endtime'] = 0

说明
修改完成后重启面板,重启完成后就可以直接安装收费的插件了,Nginx防火墙也可以直接安装使用
安装后界面可能不会显示宝塔专业版或者企业版图标,但实际上你已经获得特权,可以直接安装收费插件。

主要参考https://suntl.com/

标签: 网站建设
最后更新:2024年9月4日

Admin

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
最新 热点 随机
最新 热点 随机
哪吒监控V1通过宝塔面板反向代理配置教程 解决甲骨文云ARM机器宝塔面板Nginx与Nginx防火墙和网站监控报表冲突报错(个人笔记) Google将发布Google TV Streamer取代 Chromecast,将于 9 月上市 IDM下载器(Internet Download Manager) 最新多语言破解版 Google TV 现已拥有超过 130 个免费频道 华硕首款 Google TV 智能显示器
阿里云盘电视剧分享/最新电视剧 成功的SEO策略具备哪些要素 Google 的精确匹配域专利(检测商业查询) 让Emby也使用插件削刮日本动作电影 阿里云国际站新用户注册免费使用一年 IPTV King Pro:高级欧美电视直播APP

COPYRIGHT © 2024 起风了. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang