MQTT Build安装
基于CentOS7.1 Date: 2017-07-28 11:15:07 星期五 Author: Kent
[TOC]
1.安装编译工具
yum install gcc-c++
yum install cmake
2.安装依赖库
- openssl-devel: TLS安全链接支持所需库
- c-areas-devel: 一个支持异步DNS查找的库
- libuuid-devel: 为每个连接的客户端生成唯一的uuid
- libwebsockets: 对websocket进行支持
需增加扩展的yum库,系统默认不支持此工具yum安装
2.1 安装aliyun的yum扩展库
#将扩展库下载到/etc/yum.repos.d目录
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
#重建yumdb缓存
yum clean dbcache
yum makecache
2.2 依赖库安装
yum install openssl-devel c-ares-devel libuuid-devel libwebsockets-devel
3. 编译安装Mosquitto
3.1 下载并解压
- 到官网下载最新版本
#package-size only 319kB
wget http://mosquitto.org/files/source/mosquitto-1.4.14.tar.gz
tar -zxvf mosquitto-1.4.14.tar.gz #解压
3.2 修改编译配置文件config.mk
- 将
WITH_WEBSOCKETS
配置修改为yes。以支持websocket - 将
prefix=/usr/local
安装路径修改为/etc/mosquitto
修改前默认安装路径如下
- /usr/local/sbin: mosuqitto指令安装
- /etc/mosquitto: 配置文件
- /usr/local/bin: moquitto_pub,mosquitto_sub等工具
3.3 执行安装
make && make install
3.4 配置环境变量
- 将如下配置加入/etc/profile。以支持在任意目录执行mosquitto命令
MQTT_HOME=/etc/mosquitto
PATH=.:$MQTT_HOME/bin:$MQTT_HOME/sbin:$PATH
export MQTT_HOME PATH
- 执行
source /etc/profile
以生效配置
4. 配置服务及防火墙
4.1 配置Mosquitto
- 创建/etc/mosquitto/mosquitto.conf, 可参考/etc/mosquitto/mosquitto.conf.example中的说明
- 创建日志文件目录
mkdir -p /var/logs/mosquitto/
#MQTT配置文件
pid_file /var/run/mosquitto.pid
user root
log_dest file /var/logs/mosquitto/mosquitto.log #需创建日志目录
log_type all
log_timestamp true
connection_messages true
#mqtt监听端口
listener 1883
protocol mqtt
#websocket端口
listener 9001
protocol websockets
4.2 配置防火墙
firewall-cmd --add-port=1883/tcp --permanent
firewall-cmd --add-port=9001/tcp --permanent
firewall-cmd --reload
5. 测试运行
- server端
# 启动MQTT Server
mosquitto -c /etc/mosquitto/mosquitto.conf -d
# 检查启动情况,-d表示后台运行,有时候出错了服务并没有起来,但不会有异常提示
ps -ef | grep mosquitto
# 监听msg topic,端口如果是1883 -p可以不写
mosquitto_sub -t msg -p 1883
- client端
#端口如果是1883,-p可以不写
mosquitto_pub -t msg -m "Hello World" -h 192.168.1.211 -p 1883
6. 异常处理
mosquitto_pub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
#mosquitto依赖库lib文件夹下的两个文件需要链接到/usr/lib64中
#如果不是64位系统连接到/usr/lib
ln -s /etc/mosquitto/lib/libmosquitto.so.1 /usr/lib64/libmosquitto.so.1
ln -s /etc/mosquitto/lib/libmosquittopp.so.1 /usr/lib64/libmosquittopp.so.1