MQTT linux centOS7 部署
系统版本centos7 X64
1.设置保存安装包路径
# cd /usr/local/src
2、开始下载源包
官网资源: https://mosquitto.org/files/source/
# wget https://mosquitto.org/files/source/mosquitto-1.6.7.tar.gz
3、解压
解压后得到mosquitto-1.6.7文件目录
# tar zxvf mosquitto-1.6.7.tar.gz
# mv mosquitto-1.6.7 /usr/local/mosquitto-1.6.7
4、安装MQTT运行依赖环境
1)以下三个必须安装,不然make时无法通过。 另外安装MQTT之前,我们也可以# cat compiling.txt文件阅读一下官方的说明。
# yum -y install openssl-devel # yum -y install gcc-c++ # yum -y install cmake
2)以下可选扩展功能,不安装也不影响MQTT使用,只是缺少部分对应的功能
c-ares(用于DNS-SRV支持,默认禁用)c-ares官网:http://c-ares.haxx.se
tcp-wrappers(可选,包名libwrapp0 dev)
lib-uuid(支持为每个连接客户端生成唯一uuid)
libwebsockets(可选,默认禁用,版本1.3及以上,安装可支持websocket功能) 关于MQTT和Websocket的区别,有兴趣可以到这个链接了解一下。
下面安装扩展功能:
# yum install -y c-ares-devel # yum install -y uuid-devel # yum install -y libuuid-devel
# yum install -y libwebsockets
如果想了解安装的库在哪个位置,# rpm -ql libuuid 可知道哪些文件是通过yum指令安装来的,卸载包使用# yum remove libuuid
需要查询是否已经安装RPM包可输入# rpm -q libuuid-devel
5、修改config.mk配置文件
# cd /usr/local/mosquitto-1.6.7 # vim config.mk
修改以下为yes,如果前面有#就去掉,保存退出。
WITH_SRV:=yes
WITH_WEBSOCKETS:=yes
WITH_ADNS:=yes
6、编译安装
# make # make install
以上执行# make时,如果不报错的话,就跳过以下说明。如果报错: mosquitto.c:49:29: fatal error: libwebsockets.h: No such file or directory
那么说明libwebsockets 没有安装好,执行卸载# yum remove libwebsockets,下载新的源包的进行安装,步骤如下。
源包链接:https://github.com/warmcat/libwebsockets 我们选择一个版本复制zip下载链接,这里我选择的是1.5版本。
# wget https://github.com/warmcat/libwebsockets/archive/v1.5-stable.zip # yum -y install unzip # unzip libwebsockets-1.5.zip # mkdir -p /usr/local/websocket # mv libwebsockets-1.5-stable /usr/local/websocket # cd /usr/local/websocke/libwebsockets-1.5-stable # cmake . # make # make install
执行以上安装ibwebsockets后,重新编译安装MQTT # cd /usr/local/mosquitto-1.6.7 # make # make install 这3个命令前面已经列出过了。
7、启动
# mosquitto -c /etc/mosquitto/mosquitto.conf -d -p 1883 -v
8、启动MQTT报错解决
错误信息:mosquitto: error while loading shared libraries: libwebsockets.so.5: cannot open shared object file: No such file or directory
解决方法:使用whereis可以查找 libwebsockets.so.5的所在路径,建立一个软链接到/usr/lib 下即可。
# ln -s /usr/local/lib/libwebsockets.so.5 /usr/lib/libwebsockets.so.5 # ldconfig
9、测试
打开2个shell 窗口,登录你的linux账号。
订阅:mosquitto_sub -t mtopic -h 47.0.0.0 -u sun_read
发布:mosquitto_pub -t mtopic -h 47.0.0.0 -m "我发消息给你了"