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