Wie starte ich Mosquitto MQTT Broker beim Start in Ubuntu 16.04?

10

Ich versuche, einen Mosquitto MQTT Broker unter Ubuntu 16.04 auszuführen. Ich habe Anweisungen vom 14.04, aber da 16.04 den Start nicht mehr verwendet, kann ich nicht herausfinden, wie man in systemd konvertiert.

Hier sind die Befehle für 14.04:

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

BEARBEITEN:

Das habe ich bisher erreicht. Wenn ich neu systemctl status mosquitto.servicestarte und starte, zeige ich, dass Moskito geladen, aber nicht aktiv ist:

[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. Jetzt lautet der Fehler-Exit-Code:

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

Antworten:

9

Bei der Installation sudo apt install mosquittoauf wird 16.04das /etc/init.d/mosquittoSkript hinzugefügt . systemd verwendet dieses Skript zum Generieren /run/systemd/generator.late/mosquitto.serviceund lautet wie folgt:

# 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

Ein Blick nach innen /etc/init.d/mosquittosagt uns das

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf wird bereits standardmäßig ausgeführt

Also legen Sie einfach Ihre Konfiguration in /etc/mosquitto/conf.d(referenziert von mosquitto.conf) und genießen Sie .


Als regulärer Systemdienst können Sie:

  • systemctl status mosquitto um seinen aktuellen Status zu sehen
  • sudo systemctl (start|stop) mosquitto um den Status für die aktuelle Sitzung zu ändern
  • sudo systemctl (enable|disable) mosquitto um das Startverhalten zu ändern (ohne den aktuellen Status zu beeinflussen)
Mihail Malostanidis
quelle
Wie sagt Ihnen diese Datei, dass mit Mücken gearbeitet wird -c option?
Petrus Theron
@PetrusTheron das passiert in der /etc/init.d/mosquittoDatei mit dem startArgument.
Mihail Malostanidis
Meine Konfiguration im /etc/mosquitto/conf.dVerzeichnis scheint ignoriert zu werden. Wie kann ich mich regenerieren /run/systemd/generator.late/mosquitto.service?
Chris
@chris vielleicht wird nicht darauf verwiesen /etc/mosquitto/mosquitto.conf? Was ist da drin?
Mihail Malostanidis
0

Die Dateien ExecStart=und WorkingDirectory=Zeilen Ihrer Einheit sind völlig falsch. Versuchen Sie, eine Konfigurationsdatei mit der ausführbaren Datei (!) Als Arbeitsverzeichnis zu starten?

Wenn ich das richtig verstehe, wäre die richtige Einheitendatei:

[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

Bitte bringen Sie das Gerät auch nicht zusammen, um es zu starten und zu aktivieren. Lesen Sie meine ähnlichen Antworten dazu:

intelfx
quelle
0

Stellen Sie sicher, dass Mücken laufen:

ps -aux | grep mosquitto

Und Sie haben dies in der default.conf :

listener 1883
İsmail Yavuz
quelle