1、下载mosquitto源码
官网下载地址:https://mosquitto.org/download/
选择最新的1.5.5.版本下载。
2、编译
解压源码包:
# tar axvf mosquitto-1.5.5.tar.gz
# cd mosquitto-1.5.5
# make
若出现如下提示:
这是因为找不到openssl头文件所导致的。根据自己的需求,是否需要进行ssl加密,若不需要,注释config.mk文件中的 WITH_TLS:=YES 选项即可。
若需要进行ssl加密,则首先需要确认自己是否安装openssl库,可使用find命令进行查询。
# find /usr/ -name "openssl"
若没有安装,请参考:https://blog.csdn.net/fangye945a/article/details/86658621 进行openssl安装。
若已经安装,则需修改工程目录下config.mk文件,添加openssl的在你电脑中的库路径和头文件路径即可,如下所示:
若需要编译mosquito静态库需要将WITH_STATIC_LIBRARIES设置为yes,如下所示。
修改后保存退出,即可进行编译、安装。
# make
# sudo make install
如果需要交叉编译,则LDFLAGS和CFLAGS需要指定交叉编译版本的ssl库路径和头文件。然后在执行make时,通过CC 和 CXX指定交叉编译工具链即可:
# make CC=arm-xxx-gcc CXX=arm-xxx-g++
# sudo make install
若遇到其他依赖问题可参考:
https://blog.csdn.net/xukai871105/article/details/39252653
3、 搭建mqtt服务器
进入mosquitto配置目录,修改配置文件:
# cd /etc/mosquitto
# cp mosquitto.conf.example mosquitto.conf //拷贝一份配置文件示例
# sudo vim mosquitto.conf //修改mosquitto配置文件
设置服务器端口号:
若mqtt服务器需要设置账号和密码,则需设置 允许匿名访问 为false
指定登录验证密码文件:
也可指定mqtt服务器主题与用户之间的关系文件(可限定某个用户只能订阅设置的特定的主题,若不愿限制不设置即可)
配置topic与用户的关系:
如下含义为:只允许fangye用户订阅主题名以hello/开头的主题。
创建密码文件:
指定配置文件后台允许mqtt服务程序。
# mosquitto -c /etc/mosquitto/mosquitto.conf &
如下提示则表示运行成功
4、订阅、发布测试
订阅:
# mosquitto_sub -h 192.168.10.106 -p 1883 -u fangye -P 123 -t hello/world
发布:
# mosquitto_pub -h 192.168.10.106 -p 1883 -u fangye -P 123 -t hello/world -m 123
测试结果:
若订阅的主题名称不符合之前acl文件中设置的规则,订阅能够成功,但是收不到发布到对应主题的消息,如图:
若提示:
这是因为mosquitto库没有在系统环境变量路径下,需在/usr/lib下建立mosquitto库的软链接,如下所示:
# sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1