Azure App Service に PHP Web アプリを作成する

Azure App Service は、非常にスケーラブルな、自己適用型の Web ホスティング サービスを提供します。 このクイックスタート チュートリアルでは、Azure App Service on Windows に PHP アプリをデプロイする方法を説明します。

Azure CLI を使って Cloud Shell で Web アプリを作成し、Git を使用して Web アプリに PHP のサンプル コードをデプロイします。

Azure で実行されるサンプル アプリ

以下の手順は、Mac、Windows、または Linux コンピューターを使って実行できます。 前提条件のインストールを終えてから、以降の手順を完了するまでに約 5 分かかります。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

このクイック スタートを完了するには、以下が必要です。

サンプルをローカルでダウンロードする

  1. ターミナル ウィンドウで次のコマンドを実行します。 これにより、サンプル アプリケーションがローカル マシンに複製され、サンプル コードを含むディレクトリに移動します。

    git clone https://github.com/Azure-Samples/php-docs-hello-world
    cd php-docs-hello-world
    
  2. 既定のブランチが main であることを確認します。

    git branch -m main
    

    ヒント

    App Service では、ブランチ名の変更は必要ありません。 ただし、多くのリポジトリで既定のブランチが main に変更されているため、このクイック スタートでは、main からリポジトリをデプロイする方法も示します。

アプリをローカルで実行する

  1. アプリケーションをローカルで実行すると、アプリケーションを Azure にデプロイするとどう表示されるかを把握できます。 ターミナル ウィンドウを開き、php コマンドを使用して組み込みの PHP Web サーバーを起動します。

    php -S localhost:8080
    
  2. Web ブラウザーを開き、http://localhost:8080 のサンプル アプリに移動します。

    ページに表示されているサンプル アプリの Hello World! メッセージが表示されます。

    ローカルで実行されるサンプル アプリ

  3. ターミナル ウィンドウで Ctrl + C キーを押して、Web サーバーを終了します。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Azure Cloud Shell の [使ってみる] の例を示すスクリーンショット。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Azure Cloud Shell を起動するボタン。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Azure portal の [Cloud Shell] ボタンを示すスクリーンショット

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. 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 アプリを作成する

  1. Cloud Shell で az webapp create コマンドを使用して、myAppServicePlan App Service プランに Web アプリを作成します。

    次の例では、<app-name> をグローバルに一意のアプリ名に置き換えてください (有効な文字は a-z0-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 は後で必要になるので保存しておいてください。

  2. 新しく作成された Web アプリに移動します。 <app-name> は、前の手順で作成したアプリの一意の名前で置き換えます。

    http://<app-name>.azurewebsites.net
    

    新しい Web アプリは次のようになります。

    空の Web アプリ ページ

Git から Azure へのプッシュ

  1. 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'
    
  2. ローカル ターミナル ウィンドウで、ローカル Git リポジトリに Azure リモートを追加します。 <deploymentLocalGitUrl-from-create-step>を、「Web アプリを作成する」で保存した Git リモートの URL に置き換えます。

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  3. アプリをデプロイするために、次のコマンドで Azure リモートにプッシュします。 Git Credential Manager によって資格情報の入力を求めるメッセージが表示されたら、Azure portal へのサインインに使用する資格情報ではなく、「デプロイ ユーザーを構成する」で作成した資格情報を入力してください。

    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 アプリで実行されています。

Azure で実行されるサンプル アプリ

おめでとうございます。 App Service に初めての PHP アプリをデプロイしました。

コードをローカルで更新して再デプロイする

  1. ローカルのテキスト エディターを使用して、PHP アプリ内の index.php ファイルを開き、echo に続く文字列の中のテキストを少し変更します。

    echo "Hello Azure!";
    
  2. ローカル ターミナル ウィンドウで、変更を Git にコミットし、コード変更を Azure にプッシュします。

    git commit -am "updated output"
    git push azure main
    
  3. デプロイが完了したら、「アプリの参照」の手順で開いたブラウザー ウィンドウに戻り、ページを更新します。

    Azure で実行される更新済みのサンプル アプリ

新しい Azure アプリの管理

  1. Azure Portal に移動し、作成した Web アプリを管理します。 [App Services] を検索して選択します。

    App Services の検索、Azure portal、PHP Web アプリの作成

  2. 使用する Azure アプリの名前を選択します。

    Azure アプリへのポータル ナビゲーション

    Web アプリの [概要] ページが表示されます。 ここでは、参照停止再開削除のような基本的な管理タスクを行うことができます。

    Azure Portal の [App Service] ページ

    Web アプリ メニューに、アプリを構成するためのさまざまなオプションが示されます。

リソースをクリーンアップする

前の手順では、リソース グループ内に Azure リソースを作成しました。 これらのリソースが将来必要になると想定していない場合、Cloud Shell で次のコマンドを実行して、リソース グループを削除します。

az group delete --name myResourceGroup

このコマンドの実行には、少し時間がかかる場合があります。

Azure App Service は、非常にスケーラブルな、自己適用型の Web ホスティング サービスを提供します。 このクイックスタートでは、Azure App Service on Linux に PHP アプリをデプロイする方法について説明します。

Azure で実行されているサンプル アプリのスクリーンショット。

以下の手順は、Mac、Windows、または Linux コンピューターを使って実行できます。 前提条件のインストールを終えてから、以降の手順を完了するまでに約 5 分かかります。

このクイック スタートを完了するには、次のものが必要です。

1 - サンプル リポジトリを取得する

Azure CLI を使って Cloud Shell で Web アプリを作成できます。また、Git を使用して Web アプリに PHP のサンプル コードをデプロイします。

  1. ターミナル ウィンドウで、次のコマンドを実行して、ローカル コンピューターにサンプル アプリケーションを複製し、プロジェクト ルートに移動します。

    git clone https://github.com/Azure-Samples/php-docs-hello-world
    cd php-docs-hello-world
    
  2. アプリケーションをローカルで実行するには、php コマンドを使用して組み込みの PHP Web サーバーを起動します。

    php -S localhost:8080
    
  3. Web ブラウザーで http://localhost:8080 のサンプル アプリケーションを参照します。

    ローカルで実行されているサンプル アプリのスクリーンショット。

  4. ターミナル ウィンドウで 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 でサンプル アプリを実行して

お疲れさまでした。 Azure portal を使用して App Service に初めての PHP アプリをデプロイしました。

3 - アプリを更新して再デプロイする

  1. ローカルのテキスト エディターを使用して、PHP アプリ内の index.php ファイルを開き、echo に続く文字列の中のテキストを少し変更します。

    echo "Hello Azure!";
    
  2. 変更を保存した後、これらの引数を指定して az webapp up コマンドを再び使用してアプリを再デプロイします。

    az webapp up --runtime "PHP:8.2" --os-type=linux
    
  3. デプロイが完了したら、「アプリの参照」の手順で開いたブラウザー ウィンドウに戻り、ページを更新します。

    更新したサンプル アプリを Azure で実行したスクリーンショット。

4 - 新しい Azure アプリを管理する

  1. Azure Portal に移動し、作成した Web アプリを管理します。 「App Services」 を検索して選択します。

    Azure portal の検索ボックスに「app services」と入力したスクリーンショット。結果部分で、[サービス] の下の [App Services] オプションが強調表示されている。

  2. 使用する Azure アプリの名前を選択します。

    Azure における App Services の一覧のスクリーンショット。デモ アプリの名前が強調表示されている。

    Web アプリの [概要] ページが表示されるはずです。 ここでは、参照停止再開削除のような基本的な管理タスクを行うことができます。

    Azure portal における App Service の概要ページのスクリーンショット。アクション バーで、[参照]、[停止]、[スワップ] (無効)、[再開]、[削除] のボタン グループが強調表示されている。

    Web アプリ メニューに、アプリを構成するためのさまざまなオプションが示されます。

5 - リソースをクリーンアップする

サンプル アプリを使い終わったら、Azure からアプリのすべてのリソースを削除できます。 追加料金の発生が避けられ、Azure サブスクリプションの整合性を維持できます。 リソース グループを削除して、リソース グループ内のすべてのリソースも削除することが、アプリのすべての Azure リソースを削除する最も簡単な方法です。

az group delete コマンドでリソースグループを削除します。

az group delete --name myResourceGroup

このコマンドの実行には、少し時間がかかります。

次のステップ