centos7搭建mosquitto
1 安装mosquitto
安装依赖
yum install gcc-c++
yum install cmake
yum install openssl-devel
新建个software文件夹,下载mosquitto,下个不高不低的版本,并解压:
mkdir software
cd software
wget http://mosquitto.org/files/source/mosquitto-1.4.10.tar.gz
tar -xzvf mosquitto-1.4.10.tar.gz
但这里还不能编译安装mosquitto
下面的三款扩展性软件,不安装也不影响mosquitto的使用:
安装c-areas(支持异步DNS查找的库):
wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
tar xvf c-ares-1.10.0.tar.gz
cd c-ares-1.10.0
./configure
make
sudo make install
安装lib-uuid(支持为每个连接客户端生成唯一uuid):
yum install libuuid-devel
安装libwebsockets(支持需使用websocket的应用):
wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz
tar zxvf v1.3-chrome37-firefox30.tar.gz
cd libwebsockets-1.3-chrome37-firefox30
mkdir build
cd build
cmake .. -DLIB_SUFFIX=64
make install
上面的有可能没安装成功,尤其是第三个,不过并无大碍,只不过没有相应的功能 我们修改一下mosquitto的配置:
cd mosquitto-1.4.10
vim config.mk
将里面的WITH_SRV:=yes和WITH_UUID:=yes都用#号注释掉 接下来编译安装mosquitto:
make
sudo make install
注意:如果在后续使用过程中找不到libmosquitto.so.1的话,在software下输入以下指令修改一下libmosquitto.so的位置:
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
sudo ldconfig
2 测试
创建用户:
sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto
这里要是出现什么存在不存在的问题,一定是你copy错了
程序配置:
mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
默认端口为1883 最后我们再打开一个服务器窗口,在一个(订阅)窗口输入:
mosquitto_sub -t hello
另一个(发布)窗口输入:
mosquitto_pub -t hello -h localhost -m "hello world!"
杀掉进程
ps -ef | grep mosquitto
sudo kill 12345 # 杀掉你找到的进程号
3 配置客户端的用户名与密码
修改配置文件
Mosquitto服务器的配置文件为/etc/mosquitto/mosquitto.conf,关于用户认证的方式和读取的配置都在这个文件中进行配置。
-
allow_anonymous允许匿名
-
password_file密码文件
-
acl_file访问控制列表
# 不允许匿名
allow_anonymous false
# 配置用户密码文件
password_file /etc/mosquitto/pwfile
# 配置topic和用户(这项不可以指定文件夹,只能设置如下文件夹)
acl_file /etc/mosquitto/aclfile.example
添加用户名和密码
#mosquitto_passwd -c /etc/mosquitto/pwfile root
#输入这段指令之后系统会提示输入两次密码
然后vim /etc/mosquitto/pwfile 检查用户是否创建成功
#添加Topic和用户的关系
#进入aclfile配置文件中
vim /etc/mosquitto/aclfile.example
# 添加如下信息
user root
topic read topic/#
user root
topic write topic/#