一、简介
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。(以上内容来源百度)
二、环境介绍
- 系统环境 :centos 7.5 (滴滴云服务器)
- MQTT版本:mosquitto-1.6.10
三、环境准备
1、资源获取
获取: wget https://mosquitto.org/files/source/mosquitto-1.6.10.tar.gz
解压: tar zxfv mosquitto-1.6.10.tar.gz
2、安装
- 进入目录: cd /usr/local/data/mosquitto-1.6.10
- 执行命令:make:
[root@10-254-188-68 mosquitto-1.6.10]# make
set -e; for d in lib client src; do make -C ${d}; done
make[1]: Entering directory `/usr/local/data/mosquitto-1.6.10/lib'
cc -I. -I.. -I../lib -I../src/deps -DWITH_TLS -DWITH_TLS_PSK -DWITH_THREADING -DWITH_SOCKS -Wall -ggdb -O2 -fPIC -c mosquitto.c -o mosquitto.o
make[1]: cc: Command not found
make[1]: *** [mosquitto.o] Error 127
make[1]: Leaving directory `/usr/local/data/mosquitto-1.6.10/lib'
make: *** [mosquitto] Error 2
- 安装gcc : yum install gcc
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t2BvsaOO-1596862684423)(https://b3logfile.com/file/2020/08/image-621102d6.png)]
- 再次:make
[root@10-254-188-68 mosquitto-1.6.10]# make
set -e; for d in lib client src; do make -C ${d}; done
make[1]: Entering directory `/usr/local/data/mosquitto-1.6.10/lib'
cc -I. -I.. -I../lib -I../src/deps -DWITH_TLS -DWITH_TLS_PSK -DWITH_THREADING -DWITH_SOCKS -Wall -ggdb -O2 -fPIC -c mosquitto.c -o mosquitto.o
In file included from mosquitto.c:17:0:
../config.h:48:35: fatal error: openssl/opensslconf.h: No such file or directory
# include <openssl/opensslconf.h>
^
compilation terminated.
make[1]: *** [mosquitto.o] Error 1
make[1]: Leaving directory `/usr/local/data/mosquitto-1.6.10/lib'
make: *** [mosquitto] Error 2
- 安装 openssl:yum install openssl-devel
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AvTYT8FL-1596862684425)(https://b3logfile.com/file/2020/08/image-860eab58.png)]
- 再次 make ,依然失败:
make -C cpp
make[2]: Entering directory `/usr/local/data/mosquitto-1.6.10/lib/cpp'
g++ -I. -I.. -I../lib -I../src/deps -DWITH_TLS -DWITH_TLS_PSK -DWITH_THREADING -DWITH_SOCKS -fPIC -c mosquittopp.cpp -o mosquittopp.o
make[2]: g++: Command not found
make[2]: *** [mosquittopp.o] Error 127
make[2]: Leaving directory `/usr/local/data/mosquitto-1.6.10/lib/cpp'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/local/data/mosquitto-1.6.10/lib'
make: *** [mosquitto] Error 2
- 安装: gcc-c++
首先执行: yum whatprovides "*/g++"
发现:<这里可能是其他版本,根据实际情况安装即可>
gcc-c++-4.8.5-39.el7.x86_64 : C++ support for GCC
Repo : base
Matched from:
Filename : /usr/bin/g++
执行: yum install gcc-c++-4.8.5-39.el7.x86_64
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yV3lK3Nu-1596862684426)(https://b3logfile.com/file/2020/08/image-422c15e8.png)]
再次执行 : make ,没有明显报错;
执行命令: make install 即可
3、测试
- 测试前需要解决几个问题:
问题一:
mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决方法:
//创建链接
vi /etc/ld.so.conf
//编辑文件ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib/libmosquitto.so.1
// 建立软连接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
//更新链接库 ldconfig
/sbin/ldconfig -v
- 至此,我们的服务已经安装完毕,见证奇迹的时刻到了:
- 打开三个xshell窗口:A , B , C
A : 输入命令: mosquitto -v
B : 输入命令: mosquitto_sub -v -t toptest 等待
C : 输入命令:mosquitto_pub -h localhost -t toptest -m “hello world”
此时:
原文链接: https://blog.zzphoenix.com/articles/2020/08/08/1596852300287.html