MQTT 官网:https://mosquitto.org/
官网 资源:https://mosquitto.org/files/source/
系统版本CentOS Linux release 7.6.1810 (Core) X64
Mqtt服务搭建
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 //默认端口是1883
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 “我发消息给你了”
订阅端)客户端启动:
#mosquitto_sub -h
192.168.1.100 -t mtopic -u admin -P 123456
(发布者)客户端启动:
#mosquitto_pub -h 192.168.1.100 -t mtopic -u
admin -P 123456 -m “test”
-u 用户
–p 密码
–t 主题
–m 内容
//启动测试:
2、启动测试
创建用户:
sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto
这里要是出现什么存在不存在的问题,一定是你copy错了
程序配置:
mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
启动程序:
mosquitto -c /etc/mosquitto/mosquitto.conf -d
默认端口为1883
mosquitto.conf :此文件是配置用户名密码的,一般采用的是匿名登录模式,正式系统是需要验证的
文件中: 文件路径 :cd /etc/mosquitto/
allow_anonymous
false # 不允许匿名
添加用户名密码
mosquitto.conf :此文件是配置用户名密码的,一般采用的是匿名登录模式,正式系统是需要验证的
文件中: 文件路径 :cd /etc/mosquitto/
allow_anonymous false #不允许匿名
添加用户名密码
注意:如果在mosquitto_sub -t hello 提示找不到libmosquitto.so.1的话,在下输入以下指令修改一下libmosquitto.so的位置:
sudo ln -s /usr/local/lib/libmosquitto.so.1
/usr/lib/libmosquitto.so.1
sudo ldconfig
另一个(发布)窗口输入:
mosquitto_pub -t hello -h localhost -m “hello world”
遇到的问题:
1.错误解决 创建mosquitto.conf、pwfile文件
程序配置://可能没有直接生产 .conf 文件
如果该目录下没有mosquitto.conf 和 pwfile
执行:
#cp mosquitto.conf.example mosquitto.conf 或mv
#cp pwfile.example pwfile
mv /etc/mosquitto/mosquitto.conf.example
/etc/mosquitto/mosquitto.conf
2、错误解决
在安装过程中,或测试过程中可能会遇到错误:
mosquitto_sub: error while loading shared
libraries: libmosquitto.so.1: cannot open shared object file: No such file or
directory
解决方法:
#cat /etc/ld.so.conf
#echo “/usr/local/lib”>>/etc/ld.so.conf
#ldconfig