ฉันจะเริ่มนายหน้า Mosquitto MQTT เมื่อเริ่มต้นใน Ubuntu 16.04 ได้อย่างไร


10

ฉันพยายามเรียกใช้ Mosquitto MQTT Broker บน Ubuntu 16.04 ฉันมีคำแนะนำจาก 14.04 แต่เนื่องจาก 16.04 ไม่ใช้การเริ่มต้นฉันไม่สามารถหาวิธีแปลงเป็น systemd ได้

นี่คือคำสั่งสำหรับ 14.04:

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

แก้ไข:

นี่คือสิ่งที่ฉันได้มาจนถึงตอนนี้ เมื่อฉันรีบูตและรันsystemctl status mosquitto.serviceฉันจะแสดงว่าโหลด mosquitto แล้วแต่ไม่ทำงาน:

[Unit]
Description=Mosquitto MQTT Broker

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

[Install]
WantedBy=multi-user.target

แก้ไข 2:

sudo systemctl enable mosquitto.serviceRan ตอนนี้รหัสทางออกของข้อผิดพลาดคือ:

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

คำตอบ:


9

การติดตั้งsudo apt install mosquittoบน16.04เพิ่ม/etc/init.d/mosquittoสคริปต์ systemd ใช้สคริปต์นั้นเพื่อสร้าง/run/systemd/generator.late/mosquitto.serviceและนี่คือสิ่งที่มันบอกว่า:

# 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

มองเข้าไปข้างใน/etc/init.d/mosquittoบอกเราว่า

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf ถูกเรียกใช้แล้วตามค่าเริ่มต้น

ดังนั้นเพียงแค่ใส่การตั้งค่าของคุณลงใน/etc/mosquitto/conf.d(อ้างอิงโดยmosquitto.conf) และเพลิดเพลินไปกับ


เป็นบริการ systemd ปกติคุณสามารถ:

  • systemctl status mosquitto เพื่อดูสถานะปัจจุบัน
  • sudo systemctl (start|stop) mosquitto เพื่อเปลี่ยนสถานะของเซสชันปัจจุบัน
  • sudo systemctl (enable|disable) mosquitto เพื่อเปลี่ยนพฤติกรรมการเริ่มต้น (โดยไม่มีผลต่อสถานะปัจจุบัน)

วิธีการที่ไม่แฟ้มที่บอกคุณว่า mosquitto จะถูกเรียกใช้ด้วย-c option?
Petrus Theron

@PetrusTheron นั่นคือสิ่งที่เกิดขึ้นใน/etc/init.d/mosquittoไฟล์ที่มีstartอาร์กิวเมนต์
Mihail Malostanidis

การกำหนดค่าของฉันภายใน/etc/mosquitto/conf.ddir ดูเหมือนจะถูกละเว้น ฉันจะสร้างใหม่ได้/run/systemd/generator.late/mosquitto.serviceอย่างไร
chris

@ Chris บางทีมันอาจจะไม่ได้อ้างถึงใน/etc/mosquitto/mosquitto.conf? มีอะไรอยู่ในนั้น
Mihail Malostanidis

0

ไฟล์หน่วยExecStart=และWorkingDirectory=เส้นของคุณผิดอย่างสมบูรณ์ คุณพยายามเริ่มต้นไฟล์กำหนดค่าโดยใช้ไฟล์ปฏิบัติการ (!) เป็นไดเรกทอรีทำงานหรือไม่

ถ้าฉันเข้าใจถูกต้องไฟล์หน่วยที่เหมาะสมจะเป็น:

[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

นอกจากนี้โปรดอย่าเริ่มต้นและเปิดใช้งานอุปกรณ์ อ่านคำตอบที่คล้ายกันของฉันเกี่ยวกับเรื่องนี้:


0

ตรวจสอบให้แน่ใจว่าคุณมี mosquitto ทำงานอยู่:

ps -aux | grep mosquitto

และคุณมีสิ่งนี้ในdefault.conf :

listener 1883
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.