Як запустити брокера Mosquitto MQTT при запуску в Ubuntu 16.04


10

Я намагаюся запустити брокера Mosquitto MQTT на Ubuntu 16.04. У мене є інструкції від 14.04, але оскільки 16.04 більше не використовує запуск, я не можу зрозуміти, як перетворити на systemd.

Ось команди для 14.04:

description "Mosquitto MQTT broker"
start on net-device-up
respawn
exec /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Редагувати:

Це те, що я дійшов до цього часу. Коли я перезавантажуюсь і запускаю, systemctl status mosquitto.serviceя показую, що комар завантажений, але не активний:

[Unit]
Description=Mosquitto MQTT Broker

[Service]
WorkingDirectory=/usr/sbin/mosquitto
ExecStart=/etc/mosquitto/mosquitto.conf
Restart=always

[Install]
WantedBy=multi-user.target

EDIT 2:

Побіг sudo systemctl enable mosquitto.service. Тепер код виходу з помилки:

Process: 1720 ExecStart=/etc/mosquitto/mosquitto.conf (code=exited, status=200/CHDIR)

Відповіді:


9

Установка sudo apt install mosquittoна 16.04додає /etc/init.d/mosquittoсценарій. systemd використовує цей сценарій для генерації /run/systemd/generator.late/mosquitto.service, і ось що він говорить:

# Automatically generated by systemd-sysv-generator

[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/mosquitto
Description=LSB: mosquitto MQTT v3.1 message broker
Before=multi-user.target
Before=multi-user.target
Before=multi-user.target
Before=graphical.target
Before=shutdown.target
After=remote-fs.target
After=systemd-journald-dev-log.socket
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/init.d/mosquitto start
ExecStop=/etc/init.d/mosquitto stop
ExecReload=/etc/init.d/mosquitto reload

Заглянувши всередину, це /etc/init.d/mosquittoговорить нам про це

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf вже працює за замовчуванням

Тому просто покладіть на ваш конфігурацію /etc/mosquitto/conf.d(на яку посилається mosquitto.conf) і насолоджуйтесь .


Будучи звичайним системним сервісом, ви можете:

  • systemctl status mosquitto щоб побачити його поточний статус
  • sudo systemctl (start|stop) mosquitto щоб змінити статус для поточного сеансу
  • sudo systemctl (enable|disable) mosquitto змінити поведінку при запуску (не впливаючи на поточний стан)

Як цей файл говорить вам, що запускається комар -c option?
Петрус Терон

@PetrusTheron ось що відбувається у /etc/init.d/mosquittoфайлі з startаргументом.
Михайло Малостанідіс

Моя конфігурація всередині /etc/mosquitto/conf.ddir, здається, ігнорується. Як я можу регенерувати /run/systemd/generator.late/mosquitto.service?
chris

@chris, можливо, на нього не посилається /etc/mosquitto/mosquitto.conf? Що там?
Михайло Малостанідіс

0

Файли ExecStart=та WorkingDirectory=рядки вашого файлу є абсолютно неправильними. Ви намагаєтеся запустити конфігураційний файл, використовуючи виконуваний файл (!) Як його робочий каталог?

Якщо я правильно розумію, правильним файлом одиниці було б:

[Unit]
Description=Mosquitto MQTT Broker
After=network.target

[Service]
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Restart=always

[Install]
WantedBy=multi-user.target

Крім того, будь ласка, не плутайте пуск та включення пристрою. Прочитайте мої подібні відповіді з цього приводу:


0

Будьте впевнені, що у вас працює комар:

ps -aux | grep mosquitto

І це у вас є default.conf :

listener 1883
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.