CentOS7下安装Mosquitto(2.0.11版本)
本文记录centos环境下安装mosquitto的过程以及安装过程中所遇到的问题。
1. mosquitto下载
官网下载mosquitto-2.0.11.tar.gz (GPG signature)源码包
2. 安装
- 安装依赖包
yum install gcc gcc-c++
yum install openssl-devel
yum install c-ares-devel
yum install libuuid-devel
yum install build-essential python quilt devscripts python-setuptools python3
yum install libssl-dev libc-ares-dev uuid-dev daemon openssl-devel
- 解压安装
tar -xvf mosquitto-2.0.11.tar.gz
cd mosquitto-2.0.11
make && make install
useradd mosquitto
cd /etc/mosquitto
/usr/local/bin/mosquitto_passwd -H sha512-pbkdf2 -c pwfile mosquitto
输入密码即可,会产生pwfile文件。这个文件接下来的mosquitto.conf将会用到
mosquitto.conf
配置
cd /etc/mosquitto
cp mosquitto.conf.example mosquitto.conf
vim mosquitto.conf
# listener port-number [ip address/host name/unix socket path]
# 修改listener要监听的端口、ip等
listener 1883 公网ip/主机名/本地ip
# See the TLS client require_certificate and use_identity_as_username options
# for alternative authentication options. If an auth_plugin is used as well as
# password_file, the auth_plugin check will be made first.
#这里貌似要配置绝对路径,配置相对路径我这里会报错
password_file /etc/mosquitto/pwfile
3. 相关命令
由于安装时,相关命令已自动添加到环境变量中,可以直接使用相关命令。
目录 | 说明 |
---|---|
/usr/local/sbin | broker的启动命令目录 |
/usr/local/bin | mosquitto相关工具命令目录,发布者和订阅者都在这里 |
/etc/mosquitoo | mosquitto的相关配置文件目录 |
- 启动broker
调试命令启动
mosquitto -c /etc/mosquitto/mosquitto.conf -v
后台启动
mosquitto -c /etc/mosquitto/mosquitto.conf -d -v
- 启动订阅者
普通默认订阅
mosquitto_sub -t 'test/topic' -v
指定ip、端口、用户名、密码订阅
mosquitto_sub -h 192.168.0.121 -p 1883 -u mosquitto -P 123456 -t 'test' -v
- 启动发布者
mosquitto_pub -v 'test/topic' -m 'hello word'
4. 可视化测试工具
官网地址:
https://www.eclipse.org/paho/index.php?page=components/tool/index.php
5. 遇到的问题
- 安装时,执行编译命令缺少
cJSON
库依赖,下载安装依赖库即可
下载cJSON库
github地址:https://github.com/github9157/cJSON#cmake
git clone https://github.com/github9157/cJSON.git
cd cJSON
mkdir build
cd build
cmake ..
make
make install
- 启动订阅者找不到libmosquitto.so库,但是
/usr/local/lib
目录下已有符号链接,通过执行ldconfig
命令也无效,最终通过配置环境变量解决/etc/profile
(加入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
)