Làm cách nào để tôi khởi động môi giới Mosquitto MQTT khi khởi động trong Ubuntu 16.04


10

Tôi đang cố gắng chạy một Nhà môi giới Mosquitto MQTT trên Ubuntu 16.04. Tôi có hướng dẫn từ 14.04, nhưng vì 16.04 không còn sử dụng khởi động, tôi không thể tìm ra cách chuyển đổi sang systemd.

Dưới đây là các lệnh cho 14.04:

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

BIÊN TẬP:

Đây là những gì tôi đã nhận được cho đến nay. Khi tôi khởi động lại và chạy, systemctl status mosquitto.servicetôi cho thấy mosquitto đã được tải nhưng không hoạt động:

[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. Bây giờ mã thoát lỗi là:

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

Câu trả lời:


9

Cài đặt sudo apt install mosquittotrên 16.04thêm /etc/init.d/mosquittotập lệnh. systemd sử dụng tập lệnh đó để tạo /run/systemd/generator.late/mosquitto.servicevà đây là những gì nó nói:

# 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

Nhìn vào bên trong /etc/init.d/mosquittocho chúng ta biết rằng

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf đã được chạy theo mặc định

Vì vậy, chỉ cần đặt cấu hình của bạn vào /etc/mosquitto/conf.d(được tham chiếu bởi mosquitto.conf) và tận hưởng .


Là một dịch vụ systemd thông thường, bạn có thể:

  • systemctl status mosquitto để xem trạng thái hiện tại của nó
  • sudo systemctl (start|stop) mosquitto để thay đổi trạng thái cho phiên hiện tại
  • sudo systemctl (enable|disable) mosquitto để thay đổi hành vi khởi động (không ảnh hưởng đến trạng thái hiện tại)

Làm thế nào để tập tin đó cho bạn biết rằng mosquitto đang được chạy với -c option?
Petrus Theron

@PetrusTheron đó là những gì xảy ra trong /etc/init.d/mosquittotệp với startđối số.
Mihail Malostanidis

Cấu hình của tôi bên trong /etc/mosquitto/conf.dthư mục dường như bị bỏ qua. Làm thế nào tôi có thể tái sinh /run/systemd/generator.late/mosquitto.service?
chris

@chris có lẽ nó không được tham khảo /etc/mosquitto/mosquitto.conf? Cái gì trong đó?
Mihail Malostanidis

0

Tập tin ExecStart=và đơn vị của bạn WorkingDirectory=là hoàn toàn sai. Bạn đang cố gắng bắt đầu một tệp cấu hình, sử dụng tệp thực thi (!) Làm thư mục làm việc của nó?

Nếu tôi hiểu chính xác, tệp đơn vị thích hợp sẽ là:

[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

Ngoài ra, vui lòng không khởi động và kích hoạt thiết bị. Đọc câu trả lời tương tự của tôi về điều này:


0

Hãy chắc chắn rằng bạn có mosquitto đang chạy:

ps -aux | grep mosquitto

Và bạn có cái này trong default.conf :

listener 1883
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.