Ubuntu 16.04에서 시작할 때 Mosquitto MQTT 브로커를 시작하는 방법


10

우분투 16.04에서 Mosquitto MQTT Broker를 실행하려고합니다. 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하면 모기가로드되었지만 활성화되지 않은 것으로 표시됩니다.

[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.service. 이제 오류 종료 코드는 다음과 같습니다.

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)에 넣고 즐기십시오 .


정기적 인 시스템 서비스를 통해 다음을 수행 할 수 있습니다.

  • systemctl status mosquitto 현재 상태를 볼 수
  • sudo systemctl (start|stop) mosquitto 현재 세션의 상태를 변경
  • sudo systemctl (enable|disable) mosquitto 시작 상태 변경 (현재 상태에 영향을주지 않고)

그 파일은 어떻게 모기가 달린다는 것을 알려줍 -c option니까?
Petrus Theron

@PetrusTheron 그것이 인자로 /etc/init.d/mosquitto파일 에서 일어나는 일입니다 start.
Mihail Malostanidis

/etc/mosquitto/conf.d디렉토리 내부의 구성 이 무시되는 것 같습니다. 어떻게 재생성 /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

모기가 달리고 있는지 확인하십시오 :

ps -aux | grep mosquitto

그리고 당신은 default.conf에 이것을 가지고 있습니다 :

listener 1883
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.