チュートリアル: PHP および Azure Database for MySQL - フレキシブル サーバー アプリを Azure App Service にデプロイする
Azure App Service は、Linux オペレーティング システムを使用する、高度にスケーラブルな自己適用型の Web ホスティング サービスを提供します。
このチュートリアルでは、サンプル PHP アプリケーションを構築して Azure App Service にデプロイし、バックエンドの Azure Database for MySQL フレキシブル サーバーと統合する方法を見ていきます。 ここでは、Azure Database for MySQL フレキシブル サーバー インスタンスのパブリック アクセス接続 (許可された IP アドレス) を使って、App Service アプリに接続します。
このチュートリアルで学習する内容は次のとおりです。
- Azure Database for MySQL フレキシブル サーバー インスタンスを作成する
- PHP アプリを Azure Database for MySQL フレキシブル サーバー インスタンスに接続する
- Azure App Service にアプリを配置する
- アプリを更新して再デプロイする
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。 現在、Azure 無料アカウントがあれば、Azure Database for MySQL - フレキシブル サーバーを 12 か月間無料でお試しいただけます。 詳細については、「Azure 無料アカウントを使用して Azure Database for MySQL - フレキシブル サーバーを無料で試す」を参照してください。
前提条件
- Git をインストールします。
- Azure コマンド ライン インターフェイス (CLI)。
- Azure サブスクリプション Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。 現在、Azure 無料アカウントがあれば、Azure Database for MySQL - フレキシブル サーバーを 12 か月間無料でお試しいただけます。 詳細については、「Azure 無料アカウントを使用して Azure Database for MySQL - フレキシブル サーバーを無料で試す」を参照してください。
Azure Database for MySQL - フレキシブル サーバーを作成する
まず、パブリック アクセス接続を使用して Azure Database for MySQL フレキシブル サーバー インスタンスをプロビジョニングし、アプリケーションがサーバーにアクセスできるようにファイアウォール規則を構成して、運用データベースを作成します。
代わりにプライベート アクセス接続を使って、仮想ネットワーク内のアプリとデータベース リソースを分離する方法については、「チュートリアル: 仮想ネットワーク内の Azure Database for MySQL - フレキシブル サーバーに App Services Web アプリを接続する」をご覧ください。
リソース グループを作成する
Azure リソース グループは、Azure リソースが展開され管理される論理グループです。 az group create コマンドを実行して、centralus の場所に rg-php-demo というリソース グループを作成しましょう。
コマンド プロンプトを開きます。
Azure アカウントにサインインします。
az login
Azure サブスクリプションを選択します。
az account set -s <your-subscription-ID>
リソース グループを作成します。
az group create --name rg-php-demo --location centralus
Azure Database for MySQL フレキシブル サーバー インスタンスを作成する
パブリック アクセス接続を使って Azure Database for MySQL フレキシブル サーバー インスタンスを作成するには、次の az flexible-server create コマンドを実行します。 サーバー名、管理者のユーザー名、パスワードの値を置き換えます。
az mysql flexible-server create \ --name <your-mysql-server-name> \ --resource-group rg-php-demo \ --location centralus \ --admin-user <your-mysql-admin-username> \ --admin-password <your-mysql-admin-password>
これで、CentralUS リージョンに Azure Database for MySQL フレキシブル サーバー インスタンスが作成されました。 サーバーはバースト可能な B1MS コンピューティング SKU に基づいており、32 GB のストレージ、7 日間のバックアップ保有期間、パブリック アクセス接続で構成されています。
次に、クライアント接続を許可する Azure Database for MySQL フレキシブル サーバー インスタンスのファイアウォール規則を作成するには、次のコマンドを実行します。 開始 IP と終了 IP の両方が 0.0.0.0 に設定されている場合、他の Azure リソース (App Services アプリ、VM、AKS クラスターなど) のみが Azure Database for MySQL フレキシブル サーバー インスタンスに接続できます。
az mysql flexible-server firewall-rule create \ --name <your-mysql-server-name> \ --resource-group rg-php-demo \ --rule-name AllowAzureIPs \ --start-ip-address 0.0.0.0 \ --end-ip-address 0.0.0.0
PHP アプリケーションで使用する、新しい Azure Database for MySQL フレキシブル サーバー運用データベース sampledb を作成するには、次のコマンドを実行します。
az mysql flexible-server db create \ --resource-group rg-php-demo \ --server-name <your-mysql-server-name> \ --database-name sampledb
アプリケーションをビルドする
このチュートリアルでは、製品カタログを表示および管理するサンプル PHP アプリケーションを使用します。 このアプリケーションは、カタログ内の製品の表示、新しい製品の追加、既存の項目の価格の更新、製品の削除などの基本的な機能を提供します。
アプリケーション コードの詳細については、GitHub リポジトリでアプリを参照してください。 PHP アプリを Azure Database for MySQL フレキシブル サーバーに接続する方法については、「Azure Database for MySQL - フレキシブル サーバーで PHP を使用する」をご覧ください。
このチュートリアルでは、コード化されたサンプル アプリを直接複製して、Azure App Service にデプロイする方法について説明します。
サンプル アプリケーション リポジトリを複製し、リポジトリ ルートに変更するには、次のコマンドを実行します。
git clone https://github.com/Azure-Samples/php-mysql-app-service.git cd php-mysql-app-service
次のコマンドを実行して、既定のブランチが
main
になるようにします。git branch -m main
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-php-demo \ --resource-group rg-php-demo \ --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 rg-php-demo \ --plan plan-php-demo \ --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 は後で必要になるので保存しておいてください。次に、Web アプリで Azure Database for MySQL フレキシブル サーバーのデータベース接続の設定を構成します。
サンプル PHP アプリケーションの
config.php
ファイルは、getenv()
関数を使用して環境変数からデータベース接続情報 (サーバー名、データベース名、サーバー ユーザー名、パスワード) を取得します。 App Service で、環境変数をアプリケーション設定 (appsettings) として設定するには、次のコマンドを実行します。az webapp config appsettings set \ --name <your-app-name> \ --resource-group rg-php-demo \ --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"
または、サービス コネクタを使用して、App Service アプリと Azure Database for MySQL フレキシブル サーバー インスタンス間の接続を確立することもできます。 詳細については、サービス コネクタを使用して Azure Database for MySQL フレキシブル サーバーを統合する方法に関する記事を参照してください。
ローカル Git を使用してアプリケーションをデプロイする
次に、ローカル Git デプロイ オプションを使用して、サンプル PHP アプリケーションを Azure App Service にデプロイします。
メイン ブランチをデプロイしているため、App Service アプリの既定のデプロイ ブランチを main に設定する必要があります。 [アプリケーション設定] の下に DEPLOYMENT_BRANCH を設定するには、次のコマンドを実行します。
az webapp config appsettings set \ --name <your-app-name> \ --resource-group rg-php-demo \ --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
デプロイが成功するまでに数分かかることがあります。
アプリケーションのテスト
最後に、https://<app-name>.azurewebsites.net
を参照してアプリケーションをテストし、製品カタログから項目を追加、表示、更新、または削除します。
お疲れさまでした。 これで、正常にサンプル PHP アプリケーションを Azure App Service にデプロイし、バックエンドの Azure Database for MySQL フレキシブル サーバーと統合しました。
アプリを更新して再デプロイする
Azure アプリを更新するには、必要なコード変更を行い、Git ですべての変更をコミットしてから、コードの変更を Azure にプッシュします。
git add .
git commit -m "Update Azure app"
git push azure main
git push
が完了したら、Azure アプリに移動するか最新の情報に更新して、新機能をテストします。
リソースをクリーンアップする
このチュートリアルでは、すべての Azure リソースを 1 つのリソース グループに作成しました。 これらのリソースが将来必要になると想定していない場合、Cloud Shell で次のコマンドを実行して、リソース グループを削除します。
az group delete --name rg-php-demo