Azure App Service に PHP Web アプリを作成する
Azure App Service は、非常にスケーラブルな、自己適用型の Web ホスティング サービスを提供します。 このクイックスタート チュートリアルでは、Azure App Service on Windows に PHP アプリをデプロイする方法を説明します。
Azure CLI を使って Cloud Shell で Web アプリを作成し、Git を使用して Web アプリに PHP のサンプル コードをデプロイします。
以下の手順は、Mac、Windows、または Linux コンピューターを使って実行できます。 前提条件のインストールを終えてから、以降の手順を完了するまでに約 5 分かかります。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
前提条件
このクイック スタートを完了するには、以下が必要です。
サンプルをローカルでダウンロードする
ターミナル ウィンドウで次のコマンドを実行します。 これにより、サンプル アプリケーションがローカル マシンに複製され、サンプル コードを含むディレクトリに移動します。
git clone https://github.com/Azure-Samples/php-docs-hello-world cd php-docs-hello-world
既定のブランチが
main
であることを確認します。git branch -m main
ヒント
App Service では、ブランチ名の変更は必要ありません。 ただし、多くのリポジトリで既定のブランチが
main
に変更されているため、このクイック スタートでは、main
からリポジトリをデプロイする方法も示します。
アプリをローカルで実行する
アプリケーションをローカルで実行すると、アプリケーションを Azure にデプロイするとどう表示されるかを把握できます。 ターミナル ウィンドウを開き、
php
コマンドを使用して組み込みの PHP Web サーバーを起動します。php -S localhost:8080
Web ブラウザーを開き、
http://localhost:8080
のサンプル アプリに移動します。ページに表示されているサンプル アプリの Hello World! メッセージが表示されます。
ターミナル ウィンドウで Ctrl + C キーを押して、Web サーバーを終了します。
Azure Cloud Shell
Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。
Azure Cloud Shell を開始するには、以下のようにします。
オプション | 例とリンク |
---|---|
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 | |
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 | |
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 |
Azure Cloud Shell を使用するには、以下のようにします。
Cloud Shell を開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。
Enter キーを選択して、コードまたはコマンドを実行します。
デプロイ ユーザーを構成する
FTP およびローカルの Git では、"デプロイ ユーザー" を使用して Azure Web アプリにデプロイできます。 デプロイ ユーザーを構成すると、すべての Azure デプロイでこのユーザーを使用できます。 アカウントレベルのデプロイのユーザー名とパスワードは、Azure サブスクリプションの資格情報とは異なります。
デプロイ ユーザーを構成するには、Azure Cloud Shell で az webapp deployment user set コマンドを実行します。 <username> と <password> を、デプロイ ユーザーのユーザー名とパスワードで置き換えます。
- ユーザー名は、Azure 内で一意である必要があり、ローカル Git プッシュの場合は "\@" シンボルを含めることはできません。
- パスワードは長さが 8 文字以上で、文字、数字、記号のうち 2 つを含む必要があります。
az webapp deployment user set --user-name <username> --password <password>
JSON 出力には、パスワードが null
として表示されます。 'Conflict'. Details: 409
エラーが発生した場合は、ユーザー名を変更します。 'Bad Request'. Details: 400
エラーが発生した場合は、より強力なパスワードを使用します。
Web アプリのデプロイに使用するユーザー名とパスワードを記録します。
リソース グループを作成する
リソース グループとは、Web アプリ、データベース、ストレージ アカウントなどの Azure リソースのデプロイと管理に使用する論理コンテナーです。 たとえば、後から簡単な手順で一度にリソース グループ全体を削除することもできます。
Cloud Shell で az group create
コマンドを使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを "西ヨーロッパ" の場所に作成します。 Free レベルの App Service でサポートされているすべての場所を表示するには、az appservice list-locations --sku FREE
コマンドを実行します。
az group create --name myResourceGroup --location "West Europe"
通常は、現在地付近の地域にリソース グループおよびリソースを作成します。
コマンドが完了すると、リソース グループのプロパティが JSON 出力に表示されます。
Azure App Service プランを作成する
Cloud Shell で az appservice plan create
コマンドを使用して、App Service プランを作成します。
次の例では、myAppServicePlan
価格レベルの myAppServicePlan
という名前の App Service プランを作成します。
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux
App Service プランが作成されると、Azure CLI によって、次の例のような情報が表示されます。
{ "freeOfferExpirationTime": null, "geoRegion": "West Europe", "hostingEnvironmentProfile": null, "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan", "kind": "linux", "location": "West Europe", "maximumNumberOfWorkers": 1, "name": "myAppServicePlan", < JSON data removed for brevity. > "targetWorkerSizeId": 0, "type": "Microsoft.Web/serverfarms", "workerTierName": null }
Web アプリを作成する
Cloud Shell で
az webapp create
コマンドを使用して、myAppServicePlan
App Service プランに Web アプリを作成します。次の例では、
<app-name>
をグローバルに一意のアプリ名に置き換えてください (有効な文字はa-z
、0-9
、-
)。 ランタイムはPHP|7.4
に設定されています。 サポートされているすべてのランタイムを確認するには、az webapp list-runtimes
を実行します。az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'PHP|8.1' --deployment-local-git
Web アプリが作成されると、Azure CLI によって次の例のような出力が表示されます。
Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git' { "availabilityState": "Normal", "clientAffinityEnabled": true, "clientCertEnabled": false, "cloningInfo": null, "containerSize": 0, "dailyMemoryTimeQuota": 0, "defaultHostName": "<app-name>.azurewebsites.net", "enabled": true, < JSON data removed for brevity. > }
Git デプロイが有効な、空の新しい Web アプリが作成されました。
Note
Git リモートの URL は
deploymentLocalGitUrl
プロパティにhttps://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git
形式で出力されます。 この URL は後で必要になるので保存しておいてください。新しく作成された Web アプリに移動します。 <app-name> は、前の手順で作成したアプリの一意の名前で置き換えます。
http://<app-name>.azurewebsites.net
新しい Web アプリは次のようになります。
Git から Azure へのプッシュ
main
ブランチをデプロイするため、App Service アプリの既定のデプロイ ブランチをmain
に設定する必要があります (「main
」を参照)。 Cloud Shell で、az webapp config appsettings set
コマンドを使用してDEPLOYMENT_BRANCH
アプリ設定を設定します。az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'
ローカル ターミナル ウィンドウで、ローカル Git リポジトリに Azure リモートを追加します。 <deploymentLocalGitUrl-from-create-step>を、「Web アプリを作成する」で保存した Git リモートの URL に置き換えます。
git remote add azure <deploymentLocalGitUrl-from-create-step>
アプリをデプロイするために、次のコマンドで Azure リモートにプッシュします。 Git Credential Manager で資格情報の入力を求められたら、Azure portal へのサインインに使用する資格情報ではなく、「ローカル Git デプロイを構成する」で作成した資格情報を入力してください。
git push azure main
このコマンドの実行には数分かかることがあります。 実行中、次の例のような情報が表示されます。
Counting objects: 2, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 352 bytes | 0 bytes/s, done. Total 2 (delta 1), reused 0 (delta 0) remote: Updating branch 'main'. remote: Updating submodules. remote: Preparing deployment for commit id '25f18051e9'. remote: Generating deployment script. remote: Running deployment command... remote: Handling Basic Web Site deployment. remote: Kudu sync from: '/home/site/repository' to: '/home/site/wwwroot' remote: Copying file: '.gitignore' remote: Copying file: 'LICENSE' remote: Copying file: 'README.md' remote: Copying file: 'index.php' remote: Ignoring: .git remote: Finished successfully. remote: Running post deployment command(s)... remote: Deployment successful. To https://<app-name>.scm.azurewebsites.net/<app-name>.git cc39b1e..25f1805 main -> main
アプリの参照
Web ブラウザーを使用して、デプロイされたアプリケーションを参照します。
http://<app-name>.azurewebsites.net
PHP のサンプル コードは、Azure App Service の Web アプリで実行されています。
おめでとうございます。 App Service に初めての PHP アプリをデプロイしました。
コードをローカルで更新して再デプロイする
ローカルのテキスト エディターを使用して、PHP アプリ内の
index.php
ファイルを開き、echo
に続く文字列の中のテキストを少し変更します。echo "Hello Azure!";
ローカル ターミナル ウィンドウで、変更を Git にコミットし、コード変更を Azure にプッシュします。
git commit -am "updated output" git push azure main
デプロイが完了したら、「アプリの参照」の手順で開いたブラウザー ウィンドウに戻り、ページを更新します。
新しい Azure アプリの管理
Azure Portal に移動し、作成した Web アプリを管理します。 [App Services] を検索して選択します。
使用する Azure アプリの名前を選択します。
Web アプリの [概要] ページが表示されます。 ここでは、参照、停止、再開、削除のような基本的な管理タスクを行うことができます。
Web アプリ メニューに、アプリを構成するためのさまざまなオプションが示されます。
リソースをクリーンアップする
前の手順では、リソース グループ内に Azure リソースを作成しました。 これらのリソースが将来必要になると想定していない場合、Cloud Shell で次のコマンドを実行して、リソース グループを削除します。
az group delete --name myResourceGroup
このコマンドの実行には、少し時間がかかる場合があります。
Azure App Service は、非常にスケーラブルな、自己適用型の Web ホスティング サービスを提供します。 このクイックスタートでは、Azure App Service on Linux に PHP アプリをデプロイする方法について説明します。
以下の手順は、Mac、Windows、または Linux コンピューターを使って実行できます。 前提条件のインストールを終えてから、以降の手順を完了するまでに約 5 分かかります。
このクイック スタートを完了するには、次のものが必要です。
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Git
- PHP
- Azure CLI: これを使用し、任意のシェルでコマンドを実行し、Azure リソースを作成して構成します。
1 - サンプル リポジトリを取得する
Azure CLI を使って Cloud Shell で Web アプリを作成できます。また、Git を使用して Web アプリに PHP のサンプル コードをデプロイします。
ターミナル ウィンドウで、次のコマンドを実行して、ローカル コンピューターにサンプル アプリケーションを複製し、プロジェクト ルートに移動します。
git clone https://github.com/Azure-Samples/php-docs-hello-world cd php-docs-hello-world
アプリケーションをローカルで実行するには、
php
コマンドを使用して組み込みの PHP Web サーバーを起動します。php -S localhost:8080
Web ブラウザーで
http://localhost:8080
のサンプル アプリケーションを参照します。ターミナル ウィンドウで Ctrl + C キーを押して、Web サーバーを終了します。
2 - アプリケーション コードを Azure にデプロイする
Azure CLI の az webapp up
コマンドにより、必要なリソースを作成し、1 つの手順でアプリケーションをデプロイできます。
ターミナルで、az webapp up
コマンドを使用してローカル フォルダーにコードをデプロイします。
az webapp up --runtime "PHP:8.2" --os-type=linux
az
コマンドが認識されない場合は、Azure CLI がインストールされていることを確認してください。--runtime "PHP:8.2"
引数により、PHP バージョン 8.2 で Web アプリが作成されます。--os-type=linux
引数により、App Service on Linux で Web アプリが作成されます。- 必要に応じて、引数
--name <app-name>
を使用して名前を指定することもできます。 指定しない場合、名前は自動的に生成されます。 - 必要に応じて、引数
--location <location-name>
を含めることができます。ここで、<location_name>
は利用可能な Azure リージョンです。az account list-locations
コマンドを実行すると、お使いの Azure アカウントで使用可能なリージョンの一覧を取得できます。 - "Could not auto-detect the runtime stack of your app" (アプリのランタイム スタックを自動検出できませんでした) というエラーが表示された場合は、コード ディレクトリでコマンドを実行していることを確認してください (az webapp up での自動検出に関する問題のトラブルシューティングに関するページを参照してください)。
コマンドが完了するまで数分かかることがあります。 実行中、リソース グループ、App Service プラン、アプリ リソースの作成、ログの構成、ZIP のデプロイの実行に関するメッセージが表示されます。 次に、"http://<app-name>.azurewebsites.net でアプリを起動することができます" という内容のメッセージが表示されます。これは、Azure 上のアプリの URL です。
The webapp '<app-name>' doesn't exist Creating Resource group '<group-name>' ... Resource group creation complete Creating AppServicePlan '<app-service-plan-name>' ... Creating webapp '<app-name>' ... Configuring default logging for the app, if not already enabled Creating zip with contents of dir /home/msangapu/myPhpApp ... Getting scm site credentials for zip deployment Starting zip deployment. This operation can take a while to complete ... Deployment endpoint responded with status code 202 You can launch the app at http://<app-name>.azurewebsites.net { "URL": "http://<app-name>.azurewebsites.net", "appserviceplan": "<app-service-plan-name>", "location": "centralus", "name": "<app-name>", "os": "linux", "resourcegroup": "<group-name>", "runtime_version": "php|8.2", "runtime_version_detected": "0.0", "sku": "FREE", "src_path": "//home//msangapu//myPhpApp" }
注意
az webapp up
コマンドは、次の処理を実行します。
既定の リソース グループを作成する。
既定の App Service プランを作成する。
指定された名前でアプリを作成 する。
ビルド自動化を有効にして、現在の作業ディレクトリからすべてのファイルを ZIP デプロイします。
後で
az webapp up
またはプロジェクト フォルダー内の他のaz webapp
コマンドを使用してデプロイするときに再指定する必要がないように、パラメーターを .azure/config ファイルにローカルにキャッシュします。 キャッシュされた値は、既定で自動的に使用されます。
URL http://<app-name>.azurewebsites.net
を使って、お使いの Web ブラウザーでデプロイされたアプリケーションを参照します。
PHP のサンプル コードが、Azure App Service で実行されています。
お疲れさまでした。 Azure portal を使用して App Service に初めての PHP アプリをデプロイしました。
3 - アプリを更新して再デプロイする
ローカルのテキスト エディターを使用して、PHP アプリ内の
index.php
ファイルを開き、echo
に続く文字列の中のテキストを少し変更します。echo "Hello Azure!";
変更を保存した後、これらの引数を指定して az webapp up コマンドを再び使用してアプリを再デプロイします。
az webapp up --runtime "PHP:8.2" --os-type=linux
デプロイが完了したら、「アプリの参照」の手順で開いたブラウザー ウィンドウに戻り、ページを更新します。
4 - 新しい Azure アプリを管理する
Azure Portal に移動し、作成した Web アプリを管理します。 「App Services」 を検索して選択します。
使用する Azure アプリの名前を選択します。
Web アプリの [概要] ページが表示されるはずです。 ここでは、参照、停止、再開、削除のような基本的な管理タスクを行うことができます。
Web アプリ メニューに、アプリを構成するためのさまざまなオプションが示されます。
5 - リソースをクリーンアップする
サンプル アプリを使い終わったら、Azure からアプリのすべてのリソースを削除できます。 追加料金の発生が避けられ、Azure サブスクリプションの整合性を維持できます。 リソース グループを削除して、リソース グループ内のすべてのリソースも削除することが、アプリのすべての Azure リソースを削除する最も簡単な方法です。
az group delete コマンドでリソースグループを削除します。
az group delete --name myResourceGroup
このコマンドの実行には、少し時間がかかります。