最近我司项目中引入了mosquitto这个轻量级的实现了消息推送协议 MQTT v3.1 的开源消息代理软件,由于此前一直使用RabbitMQ作为消息中间件,因此需要从零开始搭建mosquitto的环境。本文主要针对本次安装的步骤做以记录。
一、mosquitto安装步骤
- 我们使用的是mosquitto-1.4.8,先将其从官网下载后上传至服务器相关目录,这里假设我们上传到/opt/mqtt/mosquitto目录。
- 进入/opt/mqtt/mosquitto,执行命令
tar-zxf mosquitto-1.4.8.tar.gz
,解压安装包并进入解压目录。 - 执行命令
vi config.mk
,将其中的WITH_TLS和WITH_TLS_PSK修改为no,以关闭OpenSSL。 - 依次执行以下命令安装相关依赖。
yum install -y gcc-c++.x86_64
yum install -y c-ares-devel e2fsprogs-devel uuuid-devel libuuid-devel
- 执行命令
make prefix=/opt/mqtt/mosquitto/mosquitto-1.4.8 && make install
编译安装mosquitto。 - 编译安装完成后,会在/etc/mosquitto下生成相关的配置文件的样例,我们将该目录下的mosquitto.conf.example重命名为mosquitto.conf,并使用vi编辑器打开该文件,对如下内容进行修改:
# When run as root, drop privileges to this user and its primary
# group.
# Leave blank to stay as root, but this is not recommended.
# If run as a non-root user, this setting has no effect.
# Note that on Windows this has no effect and so mosquitto should
# be started by the user you wish it to run as.
# user mosquitto 将mosquitto用户注释
user root #新增root用户为mosquitto服务的用户
- 执行命令
systemctl stop firewalld
,关闭防火墙。 - 执行命令
mosquitto -d -c /etc/mosquitto/mosquitto.conf
,启动服务。 - 简单验证:
这里使用MQTT.fx工具来进行连接验证。-
新建连接
-
发布消息
-
订阅消息
-
二、 设置开机自启
在/etc/rc.d/init.d目录下创建自启动脚本mosquitto_auto_start.sh,内容如下:
#!/bin/bash
#chkconfig: 2345 80 90
#description:auto_run
/usr/local/sbin/mosquitto -d -c /etc/mosquitto/mosquitto.conf
而后依次执行以下命令:
chmod +x /etc/rc.d/init.d/mosquitto_auto_start.sh
chkconfig --add /etc/rc.d/init.d/mosquitto_auto_start.sh
chkconfig /etc/rc.d/init.d/mosquitto_auto_start.sh on
重启后,可根据进程以及工具调用查询mosquitto服务是否正常启动。