参考链接:https://www.cnblogs.com/yaojiayuan/p/11067900.html
原文是单支持websockets,我略有修改和备注一些注意事项
本文档基于centos7部署
部署前准备:
yum -y install wget
yum install gcc-c++
yum install cmake
yum install openssl-devel
mkdir libwebsockets
cd libwebsockets
wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz
tar -zxvf v1.3-chrome37-firefox30.tar.gz
cd libwebsockets-1.3-chrome37-firefox30
mkdir build
cd build
cmake ..
make install
创建软连接
ln -s /usr/local/lib/libwebsockets.so.4.0.0 /usr/lib/libwebsockets.so.4.0.0
ldconfig
mkdir mqtt
cd mqtt
wget http://mosquitto.org/files/source/mosquitto-1.6.3.tar.gz
tar -zxvf mosquitto-1.6.3.tar.gz
cd mosquitto-1.6.3
修改config.mk文件
vi config.mk
WITH_WEBSOCKETS:=yes
make
make install
创建软连接
ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
ldconfig
进入/etc/mosquitto目录修改配置文件
cd /etc/mosquitto
复制mosquitto.conf.example配置文件
cp mosquitto.conf.example mosquitto.conf
cp pwfile.example pwfile.conf
cp aclfile.example aclfile.conf
vi mosquitto.conf
修改前 #allow_anonymous true
修改后 allow_anonymous false (这个表示不允许匿名登录,可不设置,如设置,必须下面要建用户和对应密码)
修改前 #password_file
修改后 password_file /etc/mosquitto/pwfile.conf(这个是用户和对应密码配置文件,保存当前的用户和密码的)
修改前 #acl_file
修改后 acl_file /etc/mosquitto/aclfile.conf(这个建议不修改,这个优先决定用户对每个主题的读写权限,如果设置不正确会导致订阅/发布不到消息,但是没有任何失败提示,是个大坑!建议还是#acl_file 这样每个用户都有每个主题的订阅发布权限)
修改前 #protocol mqtt (注意:这个是# Extra listeners里面的 ,不是# Default listener里面的,# Default listener里面的 #protocol mqtt不需要修改!)
修改后 protocol websockets
修改前 #listener port-number
修改后listener 9001(这个端口可以自己设,是使用websockets需要监听的端口)
添加mosquitto 用户名密码
mosquitto_passwd /etc/mosquitto/pwfile.conf mqtttest 回车输入两次密码完成(mqtttest 用户名,可以自己定义,然后后面输入的密码是该账户对应的密码)
如果上面mosquitto.conf文件有开启#acl_file,需要指定你用户的操作权限:
修改用户权限
vi aclfile.conf
添加用户配置
user mqtttest (user mqtttest 指设置mqttest用户的权限)
topic readwrite mqtttopic (此处mqtttest可以发布\订阅mqtttopic这个主题!!,如果没有补充其他主题,则不能订阅/发布topic123等等其他的主题!!)
//----------------如果有开启防火墙才需要设置,没有开启防火墙不需要设置--------
打开外部访问端口
--permanent永久有效否则重启失效
firewall-cmd --zone=public --add-port=1883/tcp --permanent
添加端口后重新载入
firewall-cmd --reload
//--------------------------------------------------------------------------------------------------------
创建用户测试
groupadd mosquitto
useradd -g mosquitto mosquitto
启动命令
mosquitto -c /etc/mosquitto/mosquitto.conf
如果想后台运行则: mosquitto -c /etc/mosquitto/mosquitto.conf &
下面提示开启成功!