宝塔面板的Nginx
编译脚本/www/server/panel/install/nginx.sh
目前官方的配置是在ARM
框架上对LuaJIT
直接忽略支持,这导致了许多依赖lua
语言的插件安装失效,比如Nginx
防火墙、网站监控报表等。
LuaJIT
的支持。
这个功能应该是和面板上面的编译安装中出现的自定义模块有关,但是在bt 7.6.0
下面测试并没有通过,估计是开发漏掉了;该功能的缺失已经通过官方论坛提交给宝塔官方确认,但是这一缺失并不妨碍我们使用这个功能来实现自动编译和加载LuaJIT
。
接下来在/www/server/panel/install
分别创建文件名为nginx_prepare.sh
和nginx_configure.pl
的文件,然后将两个文件的权限设置为600
并且将所有者设置为root
。
复制以下代码在终端执行,以便快速向nginx_prepare.sh
和nginx_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
官方的源码,只需要修改脚本的对应代码即可。
经过测试需要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
。
本文由 podipod软库网 作者:DevOps 发表,转载请注明来源!