Instalación y uso del servicio mosquitto bajo linux (guía para evitar pits)

Mosquitto es un servidor intermediario de mensajes MQTT de código abierto. MQTT es un protocolo de mensajería ligero basado en publicación/suscripción. La instalación y uso de mosquitto es relativamente sencilla, y conviene realizar algunas pruebas.

introducción a los mosquitos

Características de Mosquito:

1. Ligero: Mosquitto es un servidor proxy MQTT liviano, su objetivo de diseño es proporcionar una entrega de mensajes eficiente, rápida y confiable, adecuada para aplicaciones de todos los tamaños.

2. Fácil de implementar: Mosquitto es muy fácil de instalar e implementar, y puede ejecutarse en múltiples plataformas, incluidas Linux, Windows, macOS, etc.

3. Seguridad: Mosquitto admite comunicación cifrada basada en TLS/SSL, que puede proteger la seguridad y confidencialidad de los mensajes. Al mismo tiempo, también admite autenticación basada en nombre de usuario y contraseña, y lista de control de acceso (ACL) para restringir el acceso.

4. Escalabilidad: Mosquitto admite múltiples conexiones de clientes y suscripciones de múltiples temas, lo que puede satisfacer las necesidades de las aplicaciones a gran escala.

Instalación bajo Ubuntu

Método 1: instalación del código fuente

descargar mosquito

Sitio web oficial: https://mosquitto.org/

Dirección de origen: https://mosquitto.org/files/source/mosquitto-2.0.9.tar.gz

La ventaja es que puede especificar la versión requerida arbitrariamente. Pero es un poco problemático, necesita compilarlo y usarlo usted mismo. Si necesita agregar un servicio, también debe configurarlo usted mismo.

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étodo 2: Instalar directamente

La ventaja es que es simple y conveniente, pero usted no puede seleccionar libremente la versión, pero la versión no debe ser demasiado antigua. La versión predeterminada en Ubuntu 18 debe ser la versión 2.0 o superior.

sudo apt-get install mosquitto

Por defecto, arriba solo se instala el servicio mosquitto, sin las herramientas de cliente de prueba mosquitto_sub y mosquitto_pub. Si es necesario, puede instalar:

sudo apt-get install mosquitto-clients

Gestión De Servicios

service --status-all

Mostrará la lista completa de servicios en Ubuntu. Si el sistema es Ubuntu 18.04, Ubuntu 20.04 y Ubuntu 22.04 o superior, se recomienda utilizar la utilidad Systemd systemctl para iniciar, detener o reiniciar los servicios. Las versiones anteriores pueden usar el comando de servicio para iniciar/detener/reiniciar el servicio.

servicees un comando de administración de servicios más antiguo que se usa en las distribuciones de Linux compatibles con el sistema System V init. Puede iniciar, detener, reiniciar o consultar el estado de los servicios del sistema. Al usar sudo serviceel comando, debe especificar el nombre del servicio, por ejemplo, sudo service apache2 stopdetendrá el servidor Apache. sudo systemctles un comando de administración de servicios más nuevo para distribuciones de Linux compatible con el sistema Systemd, como versiones recientes de Ubuntu, Fedora y CentOS. Proporciona más funcionalidad y flexibilidad.

De forma alternativa, los servicios se pueden iniciar, detener o reiniciar utilizando secuencias de comandos de inicio en el directorio /etc/init.d. Este directorio en realidad contiene varios scripts para diferentes servicios. Si usa:

/etc/init.d/mosquitto  start

Desde que Ubuntu cambió a Systemd, los scripts de inicio están en desuso.

systemctlInicie el servicio de mosquitos:

sudo systemctl stop mosquitto

Detener el servicio de mosquitos:

sudo systemctl start mosquitto

Para reiniciar el servicio de mosquitos:

sudo systemctl restart mosquitto

Consulta el estado del servicio de mosquitos:

sudo systemctl status mosquitto

Guía para evitar pits

Después de una instalación y un inicio exitosos, descubrí que no se puede acceder con éxito a la red externa y que el firewall también ha liberado el puerto 1883, pero aún no puedo acceder al puerto 1883. ¿Por qué no puedo conectarme al servidor mosquitto en Linux?

La razón es que el servicio mosquitto en Ubuntu está en modo solo local de forma predeterminada.Cuando usa sudo service mosquitto start y luego sudo service mosquitto status, no puede ver en qué modo se está ejecutando el servidor actual. usas el comando mosquitto -v El siguiente fenómeno:

inserte la descripción de la imagen aquí

Hay una forma más fácil de solucionar estos problemas. Es para verificar qué puertos están abiertos en el sistema Linux y el uso de los puertos.

Use el comando netstat, como:

netstat -ntpl

127.0.0.1Es una dirección de bucle invertido IPv4, también conocida como dirección de bucle invertido local. Apunta a la interfaz de red del host local, que se utiliza para acceder a sus propios servicios y aplicaciones en el host local. Solo se puede acceder localmente a los servicios que comienzan con dichas direcciones. 0.0.0.0es una dirección comodín, que representa cualquier host. Cuando un servicio está vinculado a 0.0.0.0, escuchará las conexiones entrantes en todas las interfaces de red disponibles, lo que significa que se puede acceder al servicio desde cualquier dirección. En Linux, :::y ::1son dos representaciones de la dirección de bucle invertido IPv6, que se utilizan para representar el host local.

Solución

Directamente modifica los archivos /etc/mosquittodel directorio mosquitto.conf, abre el puerto y la dirección que permite el acceso.

# 设置允许匿名连接,如果禁止匿名连接,则需要配置账号、密码连接
allow_anonymous true

# mqtt 协议配置,分为ipv4和ipv6两种,当前可以只配置启用一种
listener 1883 0.0.0.0
socket_domain ipv4
protocol mqtt

uso de prueba

suscríbete a las noticias

# 无密码
mosquitto_sub -t test1
# 有密码
mosquitto_sub -u yang -P abc123 -t test1

Hacer un anuncio

# 无密码
mosquitto_pub -t test1 -m "发布的内容"
# 有密码
mosquitto_pub -u yang -P abc123 -t test1 -m "发布的内容"

descarga del cliente mqtt

En Windows, la herramienta de cliente mqtt más utilizada es MQTTX.

Dirección de descarga de la herramienta:

https://github.com/emqx/MQTTX/releases/latest

 configuración de contraseña

 La instalación predeterminada de mosquitto no habilita contraseñas, es mejor habilitar la autenticación de contraseña para uso formal.

Configurar la contraseña de la cuenta de mosquitto:

# 使用-c 参数会导致清空密码文件,重新插入用户
mosquitto_passwd -c pwfile.example 用户名

# 不使用-c 表示追加用户,不影响旧用户
mosquitto_passwd  pwfile.example 用户名

Después de la configuración anterior, el archivo de configuración de contraseña pwfile.example se generará en el directorio /etc/mosquitto/ de forma predeterminada en Linux. También puede especificar la ruta del archivo pw que se generará, utilizando el siguiente formulario:

mosquitto_passwd /etc/mosquitto/pwfile.example 用户名

修改/etc/mosquittoArchivos en el directorio mosquitto.confcon contraseña habilitada.

# 设置是否允许匿名连接,如果禁止匿名连接,则需要配置账号、密码连接
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

Finalmente, reinicie el servicio de mosquitto para que la modificación del archivo de configuración tenga efecto.

sudo systemctl restart mosquitto

Otros corredores MQTT

Además de Mosquitto, hay otros servidores proxy MQTT gratuitos y de código abierto para elegir.

Incluyendo pero no limitado a lo siguiente:

1. Eclipse Mosquitto: Eclipse Mosquitto es una rama de Mosquitto, que proporciona más funciones y mejoras, como un mejor rendimiento, opciones de configuración más ricas, etc.

2. EMQX: EMQ X es un servidor proxy MQTT y MQTT-SN escalable y de alto rendimiento, que admite múltiples protocolos y funciones, como MQTT, MQTT-SN, CoAP, LwM2M, etc.

3. HiveMQ: HiveMQ es un servidor proxy MQTT enfocado en la confiabilidad y escalabilidad, que proporciona funciones como alta disponibilidad y equilibrio de carga.

4. RabbitMQ: RabbitMQ es un servidor intermediario de mensajes de propósito general que admite múltiples protocolos y modos de mensajería, incluidos AMQP, MQTT, etc.

5. Aedes: Aedes es un servidor intermediario de mensajes MQTT basado en JavaScript ligero.

Más introducción: https://www.cnblogs.com/zhaojinhui/p/16790989.html

Estos servidores proxy MQTT tienen sus propias características y escenarios aplicables, y puede elegir el adecuado según sus necesidades.

otros recursos

Linux construye un servidor MQTT (mosquitto) y lo usa

Linux construye un servidor MQTT (mosquitto) y lo usa

Verificación de seguridad de Baidu

https://wenku.csdn.net/answer/138aada39619ea890fc382855cc37e54

Construcción y configuración del servidor Mosquitto_Configuración Mosquitto_Fat Tao's Blog-CSDN Blog

Mosquitto Construcción y Configuración_mosquitto.conf_Quantum Physics Blog-CSDN Blog

Instale Mosquitto y abra Websockets en Linux

Introducción e implementación de RabbitMQ (explicación súper detallada)_blog del server_rabbitmq_char1otte-blog CSDN

RabbitMQ: transmisión y mensajería flexibles y fáciles de usar — ​​RabbitMQ

Cómo descargar e instalar RabbitMQ

Instalación e implementación de RabbitMQ: súper detallado ~

Discusión sobre el protocolo de transmisión de Internet de las cosas MQTT-UinIO.com Electronic Technology Blog

Instalación e implementación de RabbitMQ: súper detallado ~

Práctica de programación de guiones Bash Shell - UinIO.com Blog de tecnología electrónica

Inicio rápido de GNU Make a CMake - Blog de tecnología electrónica de UinIO.com

Nodejs crea rápidamente un servidor MQTT_aedes mqtt_qczxl520's Blog

EMQX Enterprise Edition: plataforma de acceso MQTT IoT de nivel empresarial

Servidor MQTT_Blog Hongmengdao-Blog CSDN

Supongo que te gusta

Origin blog.csdn.net/qq8864/article/details/131607972
Recomendado
Clasificación