Centos7搭建MQTT
在
linux
上搭建
mqtt
服务器并不难,主要就是用到了
mosquitto
这款消息代理服务软件。其采用发布
/
订阅模式传输机制,轻量、简
单、开放并易于实现,被广泛应用于物联网之中。
Linux
版本:
centos7.0_x64
Mosquittob
版本:
1.4.5
1
、安装软件
1
)输入以下指令,挨个安装:
#yum install gcc-c++
#yum install cmake
#yum install openssl-devel
2
)新建个
software
文件夹,下载
mosquitto
,下个不高不低的版
本,并解压:
#mkdir software
#cd software
#wget http://mosquitto.org/files/source/mosquitto-1.4.5.tar.gz
#tar -xzvf mosquitto-1.4.10.tar.gz
注意:这里还不能编译安装
mosquitto
3
)下面的三款扩展性软件,不安装也不影响
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
注意:上面的有可能没安装成功,尤其是第三个,不过并无大碍,
只不过没有相应的功能。
4
)修改一下
mosquitto
的配置:
#cd mosquitto-1.4.10
#vim config.mk
将里面的
WITH_SRV:=yes
和
WITH_UUID:=yes
都用
#
号注释掉
5)
接下来编译安装
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
、启动测试
1
)创建用户:
#sudo groupadd mosquitto
#sudo useradd -g mosquitto mosquitto
注意:这里要是出现什么存在不存在的问题,一定是你
copy
错了。
2
)程序配置:
#mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
3)启动程序:
#mosquitto -c /etc/mosquitto/mosquitto.conf –d
默认端口为 1883
4)最后我们再打开一个服务器窗口,在一个(订阅)窗口输入:
$mosquitto_sub -t hello
5) 另一个(发布)窗口输入:
$
mosquitto_pub -t hello -h localhost -m 'hello world'
最终效果:
这样,我们就成功订阅了主题为
hello
的消息了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?