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

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

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

在 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 訊息顯示在網頁中。

    在本機執行的範例應用程式

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

Azure Cloud Shell

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

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Azure Cloud Shell 的「試試看」範例螢幕擷取畫面。
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 顯示如何在新視窗中啟動 Cloud Shell 的螢幕擷取畫面。
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 顯示 Azure 入口網站中 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 個字元,包含下列三個元素其中兩個:字母、數字及符號。
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 應用程式看起來應該像這樣:

    空的 Web 應用程式頁面

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

在 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. 部署完成後,返回在瀏覽至應用程式步驟中開啟的瀏覽器視窗,然後重新整理頁面。

    在 Azure 中執行的已更新範例應用程式

管理新的 Azure 應用程式

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

    搜尋應用程式服務、Azure 入口網站、建立 PHP Web 應用程式

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

    入口網站瀏覽至 Azure 應用程式

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

    Azure 入口網站中的 App Service 頁面

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

清除資源

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

az group delete --name myResourceGroup

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

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

螢幕擷取畫面:顯示在 Azure 中執行的範例應用程式。

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

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

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 的應用程式範例。

    螢幕擷取畫面:顯示在本機執行的範例應用程式。

  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 Service 中執行。

螢幕擷取畫面:在 Azure 中執行的範例應用程式,顯示「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. 部署完成後,返回在瀏覽至應用程式步驟中開啟的瀏覽器視窗,然後重新整理頁面。

    螢幕擷取畫面:顯示在 Azure 中執行的已更新範例應用程式。

4. 管理新的 Azure 應用程式

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

    螢幕擷取畫面:Azure 入口網站與搜尋文字輸入框輸入「app services」。搜尋結果則在 [服務] 下方已醒目提示 [App Service] 選項。

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

    螢幕擷取畫面:Azure 中的 App Service。已醒目提示示範應用程式服務的名稱。

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

    螢幕擷取畫面:Azure 入口網站 中 App Service 概觀頁面,已醒目提示 [瀏覽器]、[停止]、[交換] (停用)、[重新啟動]、[刪除] 按鈕群組。

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

5 - 清理資源

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

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

az group delete --name myResourceGroup

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

後續步驟