azure上にlaravelを構築

<App Serviceの環境設定>
プラン:Free: 0 S
PHP のバージョン:7.2
HTTP バージョン:2.0
mysql:MySQL In App
拡張機能:Composer

今回、使うのは、App Serviceのみです。(Freeプラン)

<MySQL In App>
MySQLのポート番号、ID、パスワードはこちらのファイルを参照下さい。
D:\home\data\mysql\MYSQLCONNSTR_localdb.txt

確認するにはポータルからApp Serviceの
「高度なツール」移動をクリック ⇒「Debug console」プルダウン CMD を選択
でDOS窓が使えます。

<laravelの設定>
ローカルで開発したプロジェクトを
D:\home\site\wwwroot
にディレクトリごとコピーします。

laravelプロジェクトのディレクトリごとzipにしてftpsでファイル転送後
zipを解凍。(解凍は、unzipコマンド)

プロジェクト/public/の
index.php と web.config を
D:\home\site\wwwroot
にコピーします。

index.php 2行を編集
require __DIR__.’/プロジェクト/vendor/autoload.php’;
$app = require_once __DIR__.’/プロジェクト/bootstrap/app.php’;

”プロジェクト”の部分は、実際のディレクトリに書き換えて下さい。

それからmysqlの設定を反映
プロジェクト直下にある .env を編集します。

DB_PORT=ポート番号
DB_DATABASE=データベース名
DB_USERNAME=ユーザID
DB_PASSWORD=パスワード

MySQL In Appにデータベースは予め作成しておいて下さい。

設定はこれだけです。
App Serviceを再起動したら完了です。

アクセスするURLは、App Serviceの概要にURLが記載されています。

注意)
MySQL In Appは、サーバにリクエストがないとインスタンスが停止しているみたいですので
初回のレスポンスが少々時間がかかります。
バックアップと復元の機能はStandard または Premium 以上のサービスプランが必要です。

ラズパイとComputer Vision APIと監視カメラ

ラズパイ(Raspberry Pi)とAzureのComputer Vision APIで画像処理を行います。

<今回、用意したもの>
Raspberry Pi Type B 512MB
BUFFALO マイク内蔵320万画素WEBカメラ
※2014年もので、まだまだ現役で使っています。

監視カメラのソフト:motion

<Azure>
App Service(Windows):Free (ディスク領域 1GB)
Cognitive Services  :Free (5,000トランザクション / 月)

motionで動体検知して動画と画像をラズパイに保存。画像のみをメールで送付しています。
(夜間、休日の監視)

motionの動体検知ですが、日差しや影に反応してしまうのでなんとかしたいところでした。
今回、AzureのComputer Vision APIを使って画像に人が写っていないか判定させます。

メールの送付は、ラズパイのcrontabにより画像ファイル(jpg)が、保存されていれば送付する仕様。

Computer Vision APIを使うには画像ファイルをインターネット上の見える場所に保存しないと使えないのでAzure appサービス(Windows)上に置きます。Freeプランであればディスク容量が1Gまで使えます。

<ラズパイのバッチ処理の流れ(bashシェルです)>
・curlコマンドより画像ファイルをAzureへ送信(ftps)。格納ディレクトリも指定しておきます。
・curlコマンドよりAzureに置いたPHPをGET(画像ファイル名を送付)で呼び出す。
  azure側のPHPは、画像ファイル名を受け取り、Computer Vision API 呼び出す。
  画像解析結果はJSONで受け取る。
  JSONデータを読み込み、人を表すタグが存在した場合、’person’ を出力する。
  人を表すタグがなければ、画像ファイルを削除する。
・上記の処理結果が’person’であれば、画像ファイルをメールで送付する。

Computer Vision APIのパタメータ
‘visualFeatures’ => ‘Description’
を使いました。

こんな感じでAzure機能を無料の枠内で使えるのでとても便利です。

Azureのアカウント切り替え

同じメールアドレスで個人アカウントと組織アカウントを作成した場合、
ログイン時に切り替えが必要です。

Microsoft Azure Portal からログイン
https://azure.microsoft.com/ja-jp/features/azure-portal/

︙の部分をクリックして「破棄」を選択。「Microsoft Azure にサインインする」画面に切り替わるので再度メールアドレスを入力する。

どちらかのアカウントを選択できるようになります。

Azure AD とテナント

Azure AD:Azure Active Directory

テナントは、Azure AD のインスタンスです。
Azureアカウントを作成するとAzure ADが自動的に作成されます。

もし、会社のメールアドレスでAzureのアカウントを作成。
その後、PowerBIを使うので同じメールアドレスでアカウントを作成すると
組織アカウントとして作成される。
その時、組織アカウント用のAzure ADが作成されます。

同じメールアドレスで、それぞれ別々のAzure ADが作成されることになります。

同じメールアドレスですが
ログイン時に選んでログインすることになります。
ご注意下さい。

Azure AD ディレクトリの管理
https://docs.microsoft.com/ja-jp/azure/active-directory/active-directory-administer

Azureのサブスクリプション

subscription
単語の意味としては、「購読、加入、予約、申し込み」ですね。

Azure サブスクリプションとは
https://docs.microsoft.com/ja-jp/azure/architecture/cloud-adoption-guide/adoption-intro/subscription-explainer

マイクロソフト オンライン サブスクリプション契約
https://azure.microsoft.com/ja-jp/support/legal/subscription-agreement/

8. 定義より
「サブスクリプション」とは、
ポータルに定める一定のサブスクリプション期間についてのオンラインサービスの加入契約を意味します。
お客様は、複数のサブスクリプションを購入することができます。
これらのサブスクリプションは個別に管理される場合があり、別途のマイクロソフト オンライン サブスクリプション契約の条件が適用されます。

Azureのアカウント作成と削除

アカウント作成する前に知っておくこと
Azureのアカウントには2種類存在します。

Microsoft アカウント (個人ユーザー向け)
https://www.microsoft.com/ja-jp/msaccount/signup/own.aspx

組織アカウント(企業または教育機関で使用するために管理者が発行)
どちらのアカウントを使用するか確認してから作成。
なのですが、組織アカウントのアカウント作成の入り口が不明です。
私の場合、PowerBIでアカウントを作成したら組織アカウントも作成されました。

組織アカウントを作成する場合(PowerBIと併用する場合)、代表となるメールアドレスを準備しておく。

準備しておくものは、こちらです。
・メールアドレス
・電話番号、クレジットカード番号 ← 本人確認に使用されます

削除については、こちらの記事をご参照下さい。
https://blogs.msdn.microsoft.com/dsazurejp/2017/10/12/azureaccountremove/

Azure アカウントとは についても記載されています。
https://blogs.msdn.microsoft.com/dsazurejp/2017/10/12/azureaccountremove/#whataccount