Bagaimana cara memulai Mosquitto MQTT broker saat startup di Ubuntu 16.04

10

Saya mencoba menjalankan Mosquitto MQTT Broker di Ubuntu 16.04. Saya memiliki instruksi dari 14,04, tetapi karena 16,04 tidak lagi menggunakan startup, saya tidak tahu cara mengonversi ke systemd.

Berikut adalah perintah untuk 14.04:

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

EDIT:

Inilah yang saya dapatkan sejauh ini. Ketika saya reboot dan menjalankan systemctl status mosquitto.servicesaya menunjukkan bahwa mosquitto dimuat tetapi tidak aktif:

[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. Sekarang kode keluar kesalahan adalah:

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

Jawaban:

9

Menginstal sudo apt install mosquittopada 16.04menambahkan /etc/init.d/mosquittoskrip. systemd menggunakan skrip itu untuk menghasilkan /run/systemd/generator.late/mosquitto.service, dan inilah yang dikatakannya:

# 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

Melihat ke dalam /etc/init.d/mosquittomemberitahu kita hal itu

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf sudah berjalan secara default

Jadi cukup masukkan konfigurasi Anda ke /etc/mosquitto/conf.d(direferensikan oleh mosquitto.conf) dan selamat menikmati .


Menjadi layanan systemd reguler, Anda dapat:

  • systemctl status mosquitto untuk melihat statusnya saat ini
  • sudo systemctl (start|stop) mosquitto untuk mengubah status untuk sesi saat ini
  • sudo systemctl (enable|disable) mosquitto untuk mengubah perilaku startup (tanpa mempengaruhi kondisi saat ini)
Mihail Malostanidis
sumber
Bagaimana file itu memberi tahu Anda bahwa mosquitto sedang dijalankan -c option?
Petrus Theron
@PetrusTheron itulah yang terjadi dalam /etc/init.d/mosquittofile dengan startargumen.
Mihail Malostanidis
Konfigurasi saya di dalam /etc/mosquitto/conf.ddirektori tampaknya diabaikan. Bagaimana saya bisa regenerasi /run/systemd/generator.late/mosquitto.service?
chris
@ Chris mungkin itu tidak dirujuk /etc/mosquitto/mosquitto.conf? Apa yang ada di sana?
Mihail Malostanidis
0

File unit ExecStart=dan WorkingDirectory=baris Anda sepenuhnya salah. Apakah Anda mencoba memulai file konfigurasi, menggunakan file yang dapat dieksekusi (!) Sebagai direktori kerjanya?

Jika saya mengerti dengan benar, file unit yang tepat adalah:

[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

Juga, tolong jangan mengonfigurasi memulai dan mengaktifkan unit. Baca jawaban saya yang serupa tentang ini:

intelfx
sumber
0

Pastikan Anda menjalankan mosquitto:

ps -aux | grep mosquitto

Dan Anda memilikinya di default.conf :

listener 1883
İsmail Yavuz
sumber