在 Azure 应用服务中创建 PHP Web 应用

警告

Windows 上的 PHP 已于 2022 年 11 月 终止支持 。 仅 Linux 上的应用服务支持 PHP。 本文仅供参考。

Azure 应用服务提供高度可缩放、自修复的 Web 托管服务。 本快速入门教程演示如何将 PHP 应用部署到 Windows 上的 Azure 应用服务。

使用 Azure CLI 创建 Web 应用,并使用 Git 将 PHP 代码示例部署到 Web 应用。

在 Azure 中运行应用的示例

可以在 Mac、Windows 或 Linux 计算机上执行此处的步骤。 安装先决条件后,大约需要五分钟完成这些步骤。

如果没有 Azure 帐户,请在开始前创建一个试用帐户。

先决条件

若要完成本快速入门:

将示例下载到本地

  1. 在终端窗口中运行以下命令。 这样会将示例应用程序克隆到本地计算机,并导航到包含示例代码的目录。

    git clone https://github.com/Azure-Samples/php-docs-hello-world
    cd php-docs-hello-world
    
  2. 确保默认分支为 main。

    git branch -m main
    

    提示

    应用服务不需要更改分支名称。 但是,由于许多存储库将其默认分支更改为 main,因此本快速入门还介绍如何从 main 部署存储库。

在本地运行应用

  1. 在本地运行应用程序,以便你能了解将它部署到 Azure 时它的外观应该是什么样的。 打开一个终端窗口并使用 php 命令启动内置的 PHP Web 服务器。

    php -S localhost:8080
    
  2. 打开 Web 浏览器并导航到 http://localhost:8080 处的示例应用。

    页面中会显示该示例应用发出的“Hello World!”消息。

    在本地运行的示例应用

  3. 在终端窗口中,按 Ctrl+C 退出 Web 服务器。

配置部署用户

FTP 和本地 Git 可以使用部署用户部署到 Azure Web 应用。 配置部署用户之后,可对所有 Azure 部署使用此用户。 帐户级部署用户名和密码不同于 Azure 订阅凭据。

若要配置部署用户,请在 Azure CLI 中运行 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 应用、数据库和存储帐户)的逻辑容器。 例如,您之后可以选择只需简单一步即可删除整个资源组。

使用 az group create 命令创建资源组。 以下示例在“西欧”位置创建名为“myResourceGroup”的资源组。 若要查看“免费”层中应用服务支持的所有位置,请运行 命令。

az group create --name myResourceGroup --location "chinanorth3"

你通常会在离你较近的区域中创建资源组及其中的资源。

此命令完成后,JSON 输出会显示资源组属性。

创建 Azure 应用服务计划

在 Azure CLI 中,使用 az appservice plan create 命令创建一个应用服务计划。

以下示例在免费定价层中创建名为 myAppServicePlan 的应用服务计划:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux

创建应用服务计划后,Azure CLI 会显示类似于以下示例的信息:

{ 
  "freeOfferExpirationTime": null,
  "geoRegion": "China North",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "China North",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

创建 Web 应用

  1. 在你的本地 Shell 中,使用 myAppServicePlan 命令在 az webapp create 应用服务计划中创建一个 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>.chinacloudsites.cn",
       "enabled": true,
       < JSON data removed for brevity. >
     }
     

    现在你已经创建了一个新的空 Web 应用并启用了 Git 部署。

    注意

    Git 远程 URL 显示在 deploymentLocalGitUrl 属性中。 保存此 URL,后续将会用到。

  2. 浏览到新建的 Web 应用。

    新 Web 应用应该如下所示:

    空 Web 应用页

从 Git 推送到 Azure

  1. 由于要部署 main 分支,因此需要将应用服务应用的默认部署分支设置为 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'
    
  2. 回到本地终端窗口,将 Azure 远程功能添加到本地 Git 存储库。 将 > 替换为你在 Create a web app 中保存的 Git 远程 URL。

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  3. 使用以下命令将代码推送到 Azure 远程仓库以部署你的应用。 当 Git 凭据管理器提示输入凭据时,请确保输入在配置本地 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 <URL>
      cc39b1e..25f1805  main -> main
  

转到该应用

使用 Web 浏览器浏览到已部署的应用程序。

PHP 示例代码正在 Azure 应用服务 Web 应用中运行。

在 Azure 中运行应用的示例

恭喜! 现已将第一个 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 门户管理创建的 Web 应用。 搜索并选择“应用服务”。

    搜索应用服务, Azure 门户, 创建 PHP web 应用

  2. 选择 Azure 应用名称。

    在门户中导航到 Azure 应用

    此时会显示 Web 应用的“概览”页。 可在此处执行基本的管理任务,例如浏览、停止、重启和删除。

    Azure 门户中的“应用服务”页

    Web 应用菜单提供用于配置应用的不同选项。

清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果认为将来不需要这些资源,请在本地 Azure CLI 中运行以下命令删除资源组:

az group delete --name myResourceGroup

运行此命令可能需要一分钟时间。

Azure 应用服务提供用于 Web 托管的高度可缩放的自修补服务。 本快速入门演示如何将 PHP 应用部署到 Linux 上的 Azure 应用服务。

在 Azure 中运行的示例应用的屏幕截图。

可以在 Mac、Windows 或 Linux 计算机上执行此处的步骤。 安装先决条件后,大约需要 10 分钟才能完成这些步骤。

先决条件

  • 具有活动订阅的 Azure 帐户。 创建帐户。
  • Git
  • PHP
  • Azure CLI 用于在任何 shell 中运行命令以创建和配置 Azure 资源。

下载示例存储库

在以下步骤中,您将使用 Azure CLI 创建 Web 应用程序,然后将示例 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. 在 Web 浏览器中浏览到示例应用程序,地址为 http://localhost:8080。

    本地运行的示例应用程序的屏幕截图。

  4. 在终端窗口中,按 Ctrl+C 退出 Web 服务器。

将应用程序代码部署到 Azure

创建 Azure 资源,并用不同的 Azure CLI 命令部署应用。

在终端中,将 <app-name> 替换为全球唯一的名称,并创建资源组、Linux 应用服务计划和 PHP Web 应用:

az group create --name myResourceGroup --location chinanorth3
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "PHP:8.2"
  • 如果无法识别 az 命令,请确认已经安装了 Azure CLI。
  • 该--runtime "PHP:8.2"参数创建了一个PHP 8.2的Web应用;--is-linux选择Linux 上的应用服务。
  • --sku P0v3 参数用于选择付费的 Premium v3 套餐。 将 eastus 替换为你偏好的区域。 你可以用 az account list-locations 来列出可用区域。

创建一个 ZIP 压缩包,使其根目录包含 php-docs-hello-world 目录中的文件,而不是外层目录。 在 Linux 或 macOS 上,从应用目录运行 zip -r ../app.zip . -x '*/.git/*' '*/.env*' 。 在 Windows 上,在 PowerShell 中从应用目录运行 Compress-Archive -Path * -DestinationPath ..\app.zip。 然后部署它:

az webapp deploy --resource-group myResourceGroup --name <app-name> --src-path ../app.zip --type zip

浏览到 https://<app-name>.chinacloudsites.cn 以查看已部署的应用程序。

PHP 示例代码在 Azure 应用服务中运行。

在 Azure 中运行的示例应用的屏幕截图,显示 Hello World。

恭喜! 你已使用 Azure 门户将第一个 PHP 应用部署到应用服务。

更新并重新部署应用

  1. 找到目录 php-docs-hello-world 并使用本地文本编辑器打开 index.php 文件。 对 : 旁边的 echo字符串中的文本进行少量更改

    echo "Hello Azure!";
    
  2. 保存您的更改,按部署您的应用代码到 Azure中所述,从应用程序文件重新创建 ../app.zip,然后重新部署:

    az webapp deploy --resource-group myResourceGroup --name <app-name> --src-path ../app.zip --type zip
    
  3. 完成部署后,返回到“浏览到应用”步骤期间打开的浏览器窗口,然后刷新页面。

    在 Azure 中运行的更新示例应用的屏幕截图。

管理新的 Azure 应用

  1. 转到 Azure 门户管理创建的 Web 应用。 搜索并选择“应用服务”。

    Azure 门户的屏幕截图,显示在搜索文本框中键入了“app services”。

  2. 选择你的 Azure 应用以将其打开。

    Azure 中应用服务列表的屏幕截图。演示应用程序服务的名称将突出显示。

    此时应会显示 Web 应用的“概览”页。 可在此处执行基本的管理任务,例如浏览、停止、重启和删除。

    Azure 门户中“应用服务概述”页的屏幕截图。在作栏中,突出显示了 Browse、Stop、Swap、Restart 和 Delete 按钮组。

    Web 应用菜单提供用于配置应用的不同选项。

清理资源

完成示例应用后,可以从 Azure 中删除应用的所有资源,这样就可以避免额外费用并保持 Azure 订阅整洁。 删除资源组还会删除资源组中的所有资源,这也是为应用删除所有 Azure 资源的最快方法。

使用 az group delete 命令删除资源组。

az group delete --name myResourceGroup

此命令需要一分钟才能运行。