Wie lässt sich Mosquitto Broker unter Mac OS automatisch starten (ohne Homebrew)?

Ich verstehe, dass bei Verwendung von Homebrew eine Plist-Datei bereitgestellt wird und ein Benutzer Launchctl verwenden kann, um diese Plist-Datei zu installieren.

Aber ich verwende weder Homebrew noch Macport. Ich habe Mosquitto-Binärdateien direkt aus der Mosquitto-Quelldistribution erstellt und möchte Mosquitto Broker automatisch starten können (genau wie andere Daemons).

Antworten (1)

Der Homebrew-Mosquitto-Launch-Agent sieht so aus:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>homebrew.mxcl.mosquitto</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mosquitto/sbin/mosquitto</string>
    <string>-c</string>
    <string>/usr/local/etc/mosquitto/mosquitto.conf</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <false/>
  <key>WorkingDirectory</key>
  <string>/usr/local/var/mosquitto</string>
</dict>
</plist>

Abhängig von Ihrem Installationsverzeichnis von mosquitto ändern Sie die beiden Pfadzeichenfolgen in ProgramArguments und den Pfad des WorkingDirectory .

Ändern Sie auch das Label in org.user.mosquitto (um zukünftige Konflikte mit einer möglichen Homebrew-Mosquitto-Installation zu vermeiden) und speichern Sie die Datei dann als org.user.mosquitto.plist in ~/Library/LaunchAgents/.

Laden Sie den Agenten mit launchctl load ~/Library/LaunchAgents/org.user.mosquitto.plist.


Unter bestimmten Umständen (die make install-Optionen, die Sie in Ihrer Frage nicht angegeben haben) kann es erforderlich sein, die Plist-Datei unter /Library/LaunchAgents (anstelle von ~/Library/LaunchAgents) zu speichern, die Berechtigungen für root:wheel 644 und zu ändern beginne es mit:

sudo launchctl load /Library/LaunchAgents/org.user.mosquitto.plist

Jetzt können Sie die Installation testen und sicherstellen, dass der Server erfolgreich läuft. Öffnen Sie ein neues Befehlsfenster und starten Sie einen Listener.

mosquitto_sub -t topic/state

Senden Sie in einem anderen Fenster eine Nachricht an den Listener.

mosquitto_pub -t topic/state -m "Hello World"
Danke. Eine Sache, die in Ihrer Antwort nicht erwähnt wird, ist sicherzustellen, dass das in der Plist-Datei angegebene WorkingDirectory vorhanden ist. Eine andere Sache ist, dass ich launchctl list | grep mosquittodas erste Feld (sollte eine gültige PID sein) verwendet und überprüft habe, um zu sehen, ob der Mosquitto-Broker erfolgreich gestartet wurde.
@TzunghsingDavidWong Hmm Ich habe es nicht explizit, sondern implizit gesagt: "Abhängig von Ihrem Installationsverzeichnis von mosquitto ändern Sie die beiden Pfadzeichenfolgen in [...] dem Pfad des Arbeitsverzeichnisses." ;-)
mein schlechtes ... diesen Punkt übersehen. In meinem Fall habe ich nichts installiert. Ich habe einfach Mosquitto-Binärdateien und gemeinsam genutzte Bibliotheken aus einem Time-Machine-Backup wiederhergestellt und sie in mein /usr/local abgelegt. Und sie funktionieren einfach 8-)