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进行接入

  1. 配置地址和端口

  1. 订阅任意Topic

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

规则转发

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

  1. 发布消息到emqx_pub

  1. 检查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的更多相关文章

  1. macOS上搭建RabbitMQ+MQTT服务器

    1. 下载RabbitMQhttps://www.rabbitmq.com/install-standalone-mac.html或通过brew直接安装RabbitMQ brew install ra ...

  2. 【经验分享】如何搭建本地MQTT服务器(Windows ),并进行上下行调测

    网上查了很多资料,实际动手的时候踩了很多坑,现在把我的经验分享给大家: 一.安装和启动 使用EMQTT,下载完直接到bin目录下执行emqttd start就可以了,简单方便 下载地址:https:/ ...

  3. Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    前言 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分. 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装 工具介绍 工具 介绍 Jmet ...

  4. 在UP Board 上搭建M——L服务器

    前言 原创文章,转载引用务必注明链接,水平有限,欢迎指正. 本文环境:ubilinux 3.0 on UP Board 初识免流 所谓免流,就是免除手机访问网络产生的流量费用.其原理在乌云网上有过报道 ...

  5. 在Github上搭建自己的博客(Windows平台)

    折腾了好久,终于在Github上搭建了自己的博客.这里面总结一下过程希望对大家能有所帮助. Github建博优缺点 和 csdn,新浪,网易相比,在Github上可以自己实现功能 和阿里云,VPS相比 ...

  6. JMeter--二、在Windows环境上搭建wordpress

    为了学习使用JMeter,在Windows环境上搭建了wordpress. 使用JMeter录制或是编写登录worepress.编辑文章.删除文章的脚本. 首先了解一下wordpress是什么? Wo ...

  7. hexo在git上搭建个人博客

    公司实习第一天接到的任务是:搭建一个基于Nodejs的开源项目的开发环境,接到任务时以为不是很困难,后来才知道该项目已于去年被废弃,搭配环境的时候遇到了不少问题,折腾了两天还是没有最终完成... 不过 ...

  8. Linux(Centos)系统上搭建SVN以及常见错误解答

    本文主要介绍怎样在Centos上搭建SVN,文章内容比较基础,适合小白用户学习. 1.Linux版本Centos 6.5 查看linux版本命令: cat /etc/issue 2.查看本机上是否已经 ...

  9. 树莓派Odroid等卡片式电脑上搭建NAS教程系列6-miniDLNA

    目录: 1. 树莓派Odroid等卡片式电脑上搭建NAS教程系列1-Ubuntu系统安装 2. 树莓派Odroid等卡片式电脑上搭建NAS教程系列2-SSH连接访问 3. 树莓派Odroid等卡片式电 ...

随机推荐

  1. kubectl常用命令(个人记录)

    一.获取pod信息 1.获取当前集群运行的所有的pods的信息 kubectl get pod   2.获取当前集群运行的所有的pod运行在哪个节点 kubectl get pods -owide   ...

  2. 【C++】《Effective C++》第二章

    第二章 构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 默认函数 一般情况下,编译器会为类默认合成以下函数:default构造函数.copy构造函数.non-virtual析构函数. ...

  3. Desired_Capabilities配置

    appium服务器初始化参数 最全: https://github.com/appium/appium/blob/master/docs/cn/writing-running-appium/caps. ...

  4. 【Vue】Vue框架常用知识点 Vue的模板语法、计算属性与侦听器、条件渲染、列表渲染、Class与Style绑定介绍与基本的用法

    Vue框架常用知识点 文章目录 Vue框架常用知识点 知识点解释 第一个vue应用 模板语法 计算属性与侦听器 条件渲染.列表渲染.Class与Style绑定 知识点解释 vue框架知识体系 [1]基 ...

  5. 【Web】HTML入门小结

    文章目录 HTML? HTML 初识元素/标签 HTML语义化标签 标题 段落 font HTMl链接 HTML图像 HTML列表 HTML div HTML 块级元素与行内元素 HTML常用带格式作 ...

  6. 【Nginx】配置nginx图片服务器

    想通过nginx来访问服务器上的图片 可以搭建一个nginx图片服务器. 做法如下: 先安装nginx,这里直接用yum来进行安装的 安装方法如下: https://blog.csdn.net/iml ...

  7. 攻防世界—pwn—hello_pwn

    题目分析 下载文件后首先使用checksec检查文件保护机制 使用ida查看伪代码 思路明确,让dword_60106C == 1853186401即可输出flag 信息收集 偏移量 sub_4006 ...

  8. oracle常见进度查询脚本

    1.查看索引创建进度 /* Formatted on 2019/8/20 下午 05:08:25 (QP5 v5.163.1008.3004) */ SELECT SID, DECODE (total ...

  9. [MRCTF2020]你传你🐎呢之.htaccess

    前言 最近,也是遇到了文件上传的文件,自己搭的靶场都不能用,今天,在这里又遇到了这个题.简单总结下,内容来自互联网,若有侵权,联系我. .htaccess简介 .htaccess文件(分布式配置文件) ...

  10. LuoguP5075 [JSOI2012]分零食

    题意 有\(A\)个人,\(m\)个糖,你可以选择一个\(k\),使第\(1\)$k$个人每个人至少得到一个糖,并且第$k+1$\(A\)个人都得不到糖.\(m\)个糖必须给完.对于每个方案都有一个欢 ...