Windows 上的 PHP 已于 2022 年 11 月终止,目前仅在 Linux 的应用服务上适用。 本文仅供参考。 .

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

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

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

如果没有 Azure 订阅 ,请在开始之前创建一个 Azure 免费帐户

2022 年 11 月 28 日之后,将仅在 Linux 上的应用服务上支持 PHP。

完成本快速入门教程需要:

  • 安装 Git
  • 安装 PHP
  • 将示例下载到本地

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

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

    git branch -m main
    

    应用服务不需要更改分支名称。 但是,由于许多存储库将其默认分支更改为 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(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。

    若要启动 Azure Cloud Shell,请执行以下操作:

    示例/链接
  • 选择代码块(或命令块)上的“复制”按钮以复制代码或命令。

  • 在 Windows 和 Linux 上选择 Ctrl+Shift+V,或在 macOS 上选择 Cmd+Shift+V 将代码或命令粘贴到 Cloud Shell 会话中。

  • 选择“Enter”运行代码或命令。

    配置部署用户

    可以使用“deployment user”将 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”的资源组。 若要查看“免费”层中应用服务支持的所有位置,请运行 命令。

    az group create --name myResourceGroup --location "West Europe"
    

    通常在附近的区域中创建资源组和资源。

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

    创建 Azure 应用服务计划

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

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

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

    创建应用服务计划后,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 中,使用 az webapp create 命令在应用服务计划 myAppServicePlan 中创建一个 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. >

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

    Git 远程的 URL 将显示在 deploymentLocalGitUrl 属性中,其格式为 https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git。 保存此 URL,后续将会用到。

  • 浏览到新建的 Web 应用。 将 <app-name> 替换为在上一步中创建的唯一应用名称。

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

    新 Web 应用应该如下所示:

    从 Git 推送到 Azure

  • 由于要部署 main 分支,因此需要将应用服务应用的默认部署分支设置为 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'
    
  • 回到本地终端窗口,将 Azure 远程功能添加到本地 Git 存储库。 将 deploymentLocalGitUrl-from-create-step> 替换为从>保存的 Git 远程 URL。

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  • 使用以下命令推送到 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 应用服务 Web 应用中运行。

    恭喜! 现已将第一个 PHP 应用部署到应用服务。

    在本地更新并重新部署代码

  • 使用本地文本编辑器打开 PHP 应用中的 index.php 文件,并对 echo 旁边的字符串中的文本稍微进行更改:

    echo "Hello Azure!";
    
  • 在本地终端窗口中,提交在 Git 中所做的更改,然后将代码更改推送到 Azure。

    git commit -am "updated output"
    git push azure main
    
  • 完成部署后,返回到“浏览到应用”步骤期间打开的浏览器窗口,然后刷新页面。

    管理新的 Azure 应用

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

  • 选择 Azure 应用名称。

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

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

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

    az group delete --name myResourceGroup
    

    此命令可能需要花费一点时间运行。

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

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

    若要完成本快速入门,你需要:

  • 具有活动订阅的 Azure 帐户。 免费创建帐户
  • Azure CLI,用于在任何 shell 中运行命令来预配和配置 Azure 资源。
  • 1 - 获取示例存储库

    Azure CLI Portal

    可在 Cloud Shell 中使用 Azure CLI 创建 Web 应用,并使用 Git 将 PHP 代码示例部署到该 Web 应用。

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

    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 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 上的应用服务上创建 web 应用。
  • 可以选择使用参数 --name <app-name> 指定名称。 如果你未提供名称,则会自动生成一个名称。
  • 可以选择包含参数 --location <location-name>,其中 <location_name> 是可用的 Azure 区域。 可以运行 az account list-locations 命令来检索 Azure 帐户的允许区域列表。
  • 如果看到“无法自动检测应用的运行时堆栈”错误,请确保运行代码目录中的命令(请参阅使用 az webapp up 排查自动检测问题)。
  • 此命令可能需要花费几分钟时间完成。 运行时,它提供以下相关信息:创建资源组、应用服务计划、应用资源、配置日志记录以及执行 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 命令执行以下操作:

  • 创建一个默认的资源组

  • 创建一个默认的应用服务计划

  • 使用指定名称创建应用

  • 对当前工作目录中的所有文件进行 zip 部署,并启用生成自动化

  • 将参数本地缓存在 .azure/config 文件中,使得以后使用项目文件夹中的 az webapp up 或其他 az webapp 命令部署时,无需再次指定它们。 默认情况下,自动使用缓存的值。

    在 Web 浏览器中使用以下 URL 浏览到已部署的应用程序:http://<app-name>.azurewebsites.net

  • 保存更改,然后再次使用 az webapp up 命令重新部署应用,并使用如下参数:

    az webapp up --runtime "PHP:8.0" --os-type=linux
    
  • 完成部署后,返回到“浏览到应用”步骤期间打开的浏览器窗口,然后刷新页面。

  •