- 准备依赖环境
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
- 安装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
- 安装lib-uuid(支持为每个连接客户端生成唯一uuid):
yum install libuuid-devel
- 安装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
- 通讯测试
- 本机测试
在服务器上重新打开两个命令窗口,一个为订阅者,一个为发布者
在订阅者窗口输入 mosquitto_sub -t test
在发布者窗口输入 mosquitto_pub -t test -m“发布消息”
如果在订阅者窗口会收到消息就证明服务器已经运行。
- 局域网测试
下载MQTTX助手,输入相关参数
名称随意定义,client ID 不用更改,服务器地址及端口,写上自己服务器在局域网内的IP 及映射的端口号,其他默认即可。点击连接按钮就可以自己发布和订阅消息了。如果连接失败,先看一下端口号是否在路由器里映射,并且确认服务器的防火墙对该端号是打开的。
- 参考来源
1.《Linux上MQTT环境搭建》
2.《Linux搭建MQTT服务器(mosquitto)并使用》
3.《mosquitto 结束&启动》
感谢以上大佬的精彩分享