基于CentOS7搭建MQTT服务器踩坑实战

  • 准备依赖环境

yum install gcc-c++

yum install cmake

yum install openssl-devel

  • 下载mosquitto及相关组件包

1.下载mosquitto:

wget http://mosquitto.org/files/source/mosquitto-1.4.4.tar.gz

如果下载失败(由于本人是Linux小白,不知道具体原因),可以在windows下载完成后,拖到Linux服务器上。然后解压源码到自己的文件夹

tar -xzvf mosquitto-1.4.4.tar.gz mydir

  1. 安装c-areas(支持异步DNS查找的库):

wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz

tar xvf c-ares-1.10.0.tar.gz

cd c-ares-1.10.0

./configure

make

sudo make install

  1. 安装lib-uuid(支持为每个连接客户端生成唯一uuid):

yum install libuuid-devel

  1. 安装libwebsockets(支持需使用websocket的应用):

Wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37

-firefox30.tar.gz

tar zxvf v1.3-chrome37-firefox30.tar.gz

cd libwebsockets-1.3-chrome37-firefox30

mkdir build

cd build

cmake .. -DLIB_SUFFIX=64

make install

以上三个扩展包安装完成后就可以进行下一步了。(CSDN大佬说有可能失败但是不影响后面的使用只是缺少相应的功能,但很庆幸我都成功了。如果失败可以在管理员模式下操作在指令前面加上sudo尝试一下)

  • 编译&安装mosquitto

在编译之前可以先配置一下mosquitto的功能,在源码的根目录下config.mk文件内包含了需要的配置信息,可以根据自己的需求开启相应的功能(有些功能需要资源包,否则会编译出错找不到相应的.h文件),我开起了以下功能,也就是我们之前安装的3个扩展包:

WITH_SRV:=yes

WITH_UUID:=yes

WITH_WEBSOCKETS:=yes

接下来就是编译和安装了,在这之前先祈祷一下,千万别出错,出错了的话又得折腾半天,尤其是对于我这种小白来说

make

sudo make install

  • 配置&启动

我们的代码是安装在 ept/mosquitto/目录下的,mosquitto的配置文件是mosquitto.conf,在目录下并没有这么一个文件,而是有一个mosquitto.conf.example,我们来给他改一下名字:

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

到这里我们就可以运行mosquitto了,但是只能在本机通讯,而且端口号等配置都是默认值,大佬的教程基本上都是到这里就结束。网上有些大佬是通过改mosquitto.conf来配置的,但是不知道什么原因,我无论怎么更改这个文件的里的配置,最后运行的总是默认配置。后来找了很多资料,才发现可以在/etc/mosquitto/目录下创建一个conf.d文件夹 将mosquitto.conf拷贝一下

cp -r mosquitto.conf  /etc/mosquitto/conf.d

在原来的mosquitto.conf文件最后面加上include_dir /etc/mosquitto/conf.d

通过更改conf.d下的conf文件就可以更改mosquitto的配置了。这里我只是重新映射了一下端口号 将#port 1883 改为port xxxx。

具体的配置参数详情可以参考《mosquitto配置文件详解》

启动命令:

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

为了启动方便也可以写一个shell脚本放在/etc/profile.d/目录下,脚本会在每次登录的时候自动启动mosquitto。脚本内容:

#!/bin/sh

cd /etc/mosquitto/

mosquitto -c mosquitto.conf

  • 通讯测试
  1. 本机测试

在服务器上重新打开两个命令窗口,一个为订阅者,一个为发布者

在订阅者窗口输入 mosquitto_sub -t test

在发布者窗口输入 mosquitto_pub -t test -m“发布消息”

如果在订阅者窗口会收到消息就证明服务器已经运行。

  1. 局域网测试

下载MQTTX助手,输入相关参数

 

名称随意定义,client ID 不用更改,服务器地址及端口,写上自己服务器在局域网内的IP 及映射的端口号,其他默认即可。点击连接按钮就可以自己发布和订阅消息了。如果连接失败,先看一下端口号是否在路由器里映射,并且确认服务器的防火墙对该端号是打开的。

  • 参考来源

1.《Linux上MQTT环境搭建》

2.《Linux搭建MQTT服务器(mosquitto)并使用

3.《mosquitto 结束&启动

4.《mosquitto配置文件详解》

感谢以上大佬的精彩分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值