Ubuntu 16.04で起動時にMosquitto MQTTブローカーを起動するにはどうすればよいですか?


10

Ubuntu 16.04でMosquitto MQTTブローカーを実行しようとしています。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.service。エラー終了コードは次のとおりです。

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

回答:


9

にインストールすると、スクリプトsudo apt install mosquitto16.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 スタートアップの動作を変更する(現在の状態に影響を与えない)

そのファイルは、蚊が実行されていることをどのように伝えます-c optionか?
Petrus Theron 2018

@PetrusTheron /etc/init.d/mosquittostart引数を持つファイルで何が起こるかです。
Mihail Malostanidis 2018

/etc/mosquitto/conf.dディレクトリ内の私の設定は無視されているようです。どうすれば再生でき/run/systemd/generator.late/mosquitto.serviceますか?
クリス

@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.