你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

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

在 Azure 中运行应用的示例

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

如果没有 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
    

    提示

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

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

选项 示例/链接
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 显示 Azure Cloud Shell 的“试用”示例的屏幕截图。
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 用于启动 Azure 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”运行代码或命令。

配置部署用户

可以使用“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 应用

  1. 在 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,后续将会用到。

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

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

    新 Web 应用应该如下所示:

    空 Web 应用页

从 Git 推送到 Azure

  1. 由于要部署 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'
    
  2. 回到本地终端窗口,将 Azure 远程功能添加到本地 Git 存储库。 将 deploymentLocalGitUrl-from-create-step> 替换为从>保存的 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 应用服务 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 资源。 如果认为将来不需要这些资源,请在 Cloud Shell 中运行以下命令删除资源组:

az group delete --name myResourceGroup

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

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

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

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

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

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. 在 Web 浏览器中浏览到示例应用程序,地址为 http://localhost:8080

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

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

2 - 将应用程序代码部署到 Azure

Azure CLI 的 az webapp up 命令会在单个步骤中创建必需的资源并部署应用程序。

在终端中,使用 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 参数在 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.2",
  "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

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

在 Azure 中运行的示例应用的屏幕截图,其中显示了“Hello World!”。

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

    Azure 门户的屏幕截图,搜索文本框中键入了“应用服务”。在结果中,突出显示了“服务”下的“应用服务”选项。

  2. 选择 Azure 应用名称。

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

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

    Azure 门户中应用服务概述页的屏幕截图。突出显示了操作栏中的“浏览”、“停止”、“交换(已禁用)”、“重启”和“删除”按钮组。

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

5 - 清理资源

在使用完该示例应用后,可从 Azure 中删除该应用的所有资源。 它有助于避免产生额外费用,并使 Azure 订阅保持整洁。 删除资源组还会删除资源组中的所有资源,这也是为应用删除所有 Azure 资源的最快方法。

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

az group delete --name myResourceGroup

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

后续步骤