MQTT学习1——CentOS下安装Mosquitto
2015-12-09 18:33
477 查看
简介
MQTT 是IBM开发的针对物联网的连接协议。Mosquitto实现了MQTT v3.1 协议的开源消息代理软件,提供轻量级的、支持发布/订阅的消息摄像头模式,对设备对设备之间的短消息通信简单易用。
Mosquitto网址:
http://mosquitto.org
安装过程
安装支持的组件
yum install gcc gcc-c++ -y yum install openssl-devel -y yum install c-ares-devel -y yum install libuuid-devel -y
wget http://mosquitto.org/files/source/mosquitto-1.4.5.tar.gz tar zxfv mosquitto-1.4.5.tar.gz cd mosquitto-1.4.5 make sudo make install
程序安装位置
路径 | 程序文件 |
---|---|
/usr/local/sbin | mosquiotto server |
/etc/mosquitto | configuration |
/usr/local/bin | utility command |
安装过程中问题处理
./mosquitto_internal.h:40:20: 致命错误:ares.h:没有那个文件或目录在compiling.txt里可以看到mosquitto需要的库。
vi config.mk
WITH_SRV:=no WITH_UUID:=no
make
sudo make install
也有提示要
sudo apt-get install libc-areas-dev sudo apt-get install uuid-dev
但在centos我没有成功安装apt-get,此方法没能成功尝试。
config.mk 文件说明:
# 是否支持tcpd/libwrap功能. #WITH_WRAP:=yes # 是否开启SSL/TLS支持 #WITH_TLS:=yes # 是否开启TLS/PSK支持 #WITH_TLS_PSK:=yes # Comment out to disable client client threading support. #WITH_THREADING:=yes # 是否使用严格的协议版本(老版本兼容会有点问题) #WITH_STRICT_PROTOCOL:=yes # 是否开启桥接模式 #WITH_BRIDGE:=yes # 是否开启持久化功能 #WITH_PERSISTENCE:=yes # 是否监控运行状态 #WITH_MEMORY_TRACKING:=yes
程序文件说明:
mosquitto – 代理器主程序 mosquitto.conf – 配置文件 mosquitto_passwd – 用户密码管理工具 mosquitto_tls – very rough cheat sheet for helping with SSL/TLS mosquitto_pub – 用于发布消息的命令行客户端 mosquitto_sub – 用于订阅消息的命令行客户端 mqtt – MQTT的后台进程 libmosquitto – 客户端编译的库文件
启动
groupadd mosquitto useradd -g mosquitto mosquitto cd /usr/local/sbin ./mosquitto -v
配置文件位置:
/etc/mosquitto/
指定配置文件位置启动:
mosquitto -c /etc/mosquitto/mosquitto.conf -d
mosquitto.conf 说明:
# ================================================================= # 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
设置客户端
vim /etc/ld.so.conf.d/liblocal.conf /usr/local/lib64 /usr/local/lib //刷新 ldconfig
测试
新建两个shell端口A/B订阅主题:
mosquitto_sub -t location推送消息:
mosquitto_pub -t location -h localhost -m “new location”可以在A窗口看到由B推送的消息,此外服务端窗口也可以看到客户端连接和端口的日志
Windows下可以使用通信猫调试软件。
参考:
MQ 遥测传输 (MQTT) V3.1 协议规范http://blog.csdn.net/shagoo/article/details/7910598
http://blog.csdn.net/xukai871105/article/details/39252653
http://topmanopensource.iteye.com/blog/1701539
相关文章推荐
- Linux下mysql数据库的自动备份与还原
- errno.h linux errno
- 自己用过的linux命令
- linux基础(八)----linux命令系统学习----其它命令
- linux基础(八)----linux命令系统学习----其它命令
- linux内核源码树构建
- Centos 安装后不能上网 解决备忘
- linux I2c设备注册
- Linux系统复制U盘文件
- CentOS6.5编译安装CodeBlocks13.12
- Linux C 编程技巧--利用有限状态机模型编程
- linux应用编程笔记(15)消息队列编程
- linux_安装_安装编译phantomjs 2.0的方法_转
- 20151209linux系统日常管理第四部分(系统服务管理;系统日志,xargs与exec)
- Linux特殊权限
- centos 5.9安装mysql5.7.9 +gcc编译升级
- linux 和 window 的EOF
- linux部署sh命令编写
- Centos | Linux 下安装启动 mysql 出现 8618 [ERROR] Aborting,查看日志:Plugin 'FEDERATED' is disabled.
- appcompat_v7 dont R linux ubuntu