Web Appの作成と設定
MQTT PublisherとなるWebアプリはPHPで実装されていますので、こちらをAzureのサービスであるAzure App Serviceで簡単にセットアップして、動作させてみましょう。
まずは、Azureポータルを開き、「全てのリソース」→「+追加」ボタンを押してWeb Appを新規で追加します。

次に、アプリ一覧ページでマイクロソフト公式の「Web App」を選択します。アイコンが表示されない場合は、検索バーで「Web App」と入力し、検索します。
以下の情報でDockerコンテナーを作成します。
- アプリ名:ユニーク(一意)となるアプリ名
- リソースグループ:新規作成
- OS:Linux
- ランタイムスタック:PHP5.6

注意
アプリ名は、「http://アプリ名.azurewebsites.net/」のようにサブドメインのURLとして使用されるため、ユニーク(一意)である必要があります。
作成ボタンを押した後、数分程度でDockerコンテナー環境がデプロイされます。
料金プランについて
Web Apps のデプロイ時、料金プランはデフォルトの「S1 Standard」が適用されています。必要に応じて変更して下さい。
今回は最安価の「B1 Basic」プランを適用することをおすすめします。適用方法については、「App Service」→ 「スケールアップ」→「価格レベルを選択」で適用したい価格レベルを選択し、「選択」ボタンをクリックします。


Web SSHの起動
Dockerコンテナーへ簡単にアクセスするために、WebブラウザーからSSHができるツール「Web SSH」を使います。「App Service」→「開発ツール」→「SSH」を選択し、移動をクリックします。

Webブラウザー上からSSHできるようになります。

SSHのサポートの詳細については、公式ドキュメントをご確認ください
Gitのインストール
今回作成したWeb Appの、Dockerコンテナーで動作しているLinuxのOSはUbuntuのため、apt-getコマンドを使ってパッケージリストの更新を行います。その後、Gitをインストールします。
# apt-get update # apt-get install git
gitコマンドでWebアプリ用のプログラムをコピーします。そのとき、デフォルトのドキュメントルートとして指定されている/var/www/html配下にコンテンツが格納されるように、コピー先のディレクトリ名を指定します。
その際、/var/www/htmlにデフォルトで用意されているページhostingstart.htmlを削除してから作業します。
# rm /var/www/html/hostingstart.html # git clone https://github.com/manami-taira/mqtt-xmas-tree-webapp.git /var/www/html
/var/www/htmlのディレクトリに以下のファイルが配置されていたら成功です。
# ls -1 /var/www/html LICENSE README.md buttons.css index.php phpMQTT.php test_publisher.php title.png
MQTT Brokerについては、今回はEclipse Foundationが無償で公開しているSandboxを使用します。そのため、サンプルプログラムindex.phpの、MQTT Brokerとして指定されているURLをSandboxのURLに変更します。
viコマンドでindex.phpを開き、URLをSandboxのURLであるiot.eclipse.orgに変更します。
# vi /var/www/html/index.php
$mqtt = new phpMQTT("example.com", 1883, "Xmas Tree WebApp");
↓
$mqtt = new phpMQTT("iot.eclipse.org", 1883, "Xmas Tree WebApp");
Sandbox使用時の注意点
今回は「まずは動かしてみる」観点からSandboxを使用しています。SandboxのURLであるiot.eclipse.orgは、あくまでもテスト目的のためのMQTT Brokerです。もしテスト利用ではなく、恒久的に使用したい場合、Active MQなどのMQTT Brokerを別途準備してください。
Sandboxを使用するとき、指定したtopicが他のユーザーと同一で、かつ同一タイミングで実行すると、メッセージの送受信に失敗する恐れがあります。そのためtopic名は必要に応じて変更してください。今回、topic名はtreeにしています。こちらを適宜変更して下さい。
また、今回使用したEclipseのMQTT Brokerの詳細については以下をご覧下さい(Sandboxを無償で提供している性質上、予告なくメンテナンスが入り繋がらなくなることがありますのでご注意ください)。
