Jak uruchomić brokera Mosquitto MQTT podczas uruchamiania w systemie Ubuntu 16.04

10

Usiłuję uruchomić Brokera Mosquitto MQTT na Ubuntu 16.04. Mam instrukcje od 14.04, ale ponieważ 16.04 nie używa już uruchamiania, nie mogę wymyślić, jak przekonwertować na systemd.

Oto polecenia dla 14.04:

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

EDYTOWAĆ:

Do tego do tej pory doszedłem. Po ponownym uruchomieniu i uruchomieniu systemctl status mosquitto.servicepokazuję, że komar jest załadowany, ale nieaktywny:

[Unit]
Description=Mosquitto MQTT Broker

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

[Install]
WantedBy=multi-user.target

EDYCJA 2:

Ran sudo systemctl enable mosquitto.service. Teraz kod wyjścia błędu to:

Process: 1720 ExecStart=/etc/mosquitto/mosquitto.conf (code=exited, status=200/CHDIR)
pekasus
źródło

Odpowiedzi:

9

Instalacja sudo apt install mosquittona 16.04dodaje /etc/init.d/mosquittoskrypt. systemd używa tego skryptu do generowania /run/systemd/generator.late/mosquitto.service, a tak mówi:

# 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

Zaglądanie do środka /etc/init.d/mosquittomówi nam to

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf jest już domyślnie uruchomiony

Więc po prostu włóż swoją konfigurację do /etc/mosquitto/conf.d(odnośnik mosquitto.conf) i ciesz się .


Będąc regularną usługą systemową, możesz:

  • systemctl status mosquitto aby zobaczyć jego aktualny status
  • sudo systemctl (start|stop) mosquitto aby zmienić status dla bieżącej sesji
  • sudo systemctl (enable|disable) mosquitto zmienić zachowanie podczas uruchamiania (bez wpływu na bieżący stan)
Mihail Malostanidis
źródło
W jaki sposób ten plik mówi ci, że komar jest używany -c option?
Petrus Theron,
@PetrusTheron tak dzieje się w /etc/init.d/mosquittopliku z startargumentem.
Mihail Malostanidis,
Moja konfiguracja w katalogu /etc/mosquitto/conf.dwydaje się być ignorowana. Jak mogę zregenerować /run/systemd/generator.late/mosquitto.service?
Chris
@ Chris, może nie ma odniesienia /etc/mosquitto/mosquitto.conf? Co tam jest?
Mihail Malostanidis,
0

Twoje pliki jednostek ExecStart=i WorkingDirectory=wiersze są całkowicie niepoprawne. Czy próbujesz uruchomić plik konfiguracyjny, używając pliku wykonywalnego (!) Jako katalogu roboczego?

Jeśli dobrze rozumiem, właściwy plik jednostkowy to:

[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

Nie należy również łączyć uruchamiania i włączania urządzenia. Przeczytaj moje podobne odpowiedzi na ten temat:

intelfx
źródło
0

Upewnij się, że masz komara:

ps -aux | grep mosquitto

I masz to w default.conf :

listener 1883
İsmail Yavuz
źródło