一、EMQX是什么?
EMQ X 是一个高度可扩展的、分布式的 MQTT 消息服务器,适用于 IoT、M2M 和移动应用程序。它提供了完整的 MQTT 协议支持,包括 QoS 0、QoS 1、QoS 2 消息传输,以及 Last Will 和 Testament 功能。EMQ X 还支持插件扩展,可以方便地集成各种功能,如 SQL 数据库集成、Websocket 支持等。
EMQ X 特点:
- 高性能:EMQ X 可以处理数百万的并发客户端连接。
- 分布式:支持分布式运行,可以水平扩展以满足大规模部署需求。
- 插件系统:通过插件可以轻松扩展功能,如数据库集成、认证等。
- 完整的 MQTT 支持:遵循 MQTT 3.1、3.1.1 和 5 协议规范。
- 多种协议支持:除了 MQTT,还支持 CoAP、LwM2M、WebSocket 等协议。
- 安全性:支持 SSL/TLS 加密传输,以及多种认证机制。
二、EMQX安装
1.获取 EMQX:
从官方网站 EMQX 官网软件下载 下载最新版本的 EMQ X
1.1 选择对应系统与版本下载,其中有yum 、安装包类型(rpm 、 tar.zip )
这里讲述下tar.zip 包安装方式
wget https://www.emqx.com/zh/downloads/broker/5.7.1/emqx-5.7.1-el7-amd64.tar.gz
1.2 进行安装
mkdir -p emqx && tar -zxvf emqx-5.7.1-el7-amd64.tar.gz -C emqx
1.3启动
./emqx/bin/emqx start
1.3 服务状态与面板
2.注册成服务
2.1 创建一个emqx.service 放到conf文件夹下
[Unit]
Description=EMQ X Broker
After=network.target
[Service]
User=root
Group=root
ProtectProc=invisible
Type=forking
ExecStart=START_PATH start
ExecStop=STOP_PATH stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
2.2 编写安装与卸载脚本
install.sh
#!/bin/bash
#
int='\033[94m
_______ _____ ______ ________ ___ ___
|\ ___ \ |\ _ \ _ \|\ __ \ |\ \ / /|
\ \ __/|\ \ \\\__\ \ \ \ \|\ \ \ \ \/ / /
\ \ \_|/_\ \ \\|__| \ \ \ \\\ \ \ \ / /
\ \ \_|\ \ \ \ \ \ \ \ \\\ \ / \/
\ \_______\ \__\ \ \__\ \_____ \ / /\ \
\|_______|\|__| \|__|\|___| \__Y__/ /\ __\
\|__|__|/ \|__|
\033[0m'
echo -e "$int"
# Get current directory
CurDir=$(cd `dirname $0`;pwd)
echo "CurDir :$CurDir"
echo " home $HOME"
chmod 777 -R $CurDir
START_PATH="$CurDir/bin/emqx"
STOP_PATH="$CurDir/bin/emqx"
cp -r $CurDir/conf/emqx.service $CurDir/emqx.service
sed -i "s%START_PATH%$START_PATH%g" $CurDir/emqx.service
sed -i "s%STOP_PATH%$STOP_PATH%g" $CurDir/emqx.service
# service copy
cp -rf $CurDir/emqx.service /usr/lib/systemd/system/emqx.service
echo emqx server is is add to service and setup to boot up
systemctl daemon-reload
#添加开机启动
systemctl enable emqx.service
systemctl start emqx.service
#开放端口号
firewall-cmd --zone=public --add-port=1883/tcp --permanent
firewall-cmd --reload
if [ $? -eq 0 ]; then
echo emqx is install success
exit 0
else
echo emqx is install fail
exit 1
fi
uninstall.sh
#!/bin/bash
#
int='\033[94m
_______ _____ ______ ________ ___ ___
|\ ___ \ |\ _ \ _ \|\ __ \ |\ \ / /|
\ \ __/|\ \ \\\__\ \ \ \ \|\ \ \ \ \/ / /
\ \ \_|/_\ \ \\|__| \ \ \ \\\ \ \ \ / /
\ \ \_|\ \ \ \ \ \ \ \ \\\ \ / \/
\ \_______\ \__\ \ \__\ \_____ \ / /\ \
\|_______|\|__| \|__|\|___| \__Y__/ /\ __\
\|__|__|/ \|__|
\033[0m'
echo -e "$int"
SERVICE_NAME=emqx
systemctl --no-pager status $SERVICE_NAME
if [ "$?" -ne 0 ]
then
echo " $SERVICE_NAME not install"
else
CurDir=$(cd `dirname $0`; pwd)
#delete service
PROXY_FILE="/usr/lib/systemd/system/${SERVICE_NAME}.service"
if [ ! -f $PROXY_FILE ]; then
echo "$SERVICE_NAME file is not exist in /usr/lib/systemd/system"
else
systemctl stop $SERVICE_NAME
systemctl disable $SERVICE_NAME
rm -rf $PROXY_FILE
systemctl daemon-reexec
if [[ "$OS_NAME" == "CentOS" || $CentOSVH -ge 7 ]];then
systemctl daemon-reload
fi
rm -rf $CurDir/software/cms
echo "$SERVICE_NAME is deleted from service"
fi
echo " "
echo -e "\e[1;32m $SERVICE_NAME Service uninstalled succeed.\e[0m"
echo " "
fi
- 整体服务目录结构
版权归原作者 南宫春水 所有, 如有侵权,请联系我们删除。