CentOS7.0 mosquitto的安装和配置

加入yum源

在/etc/yum.repos.d/目录中新建一个mosquitto.repo文件,里面写入:

[home_oojah_mqtt]
  name=mqtt (CentOS_CentOS-7)
  type=rpm-md
  baseurl=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/
  gpgcheck=1
  gpgkey=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7//repodata/repomd.xml.key
  enabled=1

安装客户端和服务端

yum search all mosquitto

mosquitto-clients.x86_64 : Mosquitto command line publish/subscribe clients
mosquitto-debuginfo.x86_64 : Debug information for package mosquitto
libmosquitto-devel.x86_64 : MQTT C client library development files
libmosquitto1.x86_64 : MQTT C client library
libmosquittopp-devel.x86_64 : MQTT C++ client library development files
libmosquittopp1.x86_64 : MQTT C++ client library
mosquitto.x86_64 : MQTT version 3.1/3.1.1 compatible message broker



yum install mosquitto-clients.x86_64
yum install mosquitto.x86_64

重点安装客户端和服务端就可以,其余的可以根据自己需要选择安装!

配置mosquitto

cd /etc/mosquitto/

重要的配置文件为 mosquitto.conf

# Place your local configuration in /etc/mosquitto/conf.d/ 
 pid_file /var/run/mosquitto.pid

 persistence true
 persistence_location /var/lib/mosquitto/

  #log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d
  • 自定义的配置文件是放在/etc/mosquitto/conf.d/文件夹中,文件以.conf为扩展名。详细的配置参数参考mosquitto.conf.example
# =================================================================
  # General configuration
  # =================================================================
  # 客户端心跳的间隔时间
  #retry_interval 20
  # 系统状态的刷新时间
  #sys_interval 10
  # 系统资源的回收时间,0表示尽快处理
  #store_clean_interval 10
  # 服务进程的PID
 #pid_file /var/run/mosquitto.pid
 # 服务进程的系统用户
 #user mosquitto
 # 客户端心跳消息的最大并发数
 #max_inflight_messages 10
 # 客户端心跳消息缓存队列
 #max_queued_messages 100
 # 用于设置客户端长连接的过期时间,默认永不过期
 #persistent_client_expiration
# =================================================================
# Default listener
# =================================================================
# 服务绑定的IP地址
#bind_address
# 服务绑定的端口号
#port 1883
# 允许的最大连接数,-1表示没有限制
#max_connections -1
# cafile:CA证书文件
# capath:CA证书目录
# certfile:PEM证书文件
# keyfile:PEM密钥文件
#cafile
#capath
#certfile
#keyfile
# 必须提供证书以保证数据安全性
#require_certificate false
# 若require_certificate值为true,use_identity_as_username也必须为true
#use_identity_as_username false
# 启用PSK(Pre-shared-key)支持
#psk_hint
# SSL/TSL加密算法,可以使用“openssl ciphers”命令获取
# as the output of that command.
#ciphers
# =================================================================
# Persistence
# =================================================================
# 消息自动保存的间隔时间
#autosave_interval 1800
# 消息自动保存功能的开关
#autosave_on_changes false
# 持久化功能的开关
persistence true
# 持久化DB文件
#persistence_file mosquitto.db
# 持久化DB文件目录
#persistence_location /var/lib/mosquitto/
# =================================================================
# Logging
# =================================================================
# 4种日志模式:stdout、stderr、syslog、topic
# none 则表示不记日志,此配置可以提升些许性能
log_dest none
# 选择日志的级别(可设置多项)
#log_type error
#log_type warning
#log_type notice
#log_type information
# 是否记录客户端连接信息
#connection_messages true
# 是否记录日志时间
#log_timestamp true
# =================================================================
# Security
# =================================================================
# 客户端ID的前缀限制,可用于保证安全性
#clientid_prefixes
# 允许匿名用户
#allow_anonymous true
# 用户/密码文件,默认格式:username:password
#password_file
# PSK格式密码文件,默认格式:identity:key
#psk_file
# pattern write sensor/%u/data
# ACL权限配置,常用语法如下:
# 用户限制:user <username>
# 话题限制:topic [read|write] <topic>
# 正则限制:pattern write sensor/%u/data
#acl_file
# =================================================================
# Bridges
# =================================================================
# 允许服务之间使用“桥接”模式(可用于分布式部署)
#connection <name>
#address <host>[:<port>]
#topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]
# 设置桥接的客户端ID
#clientid
  # 桥接断开时,是否清除远程服务器中的消息
  #cleansession false
  # 是否发布桥接的状态信息
  #notifications true
  # 设置桥接模式下,消息将会发布到的话题地址
  # $SYS/broker/connection/<clientid>/state
  #notification_topic
  # 设置桥接的keepalive数值
  #keepalive_interval 60
  # 桥接模式,目前有三种:automatic、lazy、once
  #start_type automatic
  # 桥接模式automatic的超时时间
  #restart_timeout 30
  # 桥接模式lazy的超时时间
  #idle_timeout 60
  # 桥接客户端的用户名
  #username
  # 桥接客户端的密码
  #password
  # bridge_cafile:桥接客户端的CA证书文件
  # bridge_capath:桥接客户端的CA证书目录
  # bridge_certfile:桥接客户端的PEM证书文件
  # bridge_keyfile:桥接客户端的PEM密钥文件
  #bridge_cafile
  #bridge_capath
  #bridge_certfile
  #bridge_keyfile
  # 自己的配置可以放到以下目录中
  include_dir /etc/mosquitto/conf.d

启动(两种方式二选一)

mosquitto -c /etc/mosquitto/mosquitto.conf -d
sudo /etc/init.d/mosquitto start

测试

一、开启另一个终端窗口,运行订阅程序mosquitto_sub:

注意:

消息推送的发布和订阅要有主题,选项[-t] 主题,即:mosquitto -t 主题

如需指定用户名称则加选项[-i] 用户名,即:mosquitto_sub -t 主题 -i 订阅端

mosquitto_sub -t mqtt

二、开启另一个终端窗口,运行发布程序mosquitto_pub:

指定消息推送的主题,发布端用户名和消息:

mosquitto_pub -t 主题 -i 发布端 -h 主机 -m 你好

*注意:如果消息中间有空格则消息要用引号括起来。

mosquitto_pub -h localhost -t mqtt -m "hello world."

这时候前面那个订阅窗口就可以收到”hello world”的消息了。

总体来说,安装配置中没有遇到什么问题,可以平滑的进行安装和测试工作

相关文章

文章浏览阅读903次。4.清除缓存目录(/var/cache/yum)下的软件...
文章浏览阅读1.5k次。Python 是一种高级解释性编程语言,已被...
文章浏览阅读2.6k次。打开终端或控制台,以root或具有sudo权...
文章浏览阅读744次,点赞24次,收藏26次。目标:通过AppSrv为...
文章浏览阅读1.1w次,点赞8次,收藏26次。chmod命令来自于英...
文章浏览阅读1.2k次。yum源的URL地址,本例中是文件系统的路...