在 Azure App Service 中建立 PHP Web 應用程式

Azure App Service 可提供可高度擴充、自我修復的 Web 主控服務。 本快速入門教學課程會說明如何將 PHP 應用程式部署至 Windows 上的 Azure App Service。

您將會在 Cloud Shell 中使用 Azure CLI 建立 Web 應用程式,並使用 Git 將範例 PHP 程式碼部署至 Web 應用程式。

Sample app running in 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. 開啟網頁瀏覽器,然後巡覽至位於 http://localhost:8080 的範例應用程式。

    您會看到頁面中顯示的範例應用程式Hello World訊息。

    Sample app running locally

  3. 在終端機視窗中,按 Ctrl+C 結束 web 伺服器。

使用 Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼區塊右上角的 [試試看]。 選取 [試用] 並不會自動將程式碼複製到 Cloud Shell 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Screenshot that shows how to launch Cloud Shell in a new window.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要在 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 個字元,包含下列三個元素其中兩個:字母、數字及符號。
az webapp deployment user set --user-name <username> --password <password>

JSON 輸出會將密碼顯示為 null。 如果您收到 'Conflict'. Details: 409 錯誤,請變更使用者名稱。 如果您收到 'Bad Request'. Details: 400 錯誤,請使用更強的密碼。

將使用者名稱和密碼記錄下來,在部署 Web 應用程式時還會用到。

建立資源群組

資源群組是一個邏輯容器,可在其中部署與管理 Azure 資源 (例如 Web 應用程式、資料庫和儲存體帳戶)。 例如,您可以選擇在稍候透過一個簡單的步驟刪除整個資源群組。

在 Cloud Shell 中,使用 az group create 命令來建立資源群組。 下列範例會在「西歐」位置建立名為 myResourceGroup 的資源群組。 若要查看免費層中 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 應用程式

  1. 在 Cloud Shell 中,使用 az webapp create 命令,在 myAppServicePlan App Service 方案中建立 Web 應用程式。

    在下列範,了中,使用全域唯一的應用程式名稱 (有效的字元為 a-z0-9-) 取代 <app-name>。 執行階段設定為 PHP|7.4。 若要查看所有支援的執行階段,請執行 az webapp list-runtimes

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'PHP|7.4' --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. >
     }
     

    您已建立空的新 Web 應用程式,其中已啟用 Git 部署。

    注意

    Git 遠端的 URL 會顯示在 deploymentLocalGitUrl 屬性中,其格式為 https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git。 儲存此 URL,稍後您會用到此資訊。

  2. 瀏覽至您剛建立的 Web 應用程式。 將app-name > 取代 <為在上一個步驟中建立的唯一應用程式名稱。

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

    以下是新的 Web 應用程式看起來應該像這樣:

    Empty web app page

從 Git 推送至 Azure

  1. 由於您要部署 main 分支,因此必須將 App Service 應用程式的預設部署分支設定為 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. 回到本機終端視窗,將 Azure 遠端新增至本機 Git 存放庫。 將 <deploymentLocalGitUrl-from-create-step> 取代為您從建立 Web 應用程式儲存的 Git 遠端 URL。

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  3. 推送到 Azure 遠端,使用下列命令來部署您的應用程式。 當 Git 認證管理員提示輸入認證時,請務必輸入您在設定部署使用者中建立的認證,而不是您用來登入 Azure 入口網站的認證。

    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 應用程式中執行。

Sample app running in Azure

恭喜! 您已將第一個 PHP 應用程式部署至 App Service。

在本機更新和重新部署程式碼

  1. 使用本機文字編輯器,開啟 PHP 應用程式內的 index.php 檔案,並且對 echo 旁邊字串內的文字進行小幅變更:

    echo "Hello Azure!";
    
  2. 在本機終端機視窗中,在 Git 中認可您的變更,然後將程式碼變更推送至 Azure。

    git commit -am "updated output"
    git push azure main
    
  3. 部署完成後,返回在瀏覽至應用程式步驟中開啟的瀏覽器視窗,然後重新整理頁面。

    Updated sample app running in Azure

管理新的 Azure 應用程式

  1. 請移至 Azure 入口網站,以管理您所建立的 Web 應用程式。 搜尋並選取 [應用程式服務] 。

    Search for App Services, Azure portal, create PHP web app

  2. 選取您 Azure 應用程式的名稱。

    Portal navigation to Azure app

    您 Web 應用程式的 [概觀] 頁面會隨即顯示。 您可以在這裡執行基本管理工作,像是 [瀏覽] 、[停止] 、[重新啟動] 和 [刪除] 。

    App Service page in Azure portal

    Web 應用程式功能表提供不同的選項來設定您的應用程式。

清除資源

在前述步驟中,您在資源群組中建立了 Azure 資源。 如果您在未來不需要這些資源,請在 Cloud Shell 中執行下列命令,刪除資源群組:

az group delete --name myResourceGroup

此命令可能會花一分鐘執行。

Azure App Service 可提供可高度擴充、自我修復的 Web 主控服務。 本快速入門說明如何將 PHP 應用程式部署至 Linux 上的 Azure App 服務。

Sample app running in Azure

您可以使用 Mac、Windows 或 Linux 機器,依照此處的步驟操作。 安裝先決條件後,大約需要 5 分鐘才能完成這些步驟。

若要完成本快速入門,您需要:

  1. 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶
  2. Git
  3. PHPAzure CLI 以在任何殼層中執行命令,以布建和設定 Azure 資源。

1 - 取得範例存放庫

您可以在 Cloud Shell 中使用Azure CLI建立 Web 應用程式,並使用 Git 將範例 PHP 程式碼部署至 Web 應用程式。

  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. 流覽至網頁瀏覽器中的 範例應用程式 http://localhost:8080

    Sample app running locally

  4. 在終端機視窗中,按 Ctrl+C 結束 web 伺服器。

2 - 將應用程式程式碼部署至 Azure

Azure CLI 有一個命令 az webapp up ,將會建立必要的資源,並在單一步驟中部署您的應用程式。

在終端機中,使用 az webapp up 命令在本機資料夾中部署程式碼:

az webapp up --runtime "PHP:8.0" --os-type=linux
  • az如果無法辨識命令,請確定您已安裝Azure CLI
  • --runtime "php|8.0" 變數會使用 PHP 8.0 版建立 Web 應用程式。
  • --os-type=linux 變數會在 Linux 上的 App Service 上建立 Web 應用程式。
  • 您可以選擇性地使用 引數 --name <app-name> 來指定名稱。 如果您沒有提供名稱,則會自動產生名稱。
  • 您可以選擇性地加入引數 --location <location-name>,其中 <location_name> 是可用的 Azure 區域。 您可執行 az account list-locations 命令,擷取 Azure 帳戶的允許區域清單。
  • 如果您看到「無法自動偵測應用程式的執行時間堆疊」錯誤,請確定您在程式碼目錄中執行命令 (請參閱 針對 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.0",
  "runtime_version_detected": "0.0",
  "sku": "FREE",
  "src_path": "//home//msangapu//myPhpApp"
}

注意

az webapp up 命令會執行下列動作:

  • 建立預設 資源群組

  • 建立預設App Service方案

  • 建立 具有指定名稱的應用程式。

  • Zip 會部署 目前工作目錄中的所有檔案, 並啟用組建自動化

  • .azure/config 檔案中本機快取參數,以便在稍後使用 az webapp up 或其他 az webapp 命令從專案資料夾部署時,不需要再次指定參數。 預設會自動使用快取的值。

使用網頁瀏覽器瀏覽至已部署的應用程式 (URL 為 http://<app-name>.azurewebsites.net)。

PHP 範例程式碼正在Azure App 服務中執行。

Screenshot of the sample app running in Azure, showing 'Hello World!'.

恭喜! 您已使用 Azure 入口網站,將第一個 PHP 應用程式部署至App Service。

3 - 更新並重新部署應用程式

  1. 使用本機文字編輯器,開啟 PHP 應用程式內的 index.php 檔案,並且對 echo 旁邊字串內的文字進行小幅變更:

    echo "Hello Azure!";
    
  2. 儲存您的變更,然後使用 az webapp up 命令再次使用下列引數重新部署應用程式:

    az webapp up --runtime "PHP:8.0" --os-type=linux
    
  3. 部署完成後,返回在瀏覽至應用程式步驟中開啟的瀏覽器視窗,然後重新整理頁面。

    Updated sample app running in Azure

4 - 管理新的 Azure 應用程式

  1. 請移至 Azure 入口網站,以管理您所建立的 Web 應用程式。 搜尋並選取 [應用程式服務] 。

    Screenshot of the Azure portal with 'app services' typed in the search text box. In the results, the App Services option under Services is highlighted.

  2. 選取您 Azure 應用程式的名稱。

    Screenshot of the App Services list in Azure. The name of the demo app service is highlighted.

    您 Web 應用程式的 [概觀] 頁面會隨即顯示。 您可以在這裡執行基本管理工作,像是 [瀏覽] 、[停止] 、[重新啟動] 和 [刪除] 。

    Screenshot of the App Service overview page in Azure portal. In the action bar, the Browse, Stop, Swap (disabled), Restart, and Delete button group is highlighted.

    Web 應用程式功能表提供不同的選項來設定您的應用程式。

5 - 清除資源

當您完成範例應用程式時,您可以從 Azure 移除應用程式的所有資源。 它不會產生額外的費用,並讓您的 Azure 訂用帳戶保持不整齊。 移除資源群組也會移除該資源群組中的所有資源,而且是移除應用程式所有 Azure 資源最快的方式。

使用 az group delete 命令刪除資源群組。

az group delete --name myResourceGroup

此命令可能會花一分鐘執行。

後續步驟