mqtt服务器搭建如何搭建自己的mqtt服务器怎么搭建mqtt服务器




mqtt服务器搭建如何搭建自己的mqtt服务器怎么搭建mqtt服务器

2022-07-21 2:24:56 网络知识 官方管理员

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,提供一对多的消息发布,解除应用程序耦合。MQTT协议是轻量、简单、开放和易于实现的。对负载内容屏蔽的消息传输。使用TCP/IP提供网络连接等。这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

环境搭建

以我的Linux版本CentOS7.664bit

安装相关的插件软件:

1、安装gcc插件:yuminstallgcc-c++

2、安装跨平台的安装(编译)工具Cmake:yuminstallcmake

3、安装连接库openssl-devel:yuminstallopenssl-devel

下载Mosquitto

为了方便我们后维护和文件管理,可以先创建一个mqtt文件:mkdirmqtt

cd./mqtt进入刚新建的文件目录下:

下载mosquitto:wgethttp://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz

解压:tar-zxvfmosquitto-1.6.8.tar.gz,解压后先不进行编译安装mosquitto。

扩展软件安装(可以不安装,不影响MQTTMosquitto使用):

1、安装c-areas

#wgethttp://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz#tarxvfc-ares-1.10.0.tar.gz#cdc-ares-1.10.0#./configure#make#sudomakeinstall

2、安装lib-uuid

#yuminstalllibuuid-devel

3、安装libwebsockets

#wgethttps://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz#tarzxvfv1.3-chrome37-firefox30.tar.gz#cdlibwebsockets-1.3-chrome37-firefox30#mkdirbuild#cdbuild#cmake..-DLIB_SUFFIX=64#makeinstall

编译安装Mosquitto

cdmosquitto-1.6.8进入mosquitto-1.6.8目录下:输入以下命令

make

sudomakeinstall

注:如果在后续步骤提示找不到libmosquitto.so.1,在/mqtt目录下输入以下指令修改一下libmosquitto.so的位置:

sudoln-s/usr/local/lib/libmosquitto.so.1/usr/lib/libmosquitto.so.1

sudoldconfig

启动测试:(这里我们可以重新打开一个新的命令窗口)

sudogroupaddmosquitto

sudouseradd-gmosquittomosquitto

程序配置:

mv/etc/mosquitto/mosquitto.conf.example/etc/mosquitto/mosquitto.conf

启动程序:

mosquitto-c/etc/mosquitto/mosquitto.conf-d

如果没有提示错误,那就说明成功了。

尝试匿名发布订阅主题(无需账号、密码)

订阅:mosquitto_sub-tmqtt

发布:mosquitto_pub-tmqtt-hlocalhost-m"hellomqtt!"

注:订阅和发布的主题要相同。

修改默认配置:

修改mosquitto.conf文件,关闭匿名登录使用。

cd./mosquitto-1.6.8进入mosquitto-1.6.8目录下:输入以下命令:

打开mosquitto.conf文件:vim/etc/mosquitto/mosquitto.conf

点击键盘“插入”进入编辑状态。

找到allow_anonymous,去掉前面的#,改为false。找到password_file配置保存用户密码的文件存放路径。按下图修改即可。

mqtt服务器搭建(如何搭建自己的mqtt服务器)(1)

修改mosquitto.conf文件

修改后点击键盘“退出”,输入命令:“:wq!”回车保存修改。

创建自定义用户名、密码

输入命令:mosquitto_passwd-c/etc/mosquitto/pwfile.example用户名

根据提示输入密码和二次确认密码即可。

重启mosquitto让文件生效

关闭程序:kill-9$(pidofmosquitto)

运行程序:mosquitto-c/etc/mosquitto/mosquitto.conf-d

此时再用如下命令发布订阅:

订阅:mosquitto_sub-tmqtt

发布:mosquitto_pub-tmqtt-hlocalhost-m"hellomqtt!"

你会发现不能连接:Couldnotconnect:CONNECTION_REFUSED_NOT_AUTHORIZED

出现这个情况是因为修改了上述文件,不能匿名使用了。

正确订阅:mosquitto_sub-hlocalhost-ttest-u"用户名"-P"密码"

正确发布:mosquitto_pub-hlocalhost-ttest-m"测试"-u"用户名"-P"密码"

一般先启动订阅者,再启动发布者。

默认端口:1883

一般我们服务器防火墙是没有打开1883端口的,如果没有开放1883端口安全组,上面命令订阅发布在服务器本地是可以正常使用的,但不能远程连接使用。

打开防火墙中的端口1883:

打开新的服务器连接窗口输入以下命令:

添加端口:firewall-cmd--zone=public--add-port=1883/tcp--permanent

重载:firewall-cmd--reload

注:到这里你可能还不能远程连接使用

你还需在你服务器的所属云服务商(例如:阿里云、腾讯云、华为云等),登录云服务商平台,为你的服务器添加安全组,开放进出端口:1883

到此就可以了。如下图:

mqtt服务器搭建(如何搭建自己的mqtt服务器)(2)

本地远程连接服务器订阅主题

mqtt服务器搭建(如何搭建自己的mqtt服务器)(3)

服务器订阅主题

mqtt服务器搭建(如何搭建自己的mqtt服务器)(4)

发布主题

#Linux##mqtt##Mosquitto#


发表评论:

最近发表
网站分类
标签列表