之前我们讲过用apt安装mosquitto的方式,但是这种安装方式,无法使用websocket功能,所以今天我们演示一下编译安装mosquitto的方法,并且在安装成功后,启用websocket功能。
1、安装必备的组件
apt update
apt install git cmake openssl libssl-dev build-essential tar vim -y
2、安装libwebsockets
官网地址:https://libwebsockets.org/
我们这里直接用git的方式,先安装必备组件
git clone https://libwebsockets.org/repo/libwebsockets
cd libwebsockets
mkdir build
cd build
cmake .. (如果是想使用64位的库文件,则执行cmake .. -DLIB_SUFFIX=64)
make
make install
3、编译安装mosquitto
mosquitto源码下载:http://mosquitto.org/files/source/
建议下载2.0之前的版本,因为2.0之后的版本编译的时候会出错,暂时还不知道怎么解决。
我这里下载的是mosquitto-1.6.9.tar.gz这个
cd ~
wget http://mosquitto.org/files/source/mosquitto-1.6.9.tar.gz
tar -zxvf mosquitto-1.6.9.tar.gz
cd mosquitto-1.6.9
修改配置文件,启用WebSocket功能
vim config.mk
将WITH_WEBSOCKETS:=no改成WITH_WEBSOCKETS:=yes
make
make install
4、配置mosquitto
编辑mosquitto配置文件,添加websocket配置
cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
vim /etc/mosquitto/mosquitto.conf
在Default Listenter 添加一下内容
port 1883
listener 18083
protocol websockets
注意:这里的18083就是websocket的连接端口
5、启动mosquitto
mosquitto -c /etc/mosquitto/mosquitto.conf
-c参数指定配置文件的路径
6、错误处理
执行mosquitto -c /etc/mosquitto/mosquitto.conf后发现启动mosquitto报以下错误
错误1:mosquitto: error while loading shared libraries: libwebsockets.so.17: cannot open shared object file: No such file or directory
执行以下命令解决:
ln -s /usr/local/lib64/libwebsockets.so.17 /usr/lib/libwebsockets.so.17
ldconfig
错误2:1609981212: Error: Invalid user 'mosquitto'.
添加用户mosquitto或者修改mosquitto.conf配置解决
方法1:添加用户:
adduser mosquitto
然后设置密码即可
方法2:修改配置文件
vim /etc/mosquitto/mosquitto.conf
找到#user mosquitto
改成user root(这里的root改成你自己的系统账号)
7、重新启动mosquitto
mosquitto -c /etc/mosquitto/mosquitto.conf
发现启动正常了,按下Ctrl + C结束mosquitto,然后重新加上-d参数后启动mosquitto,-d参数表示后台运行
mosquitto -c /etc/mosquitto/mosquitto.conf -d
ok
mjj通道