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


10

J'essaie d'exécuter un courtier Mosquitto MQTT sur Ubuntu 16.04. J'ai des instructions de 14.04, mais depuis 16.04 n'utilise plus de démarrage, je ne peux pas comprendre comment convertir en 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

ÉDITER:

C'est à cela que je suis arrivé jusqu'à présent. Lorsque je redémarre et que systemctl status mosquitto.serviceje cours, je montre que le moustique 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)

Réponses:


9

L'installation sudo apt install mosquittosur 16.04ajoute le /etc/init.d/mosquittoscript. 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

Regarder à l'intérieur /etc/init.d/mosquittonous 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 en /etc/mosquitto/conf.d(référencé par mosquitto.conf) et de profiter .


Étant un service systemd 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 changer le comportement de démarrage (sans affecter l'état actuel)

Comment ce fichier vous indique-t-il que le moustique est exécuté avec -c option?
Petrus Theron

@PetrusTheron c'est ce qui se passe dans le /etc/init.d/mosquittofichier avec l' startargument.
Mihail Malostanidis

Ma configuration à l'intérieur du /etc/mosquitto/conf.drépertoire semble être ignorée. Comment puis-je me régénérer /run/systemd/generator.late/mosquitto.service?
chris

@chris n'est peut-être pas référencé /etc/mosquitto/mosquitto.conf? Quoi de neuf?
Mihail Malostanidis

0

Les fichiers ExecStart=et les WorkingDirectory=lignes de votre unité sont complètement faux. 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 confondre le démarrage et l'activation de l'unité. Lisez mes réponses similaires à ce sujet:


0

Assurez-vous que le moustique est en marche:

ps -aux | grep mosquitto

Et vous avez ceci dans default.conf :

listener 1883
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.