linux 安装 mqtt 服务端

在centos上搭建mqtt服务,主要是用到mosquitto消息代理服务软件

一、安装软件

1.1 按照如下命令安装:

yum install gcc-c++
yum install cmake
yum install openssl-devel

1.2 新建data文件夹存放软件,下载mosquitto版本,并解压,命令如下:

mkdir data
cd data
wget http://mosquitto.org/files/source/mosquitto-1.4.10.tar.gz
tar -xzvf mosquitto-1.4.10.tar.gz

1.3 安装c-areas:

wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
tar xvf c-ares-1.10.0.tar.gz
cd c-ares-1.10.0
./configure
make
make install

1.4 安装lib-uuid:


yum install libuuid-devel

1.5 安装libwebsockets:

#进入创建的data目录下cd data/ 下载:
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 .. -DLIB_SUFFIX=64
make install
#上面的有可能没安装成功,尤其是第三个,不过并无大碍,只不过没有相应的功能。

1.6 修改一下mosquitto的配置:


# 进入到data目录下
cd mosquitto-1.4.10
vim config.mk
#将里面的WITH_SRV:=yes和WITH_UUID:=yes都用#号注释掉

1.7 接下来编译安装mosquitto:


make
make install

二、启动测试

2.1 创建用户:

sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto

2.2 程序配置:


mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf

2.3 启动程序

mosquitto -c /etc/mosquitto/mosquitto.conf
#或加上-d, 表示后台启动
mosquitto -c /etc/mosquitto/mosquitto.conf -d

2.4 测试

默认端口为1883

最后我们再打开一个服务器窗口,在一个(订阅)窗口输入:

mosquitto_sub -t topic01

注意:如果在mosquitto_sub -t hello 提示找不到libmosquitto.so.1的话,在下输入以下指令修改一下libmosquitto.so的位置:

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

另一个(发布)窗口输入:

mosquitto_pub -t topic01-h localhost -m "msg"

三、Mosquitto用户名密码配置

Mosquitto默认的是允许匿名用户登录模式,正式上线的系统需要进行用户认证。

Mosquitto服务器的配置文件为/etc/mosquitto/mosquitto.conf,关于用户认证的方式和读取的配置都在这个文件中进行配置。

3.1 mosquitto.conf配置解释

#允许匿名
allow_anonymous
#密码文件
password_file
#访问控制列表
acl_file

3.2 复制文件

cp /etc/mosquitto/pwfile.example /etc/mosquitto/pwfile
cp /etc/mosquitto/aclfile.example /etc/mosquitto/acl

3.3 添加用户信息

mosquitto_passwd -c /etc/mosquitto/pwfile zhen
#添加完输入两次密码,-c只有第一次的时候使用,后面再加-c,会把之前添加的账户也清空

3.3 修改mosquitto文件

vim /etc/mosquitto/mosquitto.conf

#添加对应配置,vim 预览状态下通过/password_file,可以找到对应的关键字
allow_anonymous false
password_file /etc/mosquitto/pwfile
acl_file /etc/mosquitto/acl

3.4 修改acl文件,配置topic和用户

vim  /etc/mosquitto/acl

重启mosquitto

mosquitto -c /etc/mosquitto/mosquitto.conf

再次使用会报:没有认证错误

mosquitto_sub -t topic

3.5 测试添加账户信息测试

Subscrib端

mosquitto_sub -h localhost -t topic -u zhen -P 123456789

publish端

mosquitto_pub -h localhost -t topic -u zhen -P 123456789 -m test2

publish 启动之后,sub端会收到test2消息,并且服务器端,会有对应的连接记录

使用命令行的形式,pub端发送完成之后,pubd端就和服务器断开连接了,但是使用代码就不会,后面会讲到

参考链接

https://www.cnblogs.com/sxkgeek/p/9140180.html
https://blog.csdn.net/u012377333/article/details/69397124