甲骨文ARM云主机安装BT宝塔面板Nginx后开启LuaJIT图文教程

甲骨文云主机是不少小伙伴持有的,毕竟是免费VPS而且还是终身的,大家都趋之若鹜。后来出现的ARM主机,4核24G主机简直性能超级强悍,但是不少小伙伴发现安装了BT宝塔面板后,其中不能开启LuaJIT。这里就分享一下图文教程。

什么?还没安装BT宝塔面板?点击进行下载安装

宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取

环境是 Oracle Cloud 的 Always Free 四核心的 ARM 架构服务器,为了能够用上BT宝塔,把机器给重装为 CentOS Stream 8 (ARM) 系统。面板安装完成之后,就是非常常规的安装 Nginx、MySQL、PHP 等运行环境,之后会习惯性安装一下宝塔的一些特色插件,原本这些插件在 x86_64 架构下都没什么问题,但是到了 ARM 下总是有一些小问题,所以就有了这篇总结文章。

BT宝塔有一个叫「网站监控报表」的插件,我觉得蛮好用的一个插件,所以会习惯性安装到服务器上,但是这个插件在默认情况下会导致 Nginx 出现 unknown directive "lua_shared_dict" 的异常。

甲骨文ARM云主机安装BT宝塔面板Nginx后开启LuaJIT图文教程插图
启用插件后的错误信息

根据这个异常信息可以推断应该是 Nginx 没有加载 LuaJIT 导致,进一步查看宝塔的 Nginx 编译脚本(位于 /www/server/panel/install/nginx.sh),也确实发现对于 ARM 架构目前的做法是直接忽略编译和加载。

甲骨文ARM云主机安装BT宝塔面板Nginx后开启LuaJIT图文教程插图1
判断架构和设定版本
甲骨文ARM云主机安装BT宝塔面板Nginx后开启LuaJIT图文教程插图2

对 ARM 忽略编译

甲骨文ARM云主机安装BT宝塔面板Nginx后开启LuaJIT图文教程插图3

那既然官方的编译脚本直接忽略了对 LuaJIT 的支持,那就自己动手,丰衣足食。

进一步分析宝塔的编译脚本可以发现,有一处调用自定义脚本的地方。

甲骨文ARM云主机安装BT宝塔面板Nginx后开启LuaJIT图文教程插图4
调用自定义脚本

这个功能应该是和面板上面的编译安装中出现的自定义模块有关,但是我在 7.6.0 下面测试并没有通过,估计是开发漏掉了。关于这个功能的缺失已经通过官方论坛提交给官方确认,但是并不妨碍我们使用这个功能来实现自动编译和加载 LuaJIT。

在 /www/server/panel/install 分别创建名字为 nginx_prepare.sh 和 nginx_configure.pl 的文件,然后将两个文件的权限设置为 600 并且将所有者设置为 root

甲骨文ARM云主机安装BT宝塔面板Nginx后开启LuaJIT图文教程插图5

将以下代码填入 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

提醒:直接复制粘贴可能存在回车符,如果遇到编译失败请使用 sed -i 's/\r//g' /www/server/panel/install/nginx_prepare.sh 删除回车符。

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

将上面文本填入 nginx_configure.pl

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

因为 LuaJIT 最新的版本是 2.1.0-beta3,所以我索性就直接使用 v2.1 分支最新的源码(反正没差)

关于缺失的 jemalloc,经过测试需要 5.1.0 以上的版本才可以让 Nginx 1.20.x 正常编译,不过我这边遇到一个问题,加载 jemalloc 之后单个 Nginx 的进程内存占用高达 2G(虽然这台 ARM 有 32G 的内存),所以我就放弃这个模块,如果你需要用到,就将下面代码追加到 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

–with-ld-opt=-ljemalloc

同时在 nginx_configure.pl 追加一个空格后追加以上文本

最后在面板升级一下 Nginx,或者终端执行下面命令重新编译 Nginx,之后就可以愉快使用 LuaJIT 了。

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

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

Ubuntu 第一次安装 Nginx 务必使用编译安装(或使用上面的安装命令),极速安装不会调用自定义脚本!另外 lua-cjson 可能会编译失败,如果编译失败则建议使用 luarocks 解决。lua-cjson 也可以不安装,但是不安装会影响一些插件的使用,有条件则建议先安装一下「网站监控报表」的插件,该插件会在编译失败的情况下自动安装 luarocks 和 lua-cjson。

luarocks install lua-cjson
 收藏 (0) 更新不易,打赏吧

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

除特别注明外,本站所有文章均基于CC-BY-NC-SA 4.0原创,转载请注明出处。
文章名称:《甲骨文ARM云主机安装BT宝塔面板Nginx后开启LuaJIT图文教程》
文章链接:https://www.banzhuti.com/13195.html
分享到: 生成海报
版权免责声明

① 本站提供的资源(插件或主题)均为网上搜集,如有涉及或侵害到您的版权请立即通知我们。
② 本站所有下载文件,仅用作学习研究使用,请下载后24小时内删除,支持正版,勿用作商业用途。
③ 因代码可变性,不保证兼容所有浏览器、不保证兼容所有版本的WP、不保证兼容您安装的其他插件。
④ 本站保证所提供资源(插件或主题)的完整性,但不含授权许可、帮助文档、XML文件、PSD、后续升级等。
⑤ 由本站提供的资源对您的网站或计算机造成严重后果的本站概不负责。
⑥ 使用该资源(插件或主题)需要用户有一定代码基础知识!另本站提供汉化使用安装教程,仅供参考。
⑦ 有时可能会遇到部分字段无法汉化,同时请保留作者汉化宣传信息,谢谢!
⑧ 本站资源售价只是赞助和汉化辛苦费,收取费用仅维持本站的日常运营所需。
⑨ 如果喜欢本站资源,欢迎捐助本站开通会员享受优惠折扣,谢谢支持!
⑩ 如果网盘地址失效,请在相应资源页面下留言,我们会尽快修复下载地址。

热门文章

评论 抢沙发

评论前必须登录!

立即登录   注册

WordPress主题 插件 建站 汉化

定制服务联系我们
切换注册

登录

点击按钮进行验证

忘记密码

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活