警告
Windows 上の PHP は、2022 年 11 月にサポート終了を迎えました。 PHP は App Service on Linux でのみサポートされています。 この記事は参考用です。
Azure App Service は、非常にスケーラブルな、パッチを自己適用する Web ホスティング サービスを提供します。 このクイックスタート チュートリアルでは、Azure App Service on Windows に PHP アプリをデプロイする方法を説明します。
Azure CLI を使って Cloud Shell で Web アプリを作成し、Git を使用して Web アプリに PHP のサンプル コードをデプロイします。
以下の手順は、Mac、Windows、または Linux コンピューターを使って実行できます。 前提条件のインストールを終えてから、以降の手順を完了するまでに約 5 分かかります。
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
価格レベルの という名前の 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 で
myAppServicePlan
コマンドを使用して、az webapp create
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 <URL> { "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 アプリが作成されました。
注
git リモートの URL が
deploymentLocalGitUrl
プロパティに表示されます。 この URL は後で必要になるので保存しておいてください。新しく作成された Web アプリに移動します。
新しい Web アプリは次のようになります。
Git から Azure へのプッシュ
main
ブランチをデプロイするため、App Service アプリの既定のデプロイ ブランチをmain
に設定する必要があります (「デプロイ ブランチを変更する」を参照)。 Cloud Shell で、DEPLOYMENT_BRANCH
コマンドを使用してaz webapp config appsettings set
アプリ設定を設定します。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 <URL> cc39b1e..25f1805 main -> main
アプリの参照
Web ブラウザーを使用して、デプロイされたアプリケーションを参照します。
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 コンピューターを使って実行できます。 前提条件がインストールされると、手順を完了するのに約 10 分かかります。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Git
- PHP
- Azure CLI: これを使用し、任意のシェルでコマンドを実行し、Azure リソースを作成して構成します。
サンプル リポジトリのダウンロード
次の手順では、 Azure CLI を使用して Web アプリを作成し、サンプル PHP コードを Web アプリにデプロイします。
Azure Cloud Shell を使用できます。
ターミナル ウィンドウで、次のコマンドを実行して、ローカル コンピューターにサンプル アプリケーションを複製し、プロジェクト ルートに移動します。
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 サーバーを終了します。
アプリケーション コードを 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」というエラーが表示された場合は、code ディレクトリでコマンドを実行していることを確認してください。 詳細については、「 az webapp up での自動検出の問題のトラブルシューティング」を参照してください。
コマンドが完了するまでに数分かかる場合があります。 実行中、リソース グループ、App Service プラン、アプリ リソースの作成、ログの構成、ZIP のデプロイの実行に関するメッセージが表示されます。 その後、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 <directory-___location> ...
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": "<directory-path>"
}
注
az webapp up
コマンドは、次の処理を実行します。
既定のリソース グループを作成する。
既定の App Service プランを作成する。
指定された名前でアプリを作成する。
ビルド自動化を有効にして、現在の作業ディレクトリからすべてのファイルを zip デプロイします。
後で またはプロジェクト フォルダー内の他の
az webapp up
コマンドを使用してデプロイするときに再指定する必要がないように、パラメーターをaz webapp
ファイルにローカルにキャッシュします。 キャッシュされた値は、既定で自動的に使用されます。
Web ブラウザーで、ターミナルに用意されている URL でデプロイされたアプリケーションを参照します。
PHP のサンプル コードが、Azure App Service で実行されています。
お疲れさまでした。 Azure portal を使用して App Service に初めての PHP アプリをデプロイしました。
アプリを更新して再デプロイする
php-docs-hello-worldディレクトリを探し、ローカルのテキストエディタを使用してindex.phpファイルを開きます。
echo
の横の文字列内のテキストに小さな変更を加えます。echo "Hello Azure!";
変更を保存した後、これらの引数を指定して az webapp up コマンドを再び使用してアプリを再デプロイします。
az webapp up --runtime "PHP:8.2" --os-type=linux
デプロイが完了したら、「アプリの参照」の手順で開いたブラウザー ウィンドウに戻り、ページを更新します。
新しい Azure アプリの管理
Azure portal に移動し、作成した Web アプリを管理します。 [App Services] を検索して選択します。
Azure アプリを選択して開きます。
Web アプリの [概要] ページが表示されます。 ここでは、参照、停止、再開、削除のような基本的な管理タスクを行うことができます。
Web アプリ メニューに、アプリを構成するためのさまざまなオプションが示されます。
リソースをクリーンアップする
サンプル アプリの作業が完了したら、アプリのすべてのリソースを Azure から削除して、追加料金を回避し、Azure サブスクリプションを整理しておくことができます。 リソース グループを削除して、リソース グループ内のすべてのリソースも削除することが、アプリのすべての Azure リソースを削除する最も簡単な方法です。
az group delete コマンドでリソース グループを削除します。
az group delete --name myResourceGroup
このコマンドの実行には、少し時間がかかります。