首页 > 技术文章 > 玩客云搭建MQTT服务器

cuianbing 2021-07-26 08:19 原文

玩客云搭建MQTT服务器

下载安装

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list
sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list
apt-get update
apt-cache search mosquitto
apt-get install -y mosquitto mosquitto-clients

常用命令

sudo service mosquitto status                               #查看运行状态
sudo service mosquitto start                                #启动服务
sudo service mosquitto stop                                 #停止服务

修改配置文件

MQTT服务器安装了之后,默认监听localhost的1883端口,外网不能够进行访问。如果有需要可以修改配置文件。用户的局部配置文件放在: /etc/mosquitto/conf.d/目录下,并且这个目录下的所有以.conf后缀的文件都将被mosquitto作为配置文件,在启动时加载。

首先,我们将创建一个Mosquitto将用于验证连接的密码文件。使用mosquitto_passwd来创建这个文件,请确保使用你喜欢的用户名替换它:

sudo mosquitto_passwd -c /etc/mosquitto/passwd your-username    #系统将提示您输入两次密码。

/etc/mosquitto/conf.d目录下,新建myconfig.conf配置文件:

allow_anonymous false   #不允许匿名访问
password_file /etc/mosquitto/passwd    #密码文件位置
listener 1883 0.0.0.0   #监听的端口和IP地址

重启Mosquitto以获取配置更改:

sudo systemctl restart mosquitto

检查以确保服务再次运行:

sudo systemctl status mosquitto
● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
   Loaded: loaded (/etc/init.d/mosquitto; generated)
   Active: active (running) since Mon 2018-07-16 15:03:42 UTC; 2min 39s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 6683 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)
  Process: 6699 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 1152)
   CGroup: /system.slice/mosquitto.service
           └─6705 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

状态应该是active (running)。如果不是,请检查配置文件并重新启动。Mosquitto的日志文件中可能会提供更多信息:

sudo tail /var/log/mosquitto/mosquitto.log

测试MQTT

测试Mosquitto

我们在步骤1中安装了一些命令行MQTT客户端。我们可以在localhost监听器上订阅主题测试,如下所示:

mosquitto_sub -h localhost -t test -u "your-user" -P "your-password"

我们可以用mosquitto_pub发布:

mosquitto_pub -h localhost -t test -m "hello world" -u "your-user" -P "your-password"

推荐阅读