MQTT Centos 7インストール

6601 ワード

MQTT Centos 7インストール
1枚目の取り付け
リソースパッケージのダウンロード
# wget https://mosquitto.org/files/source/mosquitto-1.6.7.tar.gz      
# tar zxvf mosquitto-1.6.7.tar.gz
# mv mosquitto-1.6.7 /usr/local/mosquitto-1.6.7


MQTT運転依存環境のインストール
次の3つはインストールする必要があります.そうしないと、make時に通過できません.MQTTをインストールする前にtxtファイルは公式の説明を読んでください.
# yum -y install openssl-devel
# yum -y install gcc-c++
# yum -y install cmake

    
# yum install -y c-ares-devel
# yum install -y uuid-devel 
# yum install -y libuuid-devel
# yum install -y libwebsockets  //yum     ,       

configを修正する.mkプロファイル
# cd /usr/local/mosquitto-1.6.7
# vim config.mk
     yes,     #   ,    。

WITH_SRV:=yes

WITH_WEBSOCKETS:=yes

WITH_ADNS:=yes

コンパイルインストール
# make
# make install

以上で#makeを実行した場合、エラーを報告しなければ、以下の説明をスキップします.エラーが発生した場合:mosquitto.c:49:29: fatal error: libwebsockets.h: No such file or directory
では、libwebsocketsがインストールされていないことを説明します.#yum remove libwebsocketsをアンインストールし、新しいソースパッケージをダウンロードしてインストールします.手順は以下のとおりです.
ソースパッケージリンク:https://github.com/warmcat/libwebsockets私たちはzipダウンロードリンクをコピーするバージョンを選択しました.ここで私が選んだのは1.5バージョンです.
# wget https://github.com/warmcat/libwebsockets/archive/v1.5-stable.zip   
# yum -y install unzip
# unzip v1.5-stable.zip            
# mkdir -p /usr/local/websocket
# mv libwebsockets-1.5-stable /usr/local/websocket
# cd /usr/local/websocke/libwebsockets-1.5-stable
# cmake .
# make
# make install

以上ibwebsocketsのインストールを実行した後、MQTT#cd/usr/local/mosquitto-1.6.7#make#make installのインストールを再コンパイルする3つのコマンドが前にリストされています.
テスト
    :

groupadd mosquitto
useradd -g mosquitto mosquitto

    :
mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf

    :
mosquitto -c /etc/mosquitto/mosquitto.conf -d
     1883


              ,   (  )    :
mosquitto_sub -t hello

   (  )    :
mosquitto_pub -t hello -h localhost -m "hello world"


MQTTエラー解決の起動
  • エラーメッセージ:mosquitto:error while loading shared libraries:libwebsockets.so.5: cannot open shared object file: No such file or directory

  • 解決方法:whereisを使用してlibwebsocketsを検索できます.so.5の経路は、/usr/libの下にソフトリンクを確立すればよい.
    # ln -s /usr/local/lib/libwebsockets.so.5 /usr/lib/libwebsockets.so.5
    # ldconfig
    
  • エラーメッセージmosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
  • ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
    ldconfig
    

    mosquitto再起動
    1、  mosquitto   
    ps -aux | grep mosquitto
     
    2、    
    kill -9 18248
     
    3.  mosquitto
    mosquitto -c /etc/mosquitto/mosquitto.conf -d
    

    ユーザー名パスワードの設定
    開くconfファイル、allow_を見つけますanonymousノード、このノードの役割は、匿名のユーザーログインを開くかどうか、デフォルトはtrueです.この構成を開いて(前の#番号を削除して)値をtrueに変更します.
       :#allow_anonymous
       :allow_anonymous false
    

    password_が見つかりましたfileノード、このノードは、サーバが構成するユーザーがどこに保存されるかを示すノードです.この構成を開き、pwfileを指定します.exampleファイルパス
       :#password_file
       :password_file /etc/mosquitto/pwfile
    

    ユーザー名とパスワードを作成し、コマンドウィンドウを開いて次のコマンドを入力します.
    mosquitto_passwd -c /etc/mosquitto/pwfile admin
              、    。    : -c        /etc/mosquitto/pwfile         pwfile   、admin     
    

    権限の設定
    開くconfファイル、password_を見つけますfileノード
       :#acl_file
       :acl_file /etc/mosquitto/aclfile
    

    認証構成pwfile、なければファイルを作成
    # This affects access control for clients with no username.
    topic read $SYS/#
    
    # This only affects clients with username "roger".
    user roger
    topic foo/bar
    
    # This affects all clients.
    #pattern write $SYS/broker/connection/%c/state
    #admin    hello topic
    user admin
    topic hello/#
    
    #bing     
    user bing
    topic read hello/#
    
    mosquitto_sub -t hello -h 127.0.0.1 -u admin -P admin@123
    mosquitto_pub -t hello -h localhost -m "hello world" -u admin -P admin@123
    

    第2の方法
    EPELライブラリの追加
    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    
    

    EPELインストール結果の表示
    yum repolist all | grep enabled
    
    

    Mosquittoのインストール
       mosquitto    :yum list all | grep mosquitto
       mosquitto   : yum info mosquitto
       mosquitto    : yum install mosquitto
          :yum list installed | grep mosquitto
    
    

    Mosquittoのテスト
       mosquitto    :mosquitto
        ssh  ;  》    :mosquitto_sub -t test
        ssh  ;  》    :mosquitto_pub -t test -h localhost -m "hello, world"
              :hello, world
    
    

    ブートブートブートmosquitto
       mosquitto   :find / -iname mosquitto* | grep service
       mosquitto   :systemctl enable mosquitto.service
       mosquitto   :systemctl start mosquitto.service
       mosquitto   :systemctl status mosquitto.service
        :ps -aux | grep mosquitto
       CentOS:reboot,   mosquitto         :systemctl list-units | grep mosquitto
    
    

    mosquitto_pubコマンドパラメータ説明
  • -d印刷debug情報
  • -f指定ファイルの内容を送信メッセージの内容
  • とする.
  • -h接続するドメイン名を指定するデフォルトはlocalhost
  • です.
  • -iどのクライアントIdのユーザにメッセージを送信かを指定する
  • .
  • -IどのclientId接頭辞のユーザにメッセージ
  • を送信かを指定する.
  • -mメッセージ内容
  • -nは、nullメッセージ
  • を送信する
  • -p接続ポート番号
  • -q指定QoSの値(0,1,2)
  • -t指定topic
  • -u指定brokerアクセスユーザ
  • -P brokerアクセスパスワード
  • を指定
  • -V指定MQTTプロトコルバージョン
  • –will-payloadは、クライアントがbrokerと予期せぬ接続を切断したときに発行されるメッセージを指定します.このパラメータは、-will-topicとともに
  • を使用する必要があります.
  • –will-qos WillのQoS値.このパラメータは、-will-topicとともに
  • を使用する必要があります.
  • –will-retainは、Willメッセージがretainメッセージとして扱われることを指定する(すなわち、メッセージがブロードキャストされた後、メッセージが保持される).このパラメータは、-will-topicとともに
  • を使用する必要があります.
  • –will-topicユーザーWillメッセージを送信するtopic
  • mosquitto_subコマンドパラメータ説明
  • -cは、「clean session」を無効な状態に設定し、サブスクリプション状態を維持し続け、接続が失われても、再接続すれば受信可能な切断期間中に送信されるメッセージを保持する.
  • -d印刷debug情報
  • -h接続するドメイン名を指定するデフォルトはlocalhost
  • です.
  • -i指定clientId
  • -I指定clientIdプレフィックス
  • -k keepaliveは一定時間おきにPINGメッセージをbrokerに通知し、まだ接続状態にある.デフォルトは60秒です.
  • -q QoSを受信したい理由を指定するメッセージのデフォルトQoSは0
  • である.
  • -R古いメッセージを表示しない
  • -t購読topic
  • -v印刷メッセージ
  • –will-payloadは、クライアントがbrokerと予期せぬ接続を切断したときに発行されるメッセージを指定します.このパラメータは、-will-topicとともに
  • を使用する必要があります.
  • –will-qos WillのQoS値.このパラメータは、-will-topicとともに
  • を使用する必要があります.
  • –will-retainは、Willメッセージがretainメッセージとして扱われることを指定する(すなわち、メッセージがブロードキャストされた後、メッセージが保持される).このパラメータは、-will-topicとともに
  • を使用する必要があります.
  • –will-topicユーザーWillメッセージを送信するtopic