Centos8上搭建EMQ MQTT
layout: post
title: Centos8上搭建EMQ MQTT
subtitle: 在阿里云Centos8搭建EMQ并配置接入
date: 2020-3-11
author: Dapenson
header-img: img/post-bg-kuaidi.jpg
catalog: true
tags:
- MQTT
- EMQ
- 物联网
Centos8上搭建EMQ MQTT服务器
我的版本CentOS Linux release 8.1.1911 (Core)_x64、EMQX_v3.2.2
一 使用储存库安装 EMQ X
1 安装所需要的依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2 使用以下命令设置稳定存储库
sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repo
3 安装特定版本的 EMQ X
3.1. 查询可用版本
yum list emqx --showduplicates | sort -r
emqx.x86_64 3.1.0-1.el7 emqx-stable
emqx.x86_64 3.0.1-1.el7 emqx-stable
emqx.x86_64 3.0.0-1.el7 emqx-stable
3.2. 根据第二列中的版本字符串安装特定版本,例如 3.1.0
sudo yum install emqx-3.2.2

5 启动 EMQ X
直接启动
运行emqx
emqx start
emqx 3.1.0 is started successfully! 查看运行状态
emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx 3.2.2 is running

启动后,打开服务器地址+18083即可看到后台管理页面,默认用户名/密码为admin/public

当然前提是该端口已经打开,如果您是阿里云的服务器,则需要手动打开该端口
- 登录ECS管理控制台。
- 在左侧导航栏,单击网络与安全 > 安全组。
- 在顶部状态栏左上角处,选择地域。
- 找到要配置授权规则的安全组,在操作列中,单击配置规则。
6 常用命令
查看端口信息
emqx_ctl listeners
运行
emqx start
重启
emqx restart
查看运行状态
emqx_ctl status
emqx {start|start_boot <file>|ertspath|foreground|stop|restart|reboot|pid|ping|console|console_clean|console_boot <file>|attach|remote_console|upgrade|escript|rpc|rpcterms|eval}
二 配置EMQ X
打开文件etc/emqx/emqx.conf进行配置修改
配置端口
在安装以后,EMQ X 默认会使用以下端口:
- 1883: MQTT 协议端口
- 8883: MQTT/SSL 端口
- 8083: MQTT/WebSocket 端口
- 8080: HTTP API 端口
- 18083: Dashboard 管理控制台端口
按照安装环境需要,可以修改以上端口。
修改协议端口请编辑 EMQ X 系统配置文件,找到以下各行,并按需要修改端口号:这里由于和mosquitomqtt端口号冲突,因此我将其修改为61883
listener.tcp.external = 0.0.0.0:1883
listener.ssl.external = 8883
listener.ws.external = 8083
修改 HTTP API 端口请编辑 emqx_management 插件的配置文件etc/emqx/plugins/emqx_management.conf,找到下述行,并按需修改端口号:
management.listener.http = 8080
修改 Dashboard 管理控制台端口请编辑 emqx_dashboard 插件的配置文件etc/emqx/plugins/emqx_dashboard.conf, 找到下述行,并按需修改端口号:
dashboard.listener.http = 18083
在 Web Dashboard 的 MANAGEMENT -> Listeners 菜单下,可以查看现在正在使用的监听器端口和属性。

配置插件
pass
三 接入EMQX
使用MQTT.fx进行接入
- 配置地址和端口

- 订阅任意Topic

订阅之后Dashboard即可查看您的Topic



规则转发
Topic间转发
- 在dashboard建立消息转发规则如下

- 发布消息到
emqx_pub

- 检查
emqx_display

任意MQTT云平台桥接转发
新建规则响应动作如图进行设置



将你的其他mqtt云平台接入信息填入,点击测试连接即可
使用NodeMCU进行接入
使用ArduinoIDE进行编译上传如下代码
8266_pubsubclient_mqtt.ino
/**********************************************************************
项目名称/Project : 然也物联 / Ranye-Iot
程序名称/Program name : 8266_pubsubclient_mqtt
团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)
作者/Author : Dapenson
日期/Date(YYYYMMDD) : 202003011
程序目的/Purpose :
使用基础的MQTT库与EMQ物联网平台进行设备端接入和消息发布、订阅。
(请注意下方"其它说明"中重要信息!)
-----------------------------------------------------------------------
修订历史/Revision History
日期/Date 作者/Author 参考号/Ref 修订说明/Revision Description
-----------------------------------------------------------------------
其它说明:
1. 为了保护个人隐私,此程序连接wifi所涉及的WiFI名称和密码,以及 EMQ物联网平台密钥都存储于info.h文件中。
info.h文件在git仓库中处于.gitignore忽略清单中,故仓库中无info.h文件。为了便于团队成员开发,
可使用本程序同文件夹中的info_template.h文件,并且将wifi信息和密钥信息填入该文件相应位置,
再将info_template.h改名为info.h后即可使用本程序成功编译使用。
2. 此程序需要安装PubSubClient库并对其中头文件进行修改,具体参考此程序md文档
***********************************************************************/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "info.h"
WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE (50)
char msg[MSG_BUFFER_SIZE];
int value = 0;
void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
// Switch on the LED if an 1 was received as first character
if ((char)payload[0] == '1') {
digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level
// but actually the LED is on; this is because
// it is active low on the ESP-01)
} else {
digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH
}
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// 开始连接
if (client.connect(mqtt_clientID, mqtt_username , mqtt_userpassword)) {
Serial.println("connected");
// 连接成功之后发布一条信息
client.publish(topic_pub, "中文汉字测试,当前已连接云服务器");
Serial.println("中文汉字测试,当前已连接云服务器");
//订阅Topic
client.subscribe(topic_sub);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
Serial.begin(9600);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
unsigned long now = millis();
if (now - lastMsg > 2000) {
lastMsg = now;
++value;
snprintf (msg, MSG_BUFFER_SIZE, "hello world #%ld", value);
Serial.print("Publish message: ");
Serial.println(msg);
client.publish(topic_pub, msg);
}
}
info.h
//填入您的WIFI连接信息
#define ssid "xxx"
#define password "xxx"
//填入您的云服务器接入信息
#define mqtt_server "iot.dapenson.xyz"
#define mqtt_port 61883
#define mqtt_clientID "device_Dapenson"
#define mqtt_username "Dapenson"
#define mqtt_userpassword "Dapenson"
#define topic_sub "user/get"
#define topic_pub "user/update"
Centos8上搭建EMQ MQTT的更多相关文章
- macOS上搭建RabbitMQ+MQTT服务器
1. 下载RabbitMQhttps://www.rabbitmq.com/install-standalone-mac.html或通过brew直接安装RabbitMQ brew install ra ...
- 【经验分享】如何搭建本地MQTT服务器(Windows ),并进行上下行调测
网上查了很多资料,实际动手的时候踩了很多坑,现在把我的经验分享给大家: 一.安装和启动 使用EMQTT,下载完直接到bin目录下执行emqttd start就可以了,简单方便 下载地址:https:/ ...
- Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台
前言 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分. 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装 工具介绍 工具 介绍 Jmet ...
- 在UP Board 上搭建M——L服务器
前言 原创文章,转载引用务必注明链接,水平有限,欢迎指正. 本文环境:ubilinux 3.0 on UP Board 初识免流 所谓免流,就是免除手机访问网络产生的流量费用.其原理在乌云网上有过报道 ...
- 在Github上搭建自己的博客(Windows平台)
折腾了好久,终于在Github上搭建了自己的博客.这里面总结一下过程希望对大家能有所帮助. Github建博优缺点 和 csdn,新浪,网易相比,在Github上可以自己实现功能 和阿里云,VPS相比 ...
- JMeter--二、在Windows环境上搭建wordpress
为了学习使用JMeter,在Windows环境上搭建了wordpress. 使用JMeter录制或是编写登录worepress.编辑文章.删除文章的脚本. 首先了解一下wordpress是什么? Wo ...
- hexo在git上搭建个人博客
公司实习第一天接到的任务是:搭建一个基于Nodejs的开源项目的开发环境,接到任务时以为不是很困难,后来才知道该项目已于去年被废弃,搭配环境的时候遇到了不少问题,折腾了两天还是没有最终完成... 不过 ...
- Linux(Centos)系统上搭建SVN以及常见错误解答
本文主要介绍怎样在Centos上搭建SVN,文章内容比较基础,适合小白用户学习. 1.Linux版本Centos 6.5 查看linux版本命令: cat /etc/issue 2.查看本机上是否已经 ...
- 树莓派Odroid等卡片式电脑上搭建NAS教程系列6-miniDLNA
目录: 1. 树莓派Odroid等卡片式电脑上搭建NAS教程系列1-Ubuntu系统安装 2. 树莓派Odroid等卡片式电脑上搭建NAS教程系列2-SSH连接访问 3. 树莓派Odroid等卡片式电 ...
随机推荐
- spark:reducebykey与groupbykey的区别
从源码看: reduceBykey与groupbykey: 都调用函数combineByKeyWithClassTag[V]((v: V) => v, func, func, partition ...
- volatile 关键字精讲
1.错误案例 通过一个案例引出volatile关键字,例如以下代码示例 : 此时没有加volatile关键字两个线程间的通讯就会有问题 public class ThreadsShare { priv ...
- NOIP初赛篇——09原码、反码和补码
一.数的原码.补码和反码表示 机器数和真值 在计算机中,表示数值的数字符号只有0和1两个数码,我们规定最高位为符号位,并用0表示正符号,用1表示负符号.这样,机器中的数值和符号全"数码化 ...
- 自定义注解,更优雅的使用MP分页功能
分页功能使用 MP的分页功能是通过MyBatis的插件实现的,使用起来也非常简单.下面先介绍下使用方式. step1:配置分页插件 @Configuration @EnableTransactionM ...
- js如何替换字符串中匹配到多处中某一指定节点?
抛出一个问题,如图,搜索关键字,匹配到四处,那我鼠标放在第二处,我想把它变个颜色,该怎么实现呢?回到文章的标题,js如何替换字符串中匹配到多处中某一指定节点? 字符串的替换,我们首先想到的一个属性是r ...
- linux常用命令--转载
转载自: https://www.cnblogs.com/Qsunshine/p/10402179.html 常用指令 ls 显示文件或目录 -l列出文件详细信息l(list) -a列出当前目录下所有 ...
- 基于 MapReduce 的单词计数(Word Count)的实现
完整代码: // 导入必要的包 import java.io.IOException; import java.util.StringTokenizer; import org.apache.hado ...
- Mac安装homebrew,postman,charles
Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装.卸载.更新.查看.搜索等很多实用的功能.简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷. 1. ...
- 【Linux】fio测试读写速度
需要安装fio yum install fio -y 有很多依赖包 FIO用法: 随机读:(可直接用,向磁盘写一个2G文件,10线程,随机读1分钟,给出结果) fio -filename=/h ...
- Junit测试和反射
Junit单元测试 测试分类 黑盒测试:不需要写代码,给输入值,看程序能否得到输出期望值. 白盒测试:需要些代码,关注程序具体的执行流程. Junit的使用 步骤 定义一个测试类(测试用例). 定义测 ...