演習 - PHP と MySQL をデプロイする - Azure App Service 上のフレキシブル サーバー アプリ
このユニットでは、サンプル PHP アプリをビルドして Azure App Service にデプロイし、バックエンドの Azure Database for MySQL - フレキシブル サーバーと統合します。
ステップ 1 - Azure Database for MySQL フレキシブル サーバーを作成する
まず、パブリック アクセス接続を使用して MySQL フレキシブル サーバーをプロビジョニングし、アプリがサーバーにアクセスできるようにファイアウォール規則を構成し、運用データベースを作成します。
Azure portal を使用して、MySQL フレキシブル サーバーの作成エクスペリエンスを順を追って見ていきます。
サンドボックスのアクティブ化に使用したものと同じアカウントを使って、Azure portal にサインインします。
ページ上部の検索ボックスに「MySQL」と入力し、次に「Azure Database for MySQL フレキシブル サーバー」を選択します。
[Azure Database for MySQL フレキシブル サーバー] ページで、[+ 作成]、[フレキシブル サーバー] を選択します。
[フレキシブル サーバー] ページの [基本] タブで、次の表の情報を入力します。
設定 推奨値 サブスクリプション コンシェルジェ サブスクリプション リソース グループ ドロップダウン リストで、learn- から始まるリソース グループを選択します サーバー名 フレキシブル サーバーを識別する、グローバルに一意の名前を入力します。 MySQL のバージョン 8.0 ワークロードの種類 [開発プロジェクトまたは趣味プロジェクトの場合] を選択します 管理者ユーザー名 「mysqladmin」と入力します。 azure_superuser、admin、administrator、root、guest、public は使わないでください。 Password 「Passw0rd123」と入力します。 パスワードは 8 文字以上 128 文字以下で、次の 3 つのカテゴリから選択する必要があります。英大文字、英小文字、数字 (0 から 9)、英数字以外の文字 (!、$、#、% など)。 他のすべての設定については、既定値をそのまま使用します。
[基本] タブの [コンピューティングとストレージ] で、[サーバーの構成] を選びます。
[コンピューティングとストレージ] ページ上で、次の設定を構成します。
- Compute
- [バースト可能] コンピューティング レベルを選択します。
- [コンピューティング サイズ] ドロップダウン リストから、[Standard_B1s (1 vCore, 1 GiB memory, 400 max iops)] を選択します。
- Storage
- ストレージ サイズ (GB 単位) が 20 に設定されていることを確認します。
- [事前プロビジョニング済みの IOPS] を選択し、値は 360 に設定されているままにします。
- [ストレージの自動拡張] チェックボックスがオンになっていることを確認します。
- 高可用性
- [高可用性を有効にする] チェックボックスがオンになっていないことを確認します。
- バックアップ
- [Backup retention period (in days)]\(バックアップの保有期間 (日数)\) が 7 に設定されていることを確認します。
- [リージョンの停止または障害からの回復] チェックボックスがオフになっていることを確認します。
- Compute
[保存] を選択し、[ネットワーク] タブに移動します。
[ネットワーク] タブで、[パブリック アクセス (許可されている IP アドレス)] の接続方法を選択し、[パブリック IP アドレスを使用したインターネット経由でのこのリソースへのパブリック アクセスを許可する] チェックボックスをオンにし、次のスクリーンショットに示すように、[Azure 内の任意の Azure サービスからこのサーバーへのパブリック アクセスを許可する] をオンにします。
[確認と作成] を選択して、MySQL フレキシブル サーバーの構成を確認します。
[作成] を選択して、サーバーをプロビジョニングします。 プロビジョニングには、最大 10 分かかる場合があります。
デプロイが完了したら、[リソースに移動] を選択して、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 にデプロイする方法を学習します。
Note
アプリ コードの詳細については、GitHub リポジトリでアプリを参照してください。
サンプル アプリ リポジトリを複製し、リポジトリ ルートに変更するには、次のコマンドを実行します。
git clone https://github.com/Azure-Samples/php-mysql-app-service.git cd php-mysql-app-service
次のコマンドを実行して、既定のブランチが
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 アプリを作成します。
Free 価格レベルで App Service プランを作成するには、次のコマンドを実行します。
az appservice plan create --name plan-learn \ --resource-group <rgn>[Sandbox resource group name]</rgn> \ --location centralus \ --sku FREE --is-linux
FTP やローカル Git などのデプロイ方法を使用して Azure Web アプリにアプリをデプロイする場合は、ユーザー名とパスワードの資格情報を使用してデプロイ ユーザーを構成する必要があります。 デプロイ ユーザーを構成すると、すべての Azure App Service デプロイでこのユーザーを活用できます。
az webapp deployment user set \ --user-name <your-deployment-username> \ --password <your-deployment-password>
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 は後で必要になるので保存しておいてください。サンプル 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 にデプロイします。
メイン ブランチをデプロイしているため、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'
アプリ リポジトリのルート ディレクトリにいることを確認します。
ローカル Git リポジトリに Azure リモートを追加するには、次のコマンドを実行します。
注:
<deploymentLocalGitUrl>
を、App Service Web アプリの作成のステップで保存した Git リモートの URL に置き換えます。git remote add azure <deploymentLocalGitUrl>
Azure リモートに対して
git push
を実行してアプリをデプロイするには、次のコマンドを実行します。 Git 資格情報マネージャーによって資格情報の入力を求めるメッセージが表示されたら、デプロイ ユーザーの構成のステップで作成したデプロイ資格情報を入力してください。git push azure main
デプロイが成功するまでに数分かかることがあります。
手順 5 - アプリをテストする
最後に、https://<app-name>.azurewebsites.net
を参照してアプリをテストし、製品カタログから項目を追加、表示、更新、または削除します。
お疲れさまでした。 サンプル PHP アプリをビルドして Azure App Service にデプロイし、バックエンドの Azure Database for MySQL - フレキシブル サーバーと統合しました。