Ubuntu 16.04'te Mosquitto MQTT brokerini başlangıçta nasıl başlatabilirim?


10

Ubuntu 16.04'te Mosquitto MQTT Broker'ı çalıştırmaya çalışıyorum. 14.04'ten yönergelerim var, ancak 16.04 artık başlangıç ​​kullanmadığından, systemd'ye nasıl dönüştürüleceğini anlayamıyorum.

İşte 14.04 için komutlar:

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

DÜZENLE:

Şimdiye kadar var olan bu. Yeniden systemctl status mosquitto.servicebaşlattığımda ve çalıştırdığımda sivrisinek yüklü ama aktif değil:

[Unit]
Description=Mosquitto MQTT Broker

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

[Install]
WantedBy=multi-user.target

DÜZENLEME 2:

Koştu sudo systemctl enable mosquitto.service. Şimdi hata çıkış kodu:

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

Yanıtlar:


9

Yükleme sudo apt install mosquittoüzerinde 16.04ekler /etc/init.d/mosquittokomut dosyası. systemd bu komut dosyasını oluşturmak için kullanır /run/systemd/generator.late/mosquitto.serviceve söylediği şey budur:

# 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

İçine bakmak /etc/init.d/mosquittobize şunu söyler:

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf zaten varsayılan olarak çalıştırıldı

Bu yüzden yapılandırmanızı /etc/mosquitto/conf.d(başvuruda bulunan mosquitto.conf) içine koyun ve keyfini çıkarın .


Düzenli bir sistem hizmeti olarak şunları yapabilirsiniz:

  • systemctl status mosquitto mevcut durumunu görmek için
  • sudo systemctl (start|stop) mosquitto geçerli oturumun durumunu değiştirmek için
  • sudo systemctl (enable|disable) mosquitto başlangıç ​​davranışını değiştirmek için (geçerli durumu etkilemeden)

Bu dosya size sivrisinek ile çalıştırıldığını nasıl söyler -c option?
Petrus Theron

@PetrusTheron argüman /etc/init.d/mosquittoile dosyada olan budur start.
Mihail Malostanidis

/etc/mosquitto/conf.dDir içindeki benim yapılandırma göz ardı gibi görünüyor. Nasıl yenilenebilirim /run/systemd/generator.late/mosquitto.service?
chris

@chris belki referans değil /etc/mosquitto/mosquitto.conf? Orada ne var?
Mihail Malostanidis

0

Birim dosyanız ExecStart=ve WorkingDirectory=satırlarınız tamamen yanlış. Çalıştırılabilir dizini (!) Çalışma dizini olarak kullanarak bir yapılandırma dosyası başlatmaya mı çalışıyorsunuz?

Doğru anlıyorsam, uygun birim dosyası:

[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

Ayrıca, lütfen ünitenin başlatılması ve etkinleştirilmesi ile sınırlandırmayın. Bununla ilgili benzer cevaplarımı oku:


0

Sivrisinek koştuğunuzdan emin olun:

ps -aux | grep mosquitto

Ve default.conf varsayılan olarak var :

listener 1883
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.