web-dev-qa-db-fra.com

Comment démarrer le courtier Mosquitto MQTT au démarrage sous Ubuntu 16.04

J'essaie de gérer un courtier Mosquitto MQTT sur Ubuntu 16.04. J'ai des instructions à partir de 14.04, mais comme 16.04 n'utilise plus le démarrage, je ne sais pas comment convertir au format systemd.

Voici les commandes pour 14.04:

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

MODIFIER:

C'est ce que je suis arrivé jusqu'à présent. Lorsque je redémarre et exécute systemctl status mosquitto.service, je montre que mosquitto est chargé mais pas actif:

[Unit]
Description=Mosquitto MQTT Broker

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

[Install]
WantedBy=multi-user.target

EDIT 2:

Ran Sudo systemctl enable mosquitto.service. Maintenant, le code de sortie d'erreur est:

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

L'installation de Sudo apt install mosquitto sur 16.04 ajoute le script /etc/init.d/mosquitto. systemd utilise ce script pour générer /run/systemd/generator.late/mosquitto.service, et voici ce qu'il dit:

# 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

En regardant à l'intérieur /etc/init.d/mosquitto nous dit que

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf est déjà exécuté par défaut

Il suffit donc de mettre votre configuration dans /etc/mosquitto/conf.d (référencé par mosquitto.conf) et enjoy.


En tant que service système régulier, vous pouvez:

  • systemctl status mosquitto pour voir son statut actuel
  • Sudo systemctl (start|stop) mosquitto pour changer le statut de la session en cours
  • Sudo systemctl (enable|disable) mosquitto pour changer le comportement au démarrage (sans affecter l'état actuel)
8

Assurez-vous que vous avez mosquitto en cours d'exécution:

ps -aux | grep mosquitto

Et vous avez ceci dans default.conf:

listener 1883
0
İsmail Yavuz

Les lignes ExecStart= et WorkingDirectory= de votre fichier unité sont complètement fausses. Essayez-vous de démarrer un fichier de configuration en utilisant le fichier exécutable (!) Comme répertoire de travail?

Si je comprends bien, le fichier d'unité approprié serait:

[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

Aussi, veuillez ne pas associer le démarrage et l'activation de l'unité. Lisez mes réponses similaires à ce sujet:

0
intelfx