最近看到好多人都在求宝塔面板编译安装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"
然后就可以愉快的在宝塔面板编译启用啦,所以推荐宝塔面板做一个快捷选项,简化用户操作。