Linux搭建MQTT服务器(Mosquitto)


一、安装依赖

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]
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值