Mosquitto บน Raspberry Pi ปฏิเสธการเชื่อมต่อหลังจากเปลี่ยนการตั้งค่าบันทึก


12

ในความพยายามอย่างต่อเนื่องของฉันที่จะได้รับ Raspberry Pi ของฉันที่จะสั่งสิ่งที่ฉันฉันตั้งค่านายหน้า Mosquitto MQTT ในการตั้งค่าฐานทุกอย่างเป็นไปด้วยดี

ฉันสามารถโพสต์ข้อความทดสอบด้วยคำสั่งเผยแพร่และรับพวกเขาด้วยคำสั่งสมัครสมาชิก จากนั้นฉันก็ตัดสินใจที่จะเพิ่มระดับการบันทึกและแก้ไขไฟล์ mosquitto.conf ดังนี้ รุ่นที่มีความสำคัญส่วนบันทึกทั้งหมดแสดงความคิดเห็นการทำงาน อื่น ๆ ไม่ได้

ฉันหรี่มันลงไปตามบรรทัดด้วยล็อกไฟล์

$ diff mosquitto.conf mosquitto.conf.old
408,410c408,410
< #log_dest file /var/log/mosquitto/mosquitto.log
---
> log_dest file /var/log/mosquitto/mosquitto.log

ไฟล์มีอยู่และเป็นเจ้าของโดยmosquitto:mosquittoผู้ใช้ที่เรียกใช้บริการ

ข้อความที่เป็นประโยชน์มากที่ฉันจะได้รับเมื่อลองใช้การบันทึกคือ:

mosquitto_pub -h localhost -t thisisme -m 5
Error: Connection refused

โดยตอนนี้ฉันแน่ใจว่าบริการตายอย่างเงียบ ๆ

$ sudo service mosquitto status
 mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
   Loaded: loaded (/etc/init.d/mosquitto)
   Active: active (exited) since Fri 2017-01-06 11:16:38 CET; 4min 24s ago
  Process: 2222 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)
  Process: 2230 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)

Jan 06 11:16:38 T-Pi mosquitto[2230]: Starting network daemon:: mosquitto.
Jan 06 11:16:38 T-Pi systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker.

ฉันใช้Raspbian GNU / Linux 8 (เจสซี)ด้วยแพ็คเกจ mosquitto ต่อไปนี้:

libmosquitto1/stable,now 1.3.4-2 armhf [installed,automatic]
mosquitto/stable,now 1.3.4-2 armhf [installed]
mosquitto-clients/stable,now 1.3.4-2 armhf [installed]
python-mosquitto/stable,now 1.3.4-2 all [installed]

ความคิดเห็นเพิ่มเติมขอข้อมูล:

ls -ld /var /var/log /var/log/mosquitto /var/log/mosquitto/mosquitto.log
drwxr-xr-x 11 root      root       4096 Sep 23 06:02 /var
drwxr-xr-x  8 root      root       4096 Jan  6 21:07 /var/log
drwxr-xr-x  2 mosquitto mosquitto  4096 Jan  5 14:36 /var/log/mosquitto
-rw-r--r--  1 mosquitto mosquitto 14233 Jan  6 21:07 /var/log/mosquitto/mosquitto.log

ไฟล์บันทึกเดียวใน / var / log ที่ได้รับการแก้ไขคือ auth.log จาก sudo ของฉัน

ฉันทำอะไรผิด


มีอะไรที่เขียนถึง/var/log/mosquitto/mosquitto.logเลยหรือไม่?
Aurora0001

1
@ Aurora0001 ไม่มีอะไรเกี่ยวข้องกับความพยายามในการเชื่อมต่อนั้นไม่ใช่
Helmar

ระบบปฏิบัติการอะไร Mosquitto รุ่นใด
Ghanima

@Ghanima เพิ่มข้อมูล
Helmar

คุณสามารถลองย้อนกลับเป็นไฟล์กำหนดค่าเก่าและตรวจสอบได้หรือไม่ โง่มาก: ตรวจสอบบันทึกสถานะ
mosquitto

คำตอบ:


8

วิธีหนึ่งในการแก้ไขข้อบกพร่องนี้คือการเรียกใช้ mosquitto ด้วยตนเองโดยใช้ตัวเลือกเดียวกับที่ระบบ init ของคุณใช้แล้วดูผลลัพธ์ ตัวอย่างเช่น:

mosquitto -v -c <path to config file>

การเพิ่ม-vจะช่วยให้แน่ใจว่าคุณมีการบันทึกอย่างละเอียดโดยไม่คำนึงถึงการตั้งค่าไฟล์ปรับแต่ง


3
นั่นช่วยได้ชัดว่ามี mosquitto.conf ตัวที่สองใน / etc / mosquitto ซึ่งรวมถึงอันที่ฉันใช้ใน /etc/mosquitto/conf.d/ ไฟล์แรกนั้นมีไฟล์บันทึกมาตรฐานตั้งไว้แล้ว ดังนั้นการสร้างข้อผิดพลาด: ซ้ำค่า "log_dest ไฟล์" ซึ่งทำให้บริการไม่สามารถเริ่มทำงานได้อย่างถูกต้อง อย่างใดข้อผิดพลาดที่ไม่ได้รับเมื่อใช้บริการปกติเริ่มต้นประจำ
Helmar

6

บน Arch Linux (4.4.37-1-ARCH) ด้วยmosquitto 1.4.10-2และ logfile / path ที่มีอยู่พร้อมด้วยสิทธิ์ฉันไม่สามารถทำซ้ำข้อผิดพลาดนี้ได้

/var/log/mosquitto $ ls -l
-rw-r--r-- 1 mosquitto root 7832 Jan 5 18:15 mosquitto.log

หากสิทธิ์ของ logfile นั้นแตกต่างกันไปหรือไม่มีอยู่จริงและการอนุญาตของไดเรกทอรีไม่อนุญาตให้ mosquitto เขียนมันการเริ่มต้นโบรกเกอร์ daemon ล้มเหลว ซึ่งกว่าจะนำไปสู่การError: Connection refusedเผยแพร่หรือการสมัครหัวข้อ อย่างน้อยการบริการไม่ได้ตายอย่างเงียบ ๆ แต่ประกาศอย่างดีใน syslog

ในระยะสั้นกับไดเรกทอรีที่/var/log/mosquittoเป็นเจ้าของและเขียนโดยผู้ใช้ mosquitto log_dest file [...]บรรทัดใน config ของ mosquitto ทำงานได้ดี


6

ไดเร็กทอรี / ไฟล์บันทึกควรเป็นเจ้าของโดยmosquittoผู้ใช้หรือผู้ใช้ที่คุณได้ตั้งค่าในไฟล์ conf และกลุ่ม ฉันลองด้วยไฟล์ conf สองไฟล์ไฟล์เดียวโดยที่ไม่ได้ใช้log_dest file /var/log/mosquitto/mosquitto.logและอีกไฟล์หนึ่งที่มีปลายทางสำหรับบันทึกไฟล์

บนเซิร์ฟเวอร์ของฉัน Mosquitto กำลังทำงานกับmosquittoผู้ใช้

ด้วยlog_dest file /var/log/mosquitto/mosquitto.logเป็นของrootผู้ใช้ไม่ทำงานกับข้อผิดพลาดสถานะการบริการ นี่อาจเป็นกรณีสำหรับคุณด้วย ตรวจสอบservice statusหลังจากที่คุณเพิ่ม log_dest

ฉันพยายามเปลี่ยนกรรมสิทธิ์ของโฟลเดอร์/var/log/mosquittomosquitto

sudo chown -R mosquitto:mosquitto /var/log/mosquitto

จากนั้นเริ่มให้บริการ มันใช้งานได้ดีตอนนี้


ฉันเคยเป็นเจ้าของไฟล์มาก่อนตอนนี้ฉันสร้างกลุ่มขึ้นมาและเปลี่ยนการอนุญาตตามที่แนะนำ แต่ไม่มีโชค
Helmar

@Helmar อืม! มันแปลก ๆ. หลังจากที่คุณเปลี่ยนกลุ่มคุณได้รีสตาร์ทหรือเริ่มบริการหรือไม่
bravokeyl

@Helmar คุณสามารถตรวจสอบอีกครั้งว่า (คุณได้สร้าง) ไดเรกทอรีปลายทางของบันทึกอยู่หรือไม่
bravokeyl

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