Mosquitto est un serveur de courtage de messages MQTT open source. MQTT est un protocole de messagerie léger basé sur la publication/l'abonnement. L'installation et l'utilisation du moustique sont relativement simples, et il est pratique d'effectuer quelques tests.
introduction au moustique
Caractéristiques du Mosquito :
1. Léger : Mosquitto est un serveur proxy MQTT léger, son objectif de conception est de fournir une livraison de messages efficace, rapide et fiable, adaptée aux applications de toutes tailles.
2. Facile à déployer : Mosquitto est très facile à installer et à déployer, et peut fonctionner sur plusieurs plates-formes, notamment Linux, Windows, macOS, etc.
3. Sécurité : Mosquitto prend en charge la communication cryptée basée sur TLS/SSL, qui peut protéger la sécurité et la confidentialité des messages. Dans le même temps, il prend également en charge l'authentification basée sur le nom d'utilisateur et le mot de passe, et la liste de contrôle d'accès (ACL) pour restreindre l'accès.
4. Évolutivité : Mosquitto prend en charge plusieurs connexions client et plusieurs abonnements thématiques, ce qui peut répondre aux besoins des applications à grande échelle.
Installation sous Ubuntu
Méthode 1 : installation du code source
télécharger moustique
Site officiel : https://mosquitto.org/
Adresse source : https://mosquitto.org/files/source/mosquitto-2.0.9.tar.gz
L'avantage est que vous pouvez spécifier arbitrairement la version requise. Mais c'est un peu gênant, vous devez le compiler et l'utiliser vous-même. Si vous devez ajouter un service, vous devez également le configurer vous-même.
cd /home/test
wget --no-check-certificate https://mosquitto.org/files/source/https://mosquitto.org/files/source/mosquitto-2.0.9.tar.gz
// 编译、安装
cd mosquitto-2.0.9
make
sudo make install
Méthode 2 : Installer directement
L'avantage est qu'il est simple et pratique, mais la version ne peut pas être choisie librement par vous, mais la version ne doit pas être trop ancienne.La version par défaut sous Ubuntu 18 doit être la version 2.0 ou supérieure.
sudo apt-get install mosquitto
Par défaut, seul le service mosquitto est installé ci-dessus, sans les outils clients de test mosquitto_sub et mosquitto_pub. Si besoin, vous pouvez installer :
sudo apt-get install mosquitto-clients
la gestion des services
service --status-all
Il affichera la liste complète des services sur Ubuntu. Si le système est des versions Ubuntu 18.04, Ubuntu 20.04 et Ubuntu 22.04 ou supérieures, il est recommandé d'utiliser l'utilitaire Systemd systemctl pour démarrer, arrêter ou redémarrer les services. Les versions antérieures peuvent utiliser la commande service pour démarrer/arrêter/redémarrer le service.
service
est une commande de gestion de service plus ancienne utilisée sur les distributions Linux compatibles avec le système d'initialisation System V. Il peut démarrer, arrêter, redémarrer ou interroger l'état des services système. Lors de l'utilisation sudo service
de la commande, vous devez spécifier le nom du service, par exemple sudo service apache2 stop
arrêtera le serveur Apache. sudo systemctl
est une nouvelle commande de gestion des services pour les distributions Linux compatibles avec le système Systemd, telles que les versions récentes d'Ubuntu, Fedora et CentOS. Il offre plus de fonctionnalités et de flexibilité.
Alternativement, les services peuvent être démarrés, arrêtés ou redémarrés à l'aide de scripts d'initialisation dans le répertoire /etc/init.d. Ce répertoire contient en fait divers scripts pour différents services. Si vous utilisez :
/etc/init.d/mosquitto start
Depuis qu'Ubuntu est passé à Systemd, les scripts d'initialisation sont obsolètes.
systemctl
Démarrez le service anti-moustiques :
sudo systemctl stop mosquitto
Arrêtez le service anti-moustiques :
sudo systemctl start mosquitto
Pour redémarrer le service Mosquitto :
sudo systemctl restart mosquitto
Vérifiez l'état du service anti-moustiques :
sudo systemctl status mosquitto
Guide d'évitement des fosses
Après une installation et un démarrage réussis, j'ai constaté que le réseau externe n'est pas accessible avec succès et que le pare-feu a également libéré le port 1883, mais je ne peux toujours pas accéder au port 1883. Pourquoi ne puis-je pas me connecter au serveur moustique sous Linux ?
La raison en est que le service mosquitto sur Ubuntu est en mode local uniquement par défaut.Lorsque vous utilisez sudo service mosquitto start puis sudo service mosquitto status, vous ne pouvez pas voir dans quel mode le serveur actuel fonctionne.Vous pouvez le voir quand vous utilisez la commande moustique -v Le phénomène suivant :
Il existe un moyen plus simple de résoudre ces problèmes. Il s'agit de vérifier quels ports sont ouverts sous le système Linux et l'utilisation des ports.
Utilisez la commande netstat, par exemple :
netstat -ntpl
127.0.0.1
Il s'agit d'une adresse de bouclage IPv4, également appelée adresse de bouclage locale. Il pointe vers l'interface réseau de l'hôte local, qui est utilisée pour accéder à ses propres services et applications sur l'hôte local. Les services commençant par de telles adresses ne sont accessibles que localement. 0.0.0.0
est une adresse générique, représentant n'importe quel hôte. Lorsqu'un service est lié à 0.0.0.0
, il écoute les connexions entrantes sur toutes les interfaces réseau disponibles, ce qui signifie que le service est accessible depuis n'importe quelle adresse. Sous Linux, :::
et ::1
sont deux représentations de l'adresse de bouclage IPv6, utilisées pour représenter l'hôte local.
Solution
Modifiez directement les fichiers /etc/mosquitto
dans le répertoire mosquitto.conf
, ouvrez le port et l'adresse qui autorise l'accès.
# 设置允许匿名连接,如果禁止匿名连接,则需要配置账号、密码连接
allow_anonymous true
# mqtt 协议配置,分为ipv4和ipv6两种,当前可以只配置启用一种
listener 1883 0.0.0.0
socket_domain ipv4
protocol mqtt
tester l'utilisation
abonnez-vous aux nouvelles
# 无密码
mosquitto_sub -t test1
# 有密码
mosquitto_sub -u yang -P abc123 -t test1
faire une annonce
# 无密码
mosquitto_pub -t test1 -m "发布的内容"
# 有密码
mosquitto_pub -u yang -P abc123 -t test1 -m "发布的内容"
téléchargement du client mqtt
Sous Windows, l'outil client mqtt couramment utilisé est MQTTX.
Adresse de téléchargement de l'outil :
https://github.com/emqx/MQTTX/releases/latest
configuration du mot de passe
L'installation par défaut de moustique n'active pas les mots de passe, il est préférable d'activer l'authentification par mot de passe pour une utilisation formelle.
Configurez le mot de passe du compte moustique :
# 使用-c 参数会导致清空密码文件,重新插入用户
mosquitto_passwd -c pwfile.example 用户名
# 不使用-c 表示追加用户,不影响旧用户
mosquitto_passwd pwfile.example 用户名
Après la configuration ci-dessus, le fichier de configuration de mot de passe pwfile.example sera généré dans le répertoire /etc/mosquitto/ par défaut sous Linux. Vous pouvez également spécifier le chemin du pwfile à générer, en utilisant le formulaire suivant :
mosquitto_passwd /etc/mosquitto/pwfile.example 用户名
修改/etc/mosquitto
Fichiers dans le répertoire mosquitto.conf
avec mot de passe activé.
# 设置是否允许匿名连接,如果禁止匿名连接,则需要配置账号、密码连接
allow_anonymous true
# 密码文件路径,禁止匿名连接配置,允许匿名则不用配置
password_file /etc/mosquitto/pwfile.example
# mqtt 协议配置,分为ipv4和ipv6两种,当前可以只配置启用一种
listener 1883 0.0.0.0
socket_domain ipv4
protocol mqtt
# ipv6
listener 1883 ::
socket_domain ipv6
protocol mqtt
# webscoket 协议配置,如果有的话需要配置,分为ipv4和ipv6两种,当前可以只配置启用一种
listener 1884 0.0.0.0
protocol websockets
socket_domain ipv4
listener 1884 ::
protocol websockets
socket_domain ipv4
# 允许的最大连接数,-1表示没有限制
max_connections -1
Enfin, redémarrez le service moustique pour que la modification du fichier de configuration prenne effet.
sudo systemctl restart mosquitto
Autres courtiers MQTT
Outre Mosquitto, il existe d'autres serveurs proxy MQTT open source et gratuits parmi lesquels choisir.
Y compris, mais sans s'y limiter, les éléments suivants :
1. Eclipse Mosquitto : Eclipse Mosquitto est une branche de Mosquitto, qui fournit plus de fonctions et d'améliorations, telles que de meilleures performances, des options de configuration plus riches, etc.
2. EMQX : EMQ X est un serveur proxy MQTT et MQTT-SN hautes performances et évolutif, qui prend en charge plusieurs protocoles et fonctions, tels que MQTT, MQTT-SN, CoAP, LwM2M, etc.
3. HiveMQ : HiveMQ est un serveur proxy MQTT axé sur la fiabilité et l'évolutivité, qui fournit des fonctions telles que la haute disponibilité et l'équilibrage de charge.
4. RabbitMQ : RabbitMQ est un serveur de courtage de messages à usage général qui prend en charge plusieurs protocoles et modes de messagerie, notamment AMQP, MQTT, etc.
5. Aedes : Aedes est un serveur de courtage de messages MQTT léger basé sur JavaScript.
Plus d'introduction : https://www.cnblogs.com/zhaojinhui/p/16790989.html
Ces serveurs proxy MQTT ont leurs propres caractéristiques et scénarios applicables, et vous pouvez choisir celui qui convient en fonction de vos besoins.
autres ressources
Linux construit un serveur MQTT (moustique) et l'utilise
Linux construit un serveur MQTT (moustique) et l'utilise
Vérification de sécurité Baidu
https://wenku.csdn.net/answer/138aada39619ea890fc382855cc37e54
Construction et configuration du serveur Mosquitto_Configuration Mosquitto_Blog de Fat Tao-Blog CSDN
Construction et configuration de Mosquitto_mosquitto.conf_Blog de physique quantique-Blogue CSDN
Installez Mosquitto et ouvrez Websockets sous Linux
RabbitMQ : messagerie et streaming faciles à utiliser et flexibles — RabbitMQ
Comment télécharger et installer RabbitMQ
Installation et déploiement de RabbitMQ - super détaillé ~
Installation et déploiement de RabbitMQ - super détaillé ~
Pratique de programmation de scripts Bash Shell - UinIO.com Blog sur les technologies électroniques
Démarrage rapide de GNU Make à CMake - UinIO.com Electronic Technology Blog
Nodejs construit rapidement un serveur MQTT_aedes Blog de mqtt_qczxl520
EMQX Enterprise Edition : plate-forme d'accès MQTT IoT de niveau entreprise