¿Cómo inicio el agente Mosquitto MQTT al inicio en Ubuntu 16.04?

10

Estoy tratando de ejecutar un Broker Mosquitto MQTT en Ubuntu 16.04. Tengo instrucciones de 14.04, pero como 16.04 ya no usa el inicio, no puedo entender cómo convertir a systemd.

Aquí están los comandos para 14.04:

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

EDITAR:

Esto es lo que llegué hasta ahora. Cuando reinicio y ejecuto systemctl status mosquitto.service, muestro que mosquitto está cargado pero no activo:

[Unit]
Description=Mosquitto MQTT Broker

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

[Install]
WantedBy=multi-user.target

EDITAR 2:

Ran sudo systemctl enable mosquitto.service. Ahora el código de salida de error es:

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

Respuestas:

9

Instalar sudo apt install mosquittoen 16.04agrega el /etc/init.d/mosquittoscript. systemd usa ese script para generar /run/systemd/generator.late/mosquitto.service, y esto es lo que dice:

# 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

Mirar adentro /etc/init.d/mosquittonos dice que

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf ya se ejecuta por defecto

Así que solo pon tu configuración en /etc/mosquitto/conf.d(referenciada por mosquitto.conf) y disfruta .


Al ser un servicio regular de systemd, puede:

  • systemctl status mosquitto para ver su estado actual
  • sudo systemctl (start|stop) mosquitto para cambiar el estado de la sesión actual
  • sudo systemctl (enable|disable) mosquitto cambiar el comportamiento de inicio (sin afectar el estado actual)
Mihail Malostanidis
fuente
¿Cómo le dice ese archivo que se está ejecutando el mosquitto -c option?
Petrus Theron
@PetrusTheron eso es lo que sucede en el /etc/init.d/mosquittoarchivo con el startargumento.
Mihail Malostanidis
Mi configuración dentro del /etc/mosquitto/conf.ddirectorio parece ser ignorada. ¿Cómo puedo regenerarme /run/systemd/generator.late/mosquitto.service?
Chris
@ Chris tal vez no se hace referencia en /etc/mosquitto/mosquitto.conf? ¿Que hay ahi?
Mihail Malostanidis
0

El archivo ExecStart=y las WorkingDirectory=líneas de su unidad están completamente equivocados. ¿Está tratando de iniciar un archivo de configuración, utilizando el archivo ejecutable (!) Como su directorio de trabajo?

Si entiendo correctamente, el archivo de unidad apropiado sería:

[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

Además, no mezcle el inicio y la activación de la unidad. Lea mis respuestas similares sobre esto:

intelfx
fuente
0

Asegúrese de tener mosquitto funcionando:

ps -aux | grep mosquitto

Y tienes esto en default.conf :

listener 1883
Ismail Yavuz
fuente