演習 - PHP と MySQL をデプロイする - Azure App Service 上のフレキシブル サーバー アプリ

完了

このユニットでは、サンプル PHP アプリをビルドして Azure App Service にデプロイし、バックエンドの Azure Database for MySQL - フレキシブル サーバーと統合します。

ステップ 1 - Azure Database for MySQL フレキシブル サーバーを作成する

まず、パブリック アクセス接続を使用して MySQL フレキシブル サーバーをプロビジョニングし、アプリがサーバーにアクセスできるようにファイアウォール規則を構成し、運用データベースを作成します。

Azure portal を使用して、MySQL フレキシブル サーバーの作成エクスペリエンスを順を追って見ていきます。

  1. サンドボックスのアクティブ化に使用したのと同じアカウントを使用して 、Azure portal にサインインします。

  2. ページの上部にある検索ボックスに「 MySQL」と入力し、 Azure Database for MySQL フレキシブル サーバーを選択します。

    ポータルの上部にある検索バーのスクリーンショット。mysql を検索した結果が表示されています。

  3. [Azure Database for MySQL フレキシブル サーバー] ページで、[+ 作成] を選択し、[フレキシブル サーバー] を選択します。

    [フレキシブル サーバー] メニュー項目が強調表示されている展開された [作成] メニューのスクリーンショット。

  4. [ フレキシブル サーバー ] ページの [ 基本 ] タブで、次の表に情報を入力します。

    設定 推奨値
    サブスクリプション コンシェルジェ サブスクリプション
    リソース グループ ドロップダウン リストから、learn- で始まるリソース グループを選択します。
    サーバー名 フレキシブル サーバーを識別する、グローバルに一意の名前を入力します。
    MySQL のバージョン 8.0
    ワークロードの種類 開発または趣味のプロジェクトを選択する
    管理者ユーザー名 mysqladmin と入力します。 azure_superuser、admin、administrator、root、guest、public は使わないでください。
    パスワード Passw0rd123 と入力します。 パスワードは 8 文字以上 128 文字以下で、次の 3 つのカテゴリから選択する必要があります。英大文字、英小文字、数字 (0 から 9)、英数字以外の文字 (!、$、#、% など)。

    他のすべての設定については、既定値をそのまま使用します。

  5. [ 基本 ] タブの [ コンピューティングとストレージ] で、[ サーバーの構成] を選択します。

  6. [ コンピューティング + ストレージ ] ページで、次の設定を構成します。

    • 計算する
      • バースト可能なコンピューティング レベルを選択します。
      • [コンピューティングサイズ] ドロップダウン リストから、Standard_B1s (1 仮想コア、1 GiB メモリ、400 最大 iops) を選択します。
    • 貯蔵
      • ストレージ サイズ (GB)20 に設定されていることを確認します。
      • [事前プロビジョニングされた IOPS] を選択し、値を 360 に設定したままにしておきます。
      • [ストレージの自動拡張] チェック ボックスがオンになっていることを確認します。
    • 高可用性
      • [高可用性を有効にする] チェック ボックスがオンになっていないことを確認します。
    • バックアップ
      • バックアップの保有期間 (日数) が 7 に設定されていることを確認します
      • リージョンの 障害または災害からの復旧 チェックボックスがオフになっていることを確認します。
  7. [ 保存] を選択し、[ ネットワーク ] タブに移動します。

    [ネットワーク] タブの周りに赤いボックスが表示された [フレキシブル サーバーの作成] ブレードを示すスクリーンショット。

  8. [ ネットワーク ] タブで、[ パブリック アクセス (許可された IP アドレス) 接続方法] を選択し、[ パブリック IP アドレスを使用してインターネット経由でこのリソースへのパブリック アクセスを許可する] をオンにし、次のスクリーンショットに示すように、 Azure 内の任意の Azure サービスからこのサーバーへのパブリック アクセスを許可 するをオンにします。

  9. [ 確認と作成 ] を選択して、MySQL フレキシブル サーバーの構成を確認します。

  10. [ 作成] を選択してサーバーをプロビジョニングします。 プロビジョニングには、最大 10 分かかる場合があります。

  11. デプロイが完了したら、[ リソースに移動 ] を選択して、Azure Database for MySQL フレキシブル サーバーの [概要] ページを表示します。

この演習の残りの部分では、このウィンドウの右側に表示される Azure Cloud Shell を使用してコマンドを実行します。

PHP アプリで使用する新しい MySQL 運用データベース sampledb を作成するには、次のコマンドを実行します。

az mysql flexible-server db create \
--resource-group <rgn>[Sandbox resource group name]</rgn> \
--server-name <your-mysql-server-name> \
--database-name sampledb

手順 2 - アプリをクローンする

この演習では、製品カタログを表示および管理するサンプル PHP アプリを使用します。 このアプリは、カタログ内の製品の表示、新しい製品の追加、既存の項目の価格の更新、製品の削除などの基本的な機能を提供します。

コード化されたアプリを直接複製して、Azure App Service にデプロイする方法を学習します。

アプリ コードの詳細については、 GitHub リポジトリでアプリを調べてみましょう。

  1. サンプル アプリ リポジトリを複製し、リポジトリ ルートに変更するには、次のコマンドを実行します。

    git clone https://github.com/Azure-Samples/php-mysql-app-service.git
    cd php-mysql-app-service
    
  2. 次のコマンドを実行して、既定のブランチが main になるようにします。

    git branch -m main
    

ステップ 3 - Azure App Service Web アプリを作成して構成する

Azure App Service (Web Apps、API Apps、または Mobile Apps) では、アプリは常に App Service プランで実行されます。 App Service プランでは、Web アプリを実行するための一連のコンピューティング リソースを定義します。 このステップでは、Azure App Service プラン、そしてその中にサンプル アプリをホストする App Service Web アプリを作成します。

  1. Free 価格レベルで App Service プランを作成するには、次のコマンドを実行します。

    az appservice plan create --name plan-learn \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --___location centralus \
    --sku FREE --is-linux
    
  2. FTP やローカル Git などのデプロイ方法を使用して Azure Web アプリにアプリをデプロイする場合は、ユーザー名とパスワードの資格情報を使用してデプロイ ユーザーを構成する必要があります。 デプロイ ユーザーを構成すると、すべての Azure App Service デプロイでこのユーザーを活用できます。

    az webapp deployment user set \
    --user-name <your-deployment-username> \
    --password <your-deployment-password>
    
  3. PHP 8.0 ランタイムを使用して App Service Web アプリを作成し、ローカル コンピューター上の Git リポジトリからアプリをデプロイするようにローカル Git デプロイ オプションを構成するには、次のコマンドを実行します。

    : <your-app-name> をグローバルに一意のアプリ名に置き換えます (有効な文字は a から z、0 から 9、および -)。

    az webapp create \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --plan plan-learn \
    --name <your-app-name> \
    --runtime "PHP|8.0" \
    --deployment-local-git
    

    重要

    Azure CLI 出力では、Git リモートの URL が deploymentLocalGitUrl プロパティに、https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git の形式で表示されます。 この URL は後で必要になるので保存しておいてください。

  4. サンプル PHP アプリの config.php ファイルは、getenv() 関数を使用して環境変数からデータベース接続情報 (サーバー名、データベース名、サーバー ユーザー名、パスワード) を取得します。 App Service で環境変数を アプリケーション設定 (appsettings) として設定するには、次のコマンドを実行します。

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --settings DB_HOST="<your-server-name>.mysql.database.azure.com" \
    DB_DATABASE="sampledb" \
    DB_USERNAME="<your-mysql-admin-username>" \
    DB_PASSWORD="<your-mysql-admin-password>" \
    MYSQL_SSL="true"
    

    このコマンドでは、Web アプリで MySQL フレキシブル サーバー データベース接続設定を構成します。

ステップ 4 - ローカル Git を使用してアプリをデプロイする

次に、ローカル Git デプロイ オプションを使用して、サンプル PHP アプリを Azure App Service にデプロイします。

  1. メイン ブランチをデプロイしているため、App Service アプリの既定のデプロイ ブランチを main に設定する必要があります。 [アプリケーション設定] でDEPLOYMENT_BRANCHを設定するには、次のコマンドを実行します。

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --settings DEPLOYMENT_BRANCH='main'
    
  2. アプリ リポジトリのルート ディレクトリにいることを確認します。

  3. ローカル Git リポジトリに Azure リモートを追加するには、次のコマンドを実行します。

    手記:<deploymentLocalGitUrl>を、App Service Web アプリの作成手順で保存した Git リモートの URL に置き換えます。

    git remote add azure <deploymentLocalGitUrl>
    
  4. Azure リモートに対して git push を実行してアプリをデプロイするには、次のコマンドを実行します。 Git Credential Manager から資格情報の入力を求められたら、「デプロイ ユーザーの構成」ステップで作成した デプロイ資格情報を 入力します。

    git push azure main
    

デプロイが成功するまでに数分かかることがあります。

手順 5 - アプリをテストする

最後に、https://<app-name>.azurewebsites.net を参照してアプリをテストし、製品カタログから項目を追加、表示、更新、または削除します。

デプロイされた Web アプリが Web ブラウザーに表示されているスクリーンショット。

お疲れさまでした。 サンプル PHP アプリをビルドして Azure App Service にデプロイし、バックエンドの Azure Database for MySQL - フレキシブル サーバーと統合しました。