Содержание:
Рейтинг VPS с NVMe дисками, смотрите на нашем сайте.
В данной статье рассмотрим, как установить брокер Mosquitto чтобы протокол MQTT работал на сервере с операционной системой Ubuntu.
Для чего нужен MQTT?
MQTT — легкий и открытый протокол для обмена данными, созданный для передачи данных на удаленные расстояние, где передается небольшой размер информации и есть ограничение по пропускной способности канала.
Пример использования данного протокола: допустим у Вас есть датчик, который измеряет температура воздуха в комнате, и Вам требуется проверять эту температуру на своем сервере — для этой цели идеально подойдет протокол MQTT.
Как работает MQTT?
В MQTT есть понятие клиенты и брокер. Брокер или сервер — это главный объект, который получает и передает данные дальше. Клиенты — это все остальные участники, например датчик, который считывает температуру и сервер, на котором смотрят температуру будут клиентами.
Клиент будет отправлять данные, о температуре, брокер MQTT будет их принимать и передавать клиенту серверу, который будет их получать.
Установка MQTT:
Для начала подключимся к серверу по SSH и выполним команду по добавлению репозитория Mosquitto:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
После выполнения команды мы должны увидеть примерно следующий текст:
Для обновления всех пакетов при помощи добавленного репозитория используем команду:
sudo apt-get update
Вы обнаружите похожий вывод команды:
Теперь для установки Mosquitto вводим команду:
sudo apt-get install mosquitto
Далее для установки пакетов клиента Mosquitto выполним следующую команду:
sudo apt-get install mosquitto-clients
Выполним следующую команду, чтобы проверить состояние службы Mosquitto:
sudo service mosquitto status
Самые первые строки в выводе должны показывать статус службы. Active (running) означает, что Mosquitto активен и запущен для работы.
Также можно выполнить команду, чтобы проверить ожидает ли сервер Mosquitto по порту 1883, который установлен по умолчанию.
netstat -an | grep 1883
Данный вывод показывает, что сервер Mosquitto открыт сокеты ожидания IPv4 и IPv6 для порта 1883:
Защита брокера MQTT
Пока что любой, кто знает IP-адрес брокера может использовать его для передачи данных по MQTT.
Вводим следующую команду (вместо USERNAME указываем логин, который будет использовать при авторизации):
sudo mosquitto_passwd-c/etc/mosquitto/passwd USERNAME
После выполнения команды, система запросит пароль. Вводим пароль и запоминаем его, он потребуется для авторизации.
Открываем файл default.conf для редактирования.
sudo nano /etc/mosquitto/conf.d/default.conf
Добавляем в начало файла следующие 2 строки (они отвечают за требование авторизации по логину и паролю):
allow_anonymous false
password_file /etc/mosquitto/passwd
Файл будет выглядеть так:
Сохраняем и закрываем данный файл и перезапускаем брокера командой:
sudo service mosquitto restart
Теперь при попытке подписаться на топик брокера мы получим сообщение «Connection error: Connection refused: not authorised».
Попробуем подписаться на топик брокера с использованием аргументов –u и –P (-u указываем наш логин и -p указываем наш пароль):
mosquitto_sub -h localhost -t test -u "USERNAME" -P "PASSWORD"
После выполнения данной команды подключение проходит успешно.
Комментарии ()