AppService クイックスタート azコマンド編

スポンサーリンク

Microsoft AzureのAppServiceは .NET、.NET Core、Node.js、Java、Python、PHPを動作させる事ができるプラットフォームです。いわゆるサーバレスのアーキテクチャでOSに対してログインする事はできませんので、ストレージ層と疎結合になっている事が使用上の前提条件です。このページでは、AppServiceをazコマンドで操作する方法をまとめます。

AppService

デプロイ用ユーザの作成

以下のコマンドでデプロイ用ユーザを作成します。ユーザ名はAzureで一意な名前を指定する必要がありますので、「user01」のような他の人が使ってそうな名前は使用できません。パスワードは長さが8文字以上で、文字、数字、記号のうち2つを含む必要があります。

az webapp deployment user set \
  --user-name <username> \
  --password <password>

実行例は以下の通りです。

admin@mac19 ~ % az webapp deployment user set \
  --user-name gokatei03_user \
  --password P@ssw0rd1234
{
  "id": null,
  "kind": null,
  "name": "web",
  "publishingPassword": null,
  "publishingPasswordHash": null,
  "publishingPasswordHashSalt": null,
  "publishingUserName": "gokatei03_user",
  "scmUri": null,
  "systemData": null,
  "type": "Microsoft.Web/publishingUsers/web"
}

リソースグループの作成

以下のコマンドでリソースグループを作成します。

az group create --name myResourceGroup --location japaneast

AppServiceプランの作成

以下のコマンドでAppServicePlanを作成します。

az appservice plan create \
  --name myAppServicePlan \
  --resource-group myResourceGroup \
  --sku FREE \
  --is-linux

AppServiceの作成

以下のコマンドでAppServiceを作成します。–nameはAzureで一意な名前を入力します。「sample01」のような誰かが使ってそうな名前はerrorになります。

引数–runtimeで指定するランタイムは「az webapp list-runtimes」コマンドで指定可能なランタイム一覧を調査する事ができます。–deployment-local-gitはローカルのgitからデプロイする場合の指定です。ローカルのgit以外を使用する方法は、公式ドキュメントの「Azure App Service の CLI サンプル」の実装例などを参照ください。

az webapp create \
  --resource-group myResourceGroup \
  --plan myAppServicePlan \
  --name <app-name> \
  --runtime 'PHP|7.4' \
  --deployment-local-git

操作例は以下の通りです。ログ出力される「deploymentLocalGitUrl」や「enabledHostNames」は後続の操作で使用するので、メモに控えてください。

admin@mac19 ~ % az webapp create \
  --resource-group myResourceGroup \
  --plan myAppServicePlan \
  --name gokatei03-app \
  --runtime 'PHP|7.4' \
  --deployment-local-git
Local git is configured with url of 'https://gokatei03_user@gokatei03-app.scm.azurewebsites.net/gokatei03-app.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "clientCertExclusionPaths": null,
  "clientCertMode": "Required",
  "cloningInfo": null,
  "containerSize": 0,
  "customDomainVerificationId": "327A85F857F2C6D6ADE2FCDBE11E225065D369A1D0CCFA26C79E0674E5C91EBC",
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "gokatei03-app.azurewebsites.net",
  "deploymentLocalGitUrl": "https://gokatei03_user@gokatei03-app.scm.azurewebsites.net/gokatei03-app.git",
  "enabled": true,
  "enabledHostNames": [
    "gokatei03-app.azurewebsites.net",
    "gokatei03-app.scm.azurewebsites.net"
  ],

「enabledHostNames」欄に出力されたホスト名をブラウザに入力します。このページの操作例の場合ならば「gokatei03-app.azurewebsites.net」をブラウザに入力します。

まだ、アプリケーションがデプロイされる前ですので、マイクロソフトが用意したサンプルページが表示されます。

AppService作成済の確認 01

サンプルアプリケーション

サンプルアプリケーションの作成

index.htmlとinfo.phpのみの単純なPHPアプリケーションを作成します。操作例は以下の通りです。

mkdir app_service_sample_01
cd app_service_sample_01

cat << EOF > index.html
this is top page
EOF

cat << EOF > info.php
<?php
  phpinfo();
EOF

サンプルアプリケーションの動作確認

phpコマンドを用いて簡易的にhttpサーバを起動します。

php -S localhost:8080

「http://localhost:8080/index.html」と「http://localhost:8080/info.php」をブラウザに入力し、Webページが表示される事を確認します。

local phpの確認

git関連の設定

ローカルのgitで初回のコミットをします。また、ローカル側のブランチ名は「main」とします。

git init
git add .
git commit -m "first commit"
git branch -m main

AppSerivceでどのブランチからのpushを許可するかを指定します。以下は「main」からのpushを許可する設定例です。

az webapp config appsettings set \
  --name gokatei03-app \
  --resource-group myResourceGroup \
  --settings DEPLOYMENT_BRANCH='main'

AppService作成時に「deploymentLocalGitUrl」欄にリモートブランチのURLが表示されていたはずです。このURLをazureというリモートブランチ名で定義します。

git remote add azure <deploymentLocalGitUrl-from-create-step>

操作例は以下の通りです。

git remote add azure https://gokatei03_user@gokatei03-app.scm.azurewebsites.net/gokatei03-app.git

動作確認

デプロイ1回目

ローカルのmainブランチをAppServiceへデプロイします。

git push azure main

操作例は以下の通りです。対話形式でパスワードを問われますが、az webapp deployment user setコマンドで指定したパスワードを指定してください。このページの操作例の場合ならば「P@ssw0rd1234」になります。

admin@mac19 app_service_sample_01 % git push azure main
Password for 'https://gokatei03_user@gokatei03-app.scm.azurewebsites.net': 
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 303 bytes | 151.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Deploy Async
remote: Updating branch 'main'.
remote: Updating submodules.

  <omitted>

remote: Deployment successful.
remote: Deployment Logs : 'https://gokatei03-app.scm.azurewebsites.net/jsonviewer?view_url=/api/deployments/f6740920b17f38add0ba49dd628772d3cfd42517/log'
To https://gokatei03-app.scm.azurewebsites.net/gokatei03-app.git
 * [new branch]      main -> main
admin@mac19 app_service_sample_01 % 

index.htmlやinfo.phpをブラウザで閲覧してみましょう。このページの操作例の場合ならば、ブラウザに入力するURLは「http://gokatei03-app.azurewebsites.net/index.html」「http://gokatei03-app.azurewebsites.net/info.php」になります。

「Linux 550552febe95 5.4.0-1056-azure #58~18.04.1-Ubuntu SMP Wed Jul 28 23:14:18 UTC 2021 x86_64 」と表示されている事から、Azureのマネージドサービスの仮想マシン上にデプロイされた事が分かります。

App Service のデプロイ確認 01

デプロイ2回目

コードの改修が可能かどうかを確認するために、2回目のデプロイをやってみましょう。

動作確認のため、簡単なPHPコードを作成します。動作確認例としてFizz Buzzを示します。

cat << 'EOF' > fizzbuzz.php
<?php
for($i=1; $i<=100; $i++) {
  if ($i % 3 == 0 && $i % 5 == 0) {
    echo "FizzBuzz";
  } elseif ($i % 3 == 0 ) {
    echo "Fizz";
  } elseif ($i % 5 == 0) {
    echo "Buzz";
  } else {
    echo $i;
  }
  echo "<br/>";
}
EOF

作成したコードをAzureへPushします。

git add fizzbuzz.php 
git commit -m "fizz buzz"
git push azure main

fizzbuzz.phpをブラウザで開き、想定通りの出力が得られる事を確認します。

App Service のデプロイ確認 02

リソースの解放

リソースグループの削除

リソースグループを削除します。

az group delete --name myResourceGroup --no-wait

デプロイ用ユーザの無効化

デプロイ用ユーザを削除する事はできません。代わりにユーザ名に空文字列を指定すると、設定前のユーザが使えなくなるので実質のユーザ削除と同等の効果になります。

az webapp deployment user set \
  --user-name "" \
  --password ""
タイトルとURLをコピーしました