Centos 离线部署(MQTT)EMOX脚本并设置开机自启

文件结构

install_emqx.sh

bash 复制代码
#!/bin/bash
# Filename: install_emqx.sh
# Description: EMQX离线一键部署脚本 (针对特殊目录结构)

# 检查root权限
if [[ $EUID -ne 0 ]]; then
   echo "请使用root权限运行此脚本!" 
   exit 1
fi

# 定义依赖包和安装路径
DEP_RPM="./libaio-0.3.111-22.el10.x86_64.rpm"
EMQX_TAR="./emqx-5.1.4-el7-amd64.tar.gz"
INSTALL_DIR=$(pwd)

# 检查文件是否存在
if [[ ! -f $DEP_RPM ]]; then
    echo "错误:依赖包 $DEP_RPM 不存在!"
    exit 1
fi

if [[ ! -f $EMQX_TAR ]]; then
    echo "错误:EMQX安装包 $EMQX_TAR 不存在!"
    exit 1
fi

# 安装依赖
echo "正在安装依赖库..."
yum localinstall -y $DEP_RPM

# 解压EMQX
echo "正在解压EMQX到当前目录..."
tar -zxvf $EMQX_TAR

# 创建emqx目录并移动所有解压内容
echo "整理EMQX目录结构..."
mkdir -p emqx
for dir in bin data dynlibs etc erts-* lib log plugins releases; do
    if [ -d "$dir" ] || [ -e "$dir" ]; then
        mv "$dir" emqx/ 2>/dev/null
    fi
done

# 移动剩余文件
find . -maxdepth 1 -type f -exec mv {} emqx/ \; 2>/dev/null
find . -maxdepth 1 -type d -not -name "emqx" -exec mv {} emqx/ \; 2>/dev/null

EMQX_HOME="${INSTALL_DIR}/emqx"

# 验证安装
if [[ ! -d "$EMQX_HOME" ]]; then
    echo "错误:无法创建EMQX目录!"
    exit 1
fi

# 创建命令软链接
echo "创建命令软链接..."
ln -sf ${EMQX_HOME}/bin/emqx /usr/local/bin/emqx
ln -sf ${EMQX_HOME}/bin/emqx_ctl /usr/local/bin/emqx_ctl

# 创建systemd服务
echo "创建systemd服务..."
cat > /etc/systemd/system/emqx.service <<EOF
[Unit]
Description=EMQX Broker
After=network.target

[Service]
Type=forking
Environment=EMQX_ROOT_DIR=${EMQX_HOME}
ExecStart=${EMQX_HOME}/bin/emqx start
ExecStop=${EMQX_HOME}/bin/emqx stop
ExecReload=${EMQX_HOME}/bin/emqx restart
Restart=on-failure
RestartSec=30s
User=root
Group=root

[Install]
WantedBy=multi-user.target
EOF

# 重载systemd
systemctl daemon-reload

# 启动服务并设置开机自启
systemctl enable emqx
systemctl start emqx

# 验证安装
echo "等待5秒后检查EMQX状态..."
sleep 5
if ${EMQX_HOME}/bin/emqx_ctl status >/dev/null 2>&1; then
    echo -e "\nEMQX 5.1.4 安装成功!"
    echo -e "安装目录: ${EMQX_HOME}"
    echo -e "管理命令: systemctl [start|stop|status] emqx"
    echo -e "控制台访问: http://<服务器IP>:18083"
    echo -e "默认用户名: admin"
    echo -e "默认密码: public"
else
    echo -e "\n警告:EMQX服务启动异常,请检查以下内容:"
    echo -e "1. 检查配置文件: ${EMQX_HOME}/etc/emqx.conf"
    echo -e "2. 查看日志文件: tail -f ${EMQX_HOME}/log/*"
    echo -e "3. 手动调试命令: ${EMQX_HOME}/bin/emqx console"
fi

相对应的脚本、软件和依赖

emqx-5.1.4-el7-amd64.tar.gz

libaio-0.3.111-22.el10.x86_64.rpm

链接:CentOs离线部署EMOX脚本资源-CSDN库

相关推荐
木卯彳亍3 小时前
番外-linux系统运行.net framework 4.0的项目
linux·docker·.net
望获linux3 小时前
【实时Linux实战系列】硬实时与软实时设计模式
linux·运维·服务器·数据库·操作系统·rtos·嵌入式软件
沉默的八哥5 小时前
Linux中LVM逻辑卷扩容
linux·运维·服务器
退役小学生呀5 小时前
十一、K8s细粒度权限管理RBAC
linux·docker·云原生·容器·kubernetes·k8s
网易独家音乐人Mike Zhou7 小时前
【Linux应用】开发板USB共享网络,网线或USB以太网共享网络(局域网连接PC和开发板,实现PC给开发板共享网络,USB通过NDIS驱动共享)
linux·网络·单片机·mcu·物联网·嵌入式·iot
Otaku love travel7 小时前
实施运维文档
运维·windows·python
basketball6168 小时前
Linux C 管道文件操作
linux·运维·c语言
浩浩测试一下8 小时前
Windows 与 Linux 内核安全及 Metasploit/LinEnum 在渗透测试中的综合应用
linux·运维·windows·web安全·网络安全·系统安全·安全架构
stark张宇8 小时前
Linux 文件创建、删除、移动、复制基础知识整理
linux·服务器·centos
将心ONE8 小时前
使用 lstrip() 和 rstrip() 方法
运维·服务器