安装相关依赖
# yum -y install wget
# yum -y install openssl-devel
# yum -y install gcc-c++
# yum -y install cmake
安装libwebsockets
wget https://github.com/warmcat/libwebsockets/archive/v1.5-stable.zip
# yum -y install unzip
# unzip v1.5-stable.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
# ln -s /usr/local/lib/libwebsockets.so.5 /usr/lib/libwebsockets.so.5
# ldconfig
安装mosquitto
1、设置安装目录
# cd /usr/local/
2、开始下载源包
# wget https://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz
3、解压
解压后得到mosquitto-1.6.8文件目录
# tar zxvf mosquitto-1.6.8.tar.gz
4、安装MQTT运行依赖环境
以下可选扩展功能,不安装也不影响MQTT使用,只是缺少部分对应的功能
c-ares(用于DNS-SRV支持,默认禁用)
tcp-wrappers(可选,包名libwrapp0 dev)
lib-uuid(支持为每个连接客户端生成唯一uuid)
下面安装扩展功能:
# yum install -y c-ares-devel
# yum install -y uuid-devel
# yum install -y libuuid-devel
5、修改config.mk配置文件
# cd /usr/local/mosquitto-1.6.8
# vim config.mk
修改以下为yes,如果前面有#就去掉,保存退出。
WITH_SRV:=yes
WITH_WEBSOCKETS:=yes
WITH_ADNS:=yes
6、编译安装
# make
# make install
7、增加webScokets支持
如果要开启webSockets,它是支持的。但是要显式的加入mqtt协议及端口,在mosquitto.conf里面添加:
#MQTT协议
port 8893
protocol mqtt
#websockets协议
listener 8894
protocol websockets
#如果需要查看websockets日志还可以加入以下面,上面有提过。
log_type websockets
websockets_log_level 0
启动
mosquitto -c /usr/local/mosquitto-1.6.8/mosquitto.conf -d
出现如下错误
方法一:修改mosquitto目录下mosquitto.conf文件,在#user mosquitto处添加当前运行的用户,如当前用户为root,则添加root
方法二:执行 adduser mosquitto
执行成功:
8、增加权限
复制文件
cp pwfile.example pwfile.conf
cp aclfile.example aclfile.conf
less mosquitto.conf
修改前 #allow_anonymous true
修改后 allow_anonymous false
修改前 #password_file
修改后 password_file /usr/local/mosquitto-1.6.8/pwfile.conf
修改前 #acl_file
修改后 acl_file /usr/local/mosquitto-1.6.8/aclfile.conf
增加用户:
用户名 :xdmqtt_pub
用户名:xdmqtt_sub
mosquitto_passwd /usr/local/mosquitto-1.6.8/pwfile.conf xdmqtt_pub 回车输入两次密码完成
mosquitto_passwd /usr/local/mosquitto-1.6.8/pwfile.conf xdmqtt_sub 回车输入两次密码完成
修改权限:
less aclfile.conf
增加如下代码
user xdmqtt_pub
topic readwrite zzDevice/#
topic readwrite test/#
topic readwrite homecare-eoms/#
user xdmqtt_sub
topic readwrite zzDevice/#
topic readwrite test/#
topic readwrite homecare-eoms/#
8、测试
监听:
mosquitto_sub -h 127.0.0.1 -u xdmqtt_sub -P Njxdznkj20191218 -p 8893 -t homecare-eoms
发送:
mosquitto_pub -h 127.0.0.1 -u xdmqtt_sub -P Njxdznkj20191218 -p 8893 -t homecare-eoms -m teststest
可能出现如下情况:
mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决方法如下:
ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
ldconfig
监听:
发送: