博主头像
mxd's Blog

"The quieter you become,the more you are able to hear."

宝塔面板实现插件安装常用列表的几个思路

最近看到好多人都在求宝塔面板编译安装Nginx、MySQL如果可以增加一个常用组件选择并一键编译安装的功能,在这里给大家分享下我的几个思路。注意哈,这毕竟是个思路,具体怎么完成还有待研究。

1.首先来看下这里的界面:

在编译安装时,这里可以添加自定义模块,点击进去,是可以输入安装的一些插件的。

如下图所示

这里以Nginx的RTMP搭建流媒体服务器举例:

参考宝塔 搭建 nginx rtmp 流媒体服务器(CSDN),可以得知:

git clone https://github.com/arut/nginx-rtmp-module /www/server/nginx_rtmp_module/ 
模块名称:nginx_rtmp_module
模块描述:nginx_rtmp_module
模块参数:--add-module=/www/server/nginx_rtmp_module/

这个地方,有一个安装依赖,解决办法是根据系统判断,使用什么包管理器,并安装,如Debian使用apt,CentOS(Redhat 系列)使用yum或dnf。
可以去nginx官网或者相应的GitHub仓库,查询需要什么依赖。比如这里的rtmp,就在https://github.com/arut/nginx-rtmp-module。

值得注意的是,这个地方我有时候也不太确定是否真的需要依赖,我装了10台服务器,有3台是不需要这个依赖的(同为Debian)

所以建议宝塔的操作时先检查一遍依赖,再执行安装。

分享下我的做法,先写脚本,批量git clone到指定目录,比如下图

这里我会统一放在以下路径

/www/server/module/[软件,如nginx/MySQL]/[插件名,如fancyindex]

经过一番摸索,宝塔这个自定义插件的配置文件会保存在以下路径

/www/server/panel/install/[软件,如nginx/MySQL]/[插件名,如fancyindex]

路径下会有三个文件

├── args.pl
├── init.sh
└── ps.pl
1 directory, 3 files

args.pl即为命令行参数,init.sh为在执行参数前需要做的事,ps.pl是插件名字

那我们可以根据这样的逻辑写出以下脚本,以下为rtmp举例

#!/bin/bash
# 定义目录和文件路径
MODULE_DIR="/www/server/module/nginx/rtmp"
INSTALL_DIR="/www/server/panel/install/nginx/rtmp"
# 防止万一,创建目录
mkdir -p $MODULE_DIR
mkdir -p $INSTALL_DIR
# 克隆nginx-rtmp-module仓库
git clone https://github.com/arut/nginx-rtmp-module $MODULE_DIR
# 生成args.pl文件,包含命令行参数
echo "--add-module=$MODULE_DIR" > $INSTALL_DIR/args.pl
# 生成init.sh文件,执行参数前的操作
cat <<EOL > $INSTALL_DIR/init.sh
#!/bin/bash
# 这里可以添加需要在参数执行前完成的其他操作
echo "安装 libmaxminddb-dev..."
apt install -y libmaxminddb-dev
EOL
# 赋予init.sh执行权限
chmod +x $INSTALL_DIR/init.sh
# 生成ps.pl文件,包含模块名称
echo "nginx_module_rtmp" > $INSTALL_DIR/ps.pl
# 完成提示
echo "配置文件已生成,目录:$INSTALL_DIR"

然后就可以愉快的在宝塔面板编译启用啦,所以推荐宝塔面板做一个快捷选项,简化用户操作。

宝塔面板实现插件安装常用列表的几个思路
https://blog.mxdyeah.top/mxdyeah_blog_post/60.html
本文作者 mxdyeah
发布时间 2024-08-13
许可协议 CC BY-NC-SA 4.0
发表新评论