宝塔面板目前的最新版本7.9.2更新为7.99,无论用centos7.9,debian10还是ubuntu20系统新装宝塔7.9.2后可以正常安装宝塔专业版防火墙和网站监控报表,但是这两个东西是不会正常工作的,重启nginx的话会提示如下错误:
nginx: [emerg] unknown directive “lua_shared_dict” in /www/server/panel/vhost/nginx/total.conf:1
nginx: configuration file /www/server/nginx/conf/nginx.conf test failed
看到这个错误真的是有点懵圈了,不用问,百度上是没有这个问题的解决方法的,宝塔论坛也去发帖求助。
官方的运维很显然还没意识到7.9.2的bug,只给出了一个很笼统的解决方案,试了一下,不出所料的毛用么有。这篇文章就来记录一下如何解决这个问题的。
1、错误提示
这个bug应该是仅有新安装宝塔最新版本7.9.2,以及+版,才有可能会碰到。具体的bug就是安装宝塔防火墙不论是专业版防火墙还是免费防火墙以及安装网站监控报表都会提示,文章开头的错误。
2、查找原因
官方给我出的解决方案如下,当然这个方法可能是有用的,报错原因是:系统缺少luajit组件,导致nginx使用异常:
解决方法:
卸载nginx防火墙/nginx免费防火墙,网站加速(这些插件没装的话可忽略此步骤)卸载当前版本的nginx,使用编译模式安装一遍nginx1.20,编译安装会自动安装luajit组件;装好nginx后重装前面卸载的那几个插件即可正常使用。装好nginx后重装前面卸载的那几个插件即可正常使用。
问题的症结所在
这个问题的具体原因是缺少两个nginx模块:ngx_devel_kit和lua_nginx_module,我们只要把这两个模块编译到nginx里面就可以解决。不过你最好用命令:nginx -V 来检查一下你的nginx扩展。用这个命令来检查发现确实是少了这两个模块。
这两个模块编译完成之后,我们再次安装宝塔防火墙以及网站监控报表后,即可正常使用。