Mosquittoインストール構成と使用マニュアル


目次
0 MQTTプロトコル
1コンパイルとインストール
1.1 Download source code
1.2設置
1.2.1ソースコードのインストール
1.2.2バイナリインストール
1.3運転開始
システム起動
手動起動
2構成
2.1セキュリティ構成
3テストツール
MosquittoはオープンソースのC実装のMQTTサーバとクライアントである.ここではMosquittoのubuntu 18について説明する.04システム上のコンパイル、インストール、構成、使用.
0 MQTTプロトコル
MQTTプロトコルはすでに5.0バージョンに達しており、各バージョンのプロトコル内容は以下のように取得できます.
 
MQTT 3.1.1
中国語版http://mqtt.p2hp.com/mqtt311
英語版http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
 
MQTT 5.0
中国語版http://mqtt.p2hp.com/mqtt-5-0
英語版https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html
 
v3.1.1およびv 5.0の差
https://github.com/Youjingyu/mqtt.github.io/wiki/v3.1.1%E5%92%8Cv5.0%E4%B9%8B%E9%97%B4%E7%9A%84%E5%B7%AE%E5%BC%82
 
1コンパイルとインストール
1.1 Download source code
http://mosquitto.org/download/
https://github.com/eclipse/mosquitto
libwebsockets: git clone https://libwebsockets.org/repo/libwebsockets
or git clone https://github.com/warmcat/libwebsockets.git
1.2設置
1.2.1ソースコードのインストール
ダウンロードhttp://mosquitto.org/download/
ダウンロード解凍:tar-xzvf mosquitto-1.6.9.tar.gz
ディレクトリの下で直接実行:cd mosquitto-1.6.9; makeでいい
# Comment out to remove publishing of the $SYS topic hierarchy containing

# information about the broker state.

WITH_SYS_TREE:=yes

# Build with systemd support. If enabled, mosquitto will notify systemd after

# initialization. See README in service/systemd/ for more information.

WITH_SYSTEMD:=no

# Build with SRV lookup support.

WITH_SRV:=no

# Build with websockets support on the broker.

WITH_WEBSOCKETS:=no

# Use elliptic keys in broker

WITH_EC:=yes

# Build man page documentation by default.

WITH_DOCS:=yes

コンパイルオプションを変更する場合は、mosquittoがwebsocketをサポートするなど
configを変更できます.mk,再make
Websocketをサポートするには、コンパイル時にエラーが表示されます.
mosquitto.c:49:12: fatal error: libwebsockets.h: No such file or directory
 #  include
この場合libwebsocketsパッケージが不足しているため、libwebsocketsをインストールする必要があります.
git clone https://libwebsockets.org/repo/libwebsockets
 
1.2.2バイナリインストール
ソースコードのインストールが煩雑で、直接バイナリでインストールできます.
Ubuntu 18.04を例にとります.
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients
 
1.3運転開始
Binary:/usr/sbin/mosquito
Configuration file:/etc/mosquitto/mosquitto.conf
Systemd file:/lib/systemd/system/mosquitto.service
 
システム起動
インストールが完了したら、コマンドsystemctl status mosquittoを実行し、以下の出力があればインストールに成功したことを示します.
> systemctl status mosquitto
● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
   Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-04-20 13:25:31 CST; 4min 24s ago
     Docs: man:mosquitto.conf(5)
           man:mosquitto(8)
 Main PID: 4487 (mosquitto)
    Tasks: 1 (limit: 4915)
   CGroup:/system.slice/mosquitto.service
           └─4487/usr/sbin/mosquitto -c/etc/mosquitto/mosquitto.conf
4月20 13:25:31 robin systemd[1]:Starting Mosquitto MQTT v 3.1/v3.1.1 Broker...
4月20 13:25:31 robin systemd[1]:Started Mosquitto MQTT v 3.1/v3.1.1 Broker
手動起動
mosquitto -c/etc/mosquitto/mosquitto.conf -d
 
-c:プロファイルの指定-d:バックグラウンドで実行
2構成
プロファイルは/etc/mosquitto/ディレクトリの下に配置されます.
実行可能:man 5 mosquitto.conf完全な構成説明を表示
構成パラメータはたくさんあります.本人はすでに中国語に翻訳しました.以下から完全な中国語翻訳バージョンを得ることができます.
https://blog.csdn.net/lclfans1983/article/details/105670039
https://blog.csdn.net/lclfans1983/article/details/105670288
https://blog.csdn.net/lclfans1983/article/details/105680528
2.1セキュリティ構成
/etc/mosquitto/conf.d$robotを作成conf
#       

allow_anonymous false

#     

password_file /etc/mosquitto/pwfile

#     

acl_file /etc/mosquitto/aclfile

パスワードファイルの作成
$ sudo touch/etc/mosquitto/pwfile
 
パスワードファイルへのユーザーの追加
$ sudo mosquitto_passwd/etc/mosquitto/pwfile inspectRobot1
パスワードを2回入力させます.この例ではfoa 123と入力します.
$ sudo mosquitto_passwd -b/etc/mosquitto/pwfile usr1 usr1
$ sudo mosquitto_passwd -b/etc/mosquitto/pwfile usr2 usr2
 
 
権限プロファイルの作成
     sudo touch/etc/mosquitto/aclfile
以下を追加
# usr1     test      ,   $SYS          

user usr1

topic write test/#

topic read $SYS/#



# usr2     test      

user usr2

topic read test/#

$mosquitto_を実行します.sub-h localhost-t「test/#」-i「client 1」は以下のエラーを報告します.
Connection error: Connection Refused: not authorised.
mosquitto_sub -h localhost -t "test/#"-u inspectRobot1 -P foa123 -i "client1"
mosquitto_pub -h localhost -t "test/abc"-u usr1 -P usr1 -i "client2"-m "How are you?"
 
3テストツール
mosquitto_pub:メッセージのパブリッシュ
mosquitto_sub:メッセージの購読
一般的なパラメータの説明:
パラメータ
説明
-h
サーバホスト、デフォルトlocalhost
-t
トピックの指定
-u
ユーザー名
-P
パスワード
-i
クライアントid,ユニーク
-m
公開されたメッセージの内容
 
 
mosquitto_sub -h localhost -t "test/#"-u usr1 -P usr1 -i "client1"
mosquitto_sub -h localhost -t "test/#"-i "client1"
mosquitto_pub -h localhost -t "test/abc"-u usr2 -P usr12 -i "client3"-m "How are you?"
mosquitto_pub -h localhost -t "test/abc"-i "client3"-m "How are you?"
 
パブリッシュ:
mosquitto_pub -h localhost -t "test/abc"-i "client3"-m "{\"header\":123,\"data\":{\"co\":0.002,\"o2\":23.0}}"
購読結果:
{"header":123, "data":{"co":0.002, "o2":23.0}}
 
Reference:
https://www.jianshu.com/p/9e3cb7042a2e