Mosquitto简单安装及过程出现的问题

转自: http://blog.csdn.net/blinkdr/article/details/61428695

Mosquitto简单介绍
        实现MQTT协议的软件有很多,常见的有Mosquitto、Apollo、Mosca、emqttd等。今天要介绍的是Mosquitto,它主要是由C来开发的,包括了服务端和客户端,可以跨平台部署。更多的时候,使用它来搭建MQTT服务器,其他的嵌入式设备(如nodemcu、树莓派等)。单机能够承受十万以上的连接(没测试过),但是对于一般的物联网应用还是足够使用。

源码安装
        Mosquitto的最新版本是v1.4.11,其源码可以通过其官网Mosquitto或者其项目地址Github下载获得并解压。

mkdir mosquitto 
cd mosquitto
wget http://mosquitto.org/files/source/mosquitto-1.4.11.tar.gz -O mosquitto.tar.gz
//从官网获取最新版本
tar -zxvf mosquitto.tar.gz
cd mosquitto-1.4.11


解压之后,其目录结构如下:



        其中,client文件夹下是mosquitto_sub和mosquitto_pub的源码,lib文件夹下是.so库文件的源码,src文件夹下是mosquitto和mosquitto_passwd的源码。如果要修改编译选项,对config.mk进行修改即可。
这里采用默认的编译选项,然后进行编译安装。


make
sudo make install       //安装时需要管理员权限
mosquitto --help        //如果出现版本信息和帮助内容,则说明安装成功


在make预编译以及make install会出现问题。
具体发生错误的信息忘了,大致是以下几个原因。
1.openSSL没安装
2.g++没安装
3.启动报 Invalid user 'mosquitto'.错误
两种解决办法:
(1)修改配置文件:mosquitto.conf ,增加登录的用户,例如当前登录用户为root


(2)执行命令增加当前用户:
adduser mosquitto



3.其他(忘了,想起来再补)


简单体验
服务器代理启动,只需简单一条命令即可

mosquitto -v
//-v参数会打印出各类信息


也可以这种方式启动
mosquitto -c mosquitto.conf//以哪个配置文件为基础启动

//-v参数会打印出各类信息


然后使用mosquitto_sub订阅一个主题

mosquitto_sub -h localhost -t "blinkdr"
//-h参数指定要连接的MQTT服务器
//-t参数指定要订阅的主题


在另外一个终端中,使用mosquitto_pub命令推送消息

mosquitto_pub -h localhost -t "blinkdr" -m "hello world"
//-h参数指定要连接的MQTT服务器
//-t参数指定向指定主题推送消息
//-m参数指定消息内容


效果如图



客户端工具MQTT.fx测试
问题 : vmware workstation 14虚拟机下搭建的Centos7时,MQTT.fx以及java paho代码连接不上
解决 :
1.可能是Centos防火墙开启,关闭试试。
service iptables status可以查看到iptables服务的当前状态。
但是即使服务运行了,防火墙也不一定起作用,你还得看防火墙规则的设置 iptables  -L
在此说一下关于启动和关闭防火墙的命令:

开启防火墙: service iptables start
关闭防火墙: service iptables stop

2.将centos中mosquitto的端口号打开。

iptables -L -n    //查看所有端口开放状态
iptables -I INPUT -p tcp --dport 8889 -j ACCEPT // 当前有效重启无效
-A IN_public_allow -p tcp -m tcp --dport 1888 -m conntrack --ctstate NEW -j ACCEPT   //重启永久有效


1) 重启后永久生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop


需要注意部分:
1)需要永久有效时,使用上面的永久有效命令,再执行service iptables restart 或 reboot重启系统  或两个一起绝对有效
其实主要还是 iptables文件是否有此策略为准,命令实在不行直接文件里加上试试
实在不行,重启操作系统。

2)如果关闭防火墙的话,端口策略没生效,还是不能访问端口,需要将防火墙打开,然后防火墙策略保存并生效已有,启动防火墙才可以正常访问端口。


参考 : https://www.cnblogs.com/blog-yuesheng521/p/7198829.html

MQTT.fx测试





总结
        Mosquitto就是这么简单,当然要使用它的高级特性,像TLS和用户验证等,需要对其编译选项及服务器启动配置文件有深入的了解。另外,其官网提供了一个测试用的MQTT服务器,可以供大家学习使用。

猜你喜欢

转载自ymq267.iteye.com/blog/2409128