解压下载的压缩包后会生产一个mosquitto-XX.XX.XX为目录的源码文件夹,如下图所示:
如果需要开启websocket、tls、系统topic等功能,则需要修改该目录下的编译配置文件:config.mk。
在解压的当前目录下(例如:上面截图的mosquitto-1.4.15)依次执行如下命令:
make
如果需要安装则还需要执行命令:
make install
在生产环境中也可以不安装,只需要将编译产生的可执行文件:mosquitto,配置文件mosquitto.conf拷贝到生产环境上即可,采用这种方式而不是使用makeinstall的最大好处是便于统一运维部署。
编译之后的可执行文件在src目录下,名字为:mosquitto,如下图所示:
编译时同时也编译了两个mosquito自带的测试程序:mosquitto_pub和mosquitto_sub,这是两个常用的问题分析工具。
在编译中可能出现各种问题,下文列出了常见问题及使用方法:
https://blog.csdn.net/houjixin/article/details/46711547
可在其程序目录下输入命令:
mosquitto -c /etc/mosquitto/mosquitto.conf -d
或者:
mosquitto -c /etc/mosquitto/mosquitto.conf &
其中:
-c表示后配置文件的全名,源码中的配置文件在Mosquitto目录下,配置文件的名字为:mosquitto.conf;如果不指定配置文件,则表示使用默认配置(例如,默认的监听端口号是1883)。
-d表示服务在后台启动。
启动日志如下图所示:
第一次启动时,可以先在前台启动(命令的最后不加-d或者&),观察启动打印是否报错,没问题,再在后台启动。
在生产环境中,可采用如下统一规范化的运行方式,将上述命令放在run.sh脚本中,然后使用如下命令统一执行所有的程序:
nohup ./run.sh > /dev/null 2>&1 &
生产环境中,日志配置可参考下文:
https://blog.csdn.net/houjixin/article/details/72654693
执行命令(假如:查看mosquitto是否在1883端口启动成功):ss -anp | grep 1883
如下图所示:
执行命令:ps -ef | grep mosquitto
使用mosquitto自带测试工具mosquitto_pub和mosquitto_sub测试数据收发,这两个测试工具在client目录下(与src目录平级):
启动订阅客户端mosquitto_sub并且订阅topic“test-topic”:
./mosquitto_sub -h 127.0.0.1 -p 1883 -t "test-topic"
该客户端启动后将默默的等待有数据的到来,如下图所示:
启动发布客户端mosquitto_pub,并且向topic“test-topic”发送一条消息:hello jason
./mosquitto_pub -h 127.0.0.1 -p 1883 -t "test-topic" -m "hello jason"
注意:mosquitto_pub客户端发送一条数据之后就停止运行了,如下图所示:
此时启动的订阅客户端mosquitto_sub将会收到一条数据: