运维

在ARM框架下让LuaJIT支持宝塔的Nginx服务

MarginNote 3 - Mac端PDF阅读批注工具 激活码价格:¥69.00
赤友 NTFS for Mac 助手 -  磁盘硬盘格式读写软件注册激活码价格:¥35.00
虫洞 -  iPhone安卓投屏操控 电脑手机多屏协同,价格:¥45.00
namesilo全网最便宜域名注册商,输入折扣码:nsilo20立减1美元!

宝塔面板的Nginx编译脚本/www/server/panel/install/nginx.sh目前官方的配置是在ARM框架上对LuaJIT直接忽略支持,这导致了许多依赖lua语言的插件安装失效,比如Nginx防火墙、网站监控报表等。

在ARM框架下让LuaJIT支持宝塔的Nginx服务

判断架构和设定版本

在ARM框架下让LuaJIT支持宝塔的Nginx服务

宝塔对ARM忽略编译

在ARM框架下让LuaJIT支持宝塔的Nginx服务

宝塔对ARM忽略编译

如上图官方的编译脚本直接忽略了对LuaJIT的支持。

这个功能应该是和面板上面的编译安装中出现的自定义模块有关,但是在bt 7.6.0下面测试并没有通过,估计是开发漏掉了;该功能的缺失已经通过官方论坛提交给宝塔官方确认,但是这一缺失并不妨碍我们使用这个功能来实现自动编译和加载LuaJIT
接下来在/www/server/panel/install分别创建文件名为nginx_prepare.shnginx_configure.pl的文件,然后将两个文件的权限设置为600并且将所有者设置为root

在ARM框架下让LuaJIT支持宝塔的Nginx服务

权限设置

在ARM框架下让LuaJIT支持宝塔的Nginx服务

权限设置

对文件进行写入代码

复制以下代码在终端执行,以便快速向nginx_prepare.shnginx_configure.pl写入代码

cat>/www/server/panel/install/nginx_prepare.sh<<EOL
#!/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
EOL
sed -i 's/\r//g' /www/server/panel/install/nginx_prepare.sh
cat>/www/server/panel/install/nginx_configure.pl<<EOL
--add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module
EOL

这里的LuaJIT源码来自GitHub,如果下载缓慢可以将其中的github.com修改为hub.fastgit.org,当然也可以直接git官方的源码,只需要修改脚本的对应代码即可。

关于缺失的jemalloc问题

经过测试需要5.1.0以上的版本才可以让Nginx 1.20.x正常编译,不过遇到一个问题,加载jemalloc之后单个Nginx的进程内存占用高达2G,所以就放弃这个模块,如果你需要用到,就将下面代码追加到nginx_prepare.sh文件中。

if [ ! -f '/usr/local/lib/libjemalloc.so' ]; then
    wget -O jemalloc-5.2.1.tar.bz2 ${download_Url}/src/jemalloc-5.2.1.tar.bz2
    tar -xvf jemalloc-5.2.1.tar.bz2
    cd jemalloc-5.2.1
    ./configure
    make && make install
    ldconfig
    cd ..
    rm -rf jemalloc*
fi

同时在nginx_configure.pl追加一个空格后追加以下代码

--with-ld-opt=-ljemalloc

最后在宝塔面板升级一下Nginx,或者终端执行下面命令重新编译Nginx,编译完成后即可使用LuaJIT

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

运行之前你需要稍作修改,将1.20修改成你需要升级或安装的Nginx版本,如果你需要升级则先看下自己的Nginx是什么版本,比如1.18.1则修改为1.18,脚本运行完成后Nginx的版本也会升级到1.18的最新版本。另外,如果你的服务器未安装Nginx,则需要将update修改为install

(0)

本文由 podipod软库网 作者:DevOps 发表,转载请注明来源!

关键词:, , , ,
ToDesk - 安全好用流畅远程控制软件 替代TeamViewer,价格:¥108.00
Eagle - 图片收集管理必备软件 激活码价格:¥119.00
PDF Expert 2 - Mac上优秀的PDF阅读编辑工具,价格:¥119.00

热评文章

发表评论