一、安装依赖

yum install gcc gcc-c++ libstdc++-devel
yum install openssl-devel -y
yum install c-ares-devel -y
yum install uuid-devel -y
yum install libuuid-devel -y

// 通过rpm -qa XXX(依赖名) 检查是否已安装过

二、下载、解压、编译、安装

// 下载
wget https://mosquitto.org/files/source/mosquitto-2.0.8.tar.gz

// 解压
tar -zxvf mosquitto-2.0.8.tar.gz

// 编译、安装
cd mosquitto-2.0.8
make
sudo make install

// 拷贝配置
cd /etc/mosquitto
cp mosquitto.conf.example mosquitto.conf

编译时,若提示fatal error: cjson/cJSON.h: No such file or directory,需要安装cJSON,然后重新安装mosquitto。

yum install cmake
yum -y install git    -- 若之前未安装git需执行此步骤,通过git --version验证是否安装
cd /usr/local/
git clone https://github.com/DaveGamble/cJSON.git
cd cJSON/
mkdir build
cd build/
cmake ..
make
make install
echo "/usr/local/lib64" >> /etc/ld.so.conf
/sbin/ldconfig

三、创建软连接

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
ldconfig

若不添加软连接,发布、订阅消息时会提示"error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory"。


四、启动服务

// 创建用户、用户组,否则启动时,提示"Unable to drop privileges to 'mosquitto' ..."
groupadd mosquitto
useradd -g mosquitto mosquitto
chown -R mosquitto:mosquitto /etc/mosquitto/

mosquitto -c /etc/mosquitto/mosquitto.conf -d

五、订阅、发布测试

打开两个服务器连接,分别执行mosquitto_sub、mosquitto_pub命令。
在这里插入图片描述
在这里插入图片描述


六、权限控制

主要涉及/etc/mosquitto/mosquitto.conf文件的三个属性:

  1. allow_anonymous:允许匿名
  2. password_file:密码文件
  3. acl_file:访问控制列表
  • 配置监听端口为1883 (注意服务器的防火墙端口开放)
    在这里插入图片描述

  • 配置密码文件,指向/etc/mosquitto/pwfile
    在这里插入图片描述

// 创建两个用户testa、testb
mosquitto_passwd -c /etc/mosquitto/pwfile testa
mosquitto_passwd -c /etc/mosquitto/pwfile testb
  • 配置用户访问权限(用户testb只能订阅/req/#主题、发布/res/#主题)
    在这里插入图片描述
cp aclfile.example aclfile
vim aclfile

在这里插入图片描述

  • 验证
mosquitto_pub -h [IP] -t [topic] -u [user] -P [password] -p [port] -m [message]
mosquitto_sub -h [IP] -t [topic] -u [user] -P [password]
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐