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機能を無料の枠内で使えるのでとても便利です。