练习 - 在 Azure 应用服务上部署 PHP 和 MySQL 灵活服务器应用

已完成

在本单元中,你将生成示例 PHP 应用程序并将其部署到 Azure 应用服务,然后将其与后端的 Azure Database for MySQL 灵活服务器集成。

步骤 1 - 创建 Azure Database for MySQL 灵活服务器

首先预配具有公共访问连接的 MySQL 灵活服务器,配置防火墙规则以允许应用程序访问服务器,然后创建生产数据库。

我们将使用 Azure 门户演练 MySQL 灵活服务器创建体验。

  1. 使用激活沙盒时所用的同一帐户登录到 Azure 门户

  2. 在页面顶部的搜索框中,输入“MySQL”,然后选择“Azure Database for MySQL 灵活服务器”。

    门户顶部的搜索栏的屏幕截图,其中显示了搜索 mysql 的结果。

  3. 在“Azure Database for MySQL 灵活服务器”页上,选择“+ 创建”,然后选择“灵活服务器”。

    展开的“创建”菜单的屏幕截图,其中突出显示了“灵活服务器”菜单项。

  4. 在“灵活服务器”页的“基本信息”选项卡上,输入下表中的信息。

    设置 建议的值
    订阅 Concierge 订阅
    资源组 从下拉列表中,选择以 learn- 开头的资源组
    服务器名称 输入可标识灵活服务器的全局唯一名称。
    MySQL 版本 8.0
    工作负荷类型 选择“用于开发或兴趣项目”
    管理员用户名 输入 mysqladmin。 不要使用“azure-superuser”、“admin”、“administrator”、“root”、“guest”或“public”。
    密码 输入 Passw0rd123。 它必须包含 8 到 128 个字符,并且包含三类字符:英文大写字母、英文小写字母、数字(0 到 9)以及非字母数字字符(例如 !、$、#、%)。

    对所有其他设置保留保留默认值。

  5. 在“基本”选项卡上,在“计算 + 存储”下选择“配置服务器”。

  6. 在“计算 + 存储”页上,配置以下设置:

    • 计算
      • 选择“可突发”计算层。
      • 在“计算大小”下拉列表中,选择“Standard_B1s(1 vCore,1 GiB 内存,400 最大 IOPS)”。
    • 存储
      • 确保“存储大小(以 GB 为单位)”设置为 20
      • 选择“预配的 IOPS”,并将值设置为 360
      • 确保已选中“存储自动增长”复选框。
    • 高可用性
      • 确保“启用高可用性”复选框处于未选中状态。
    • 备份
      • 确保将“备份保持期(天数)”设置为“7”。
      • 确保“从区域中断或灾难中恢复”复选框处于未选中状态。
  7. 选择“保存”,然后导航到“网络”选项卡。

    显示灵活服务器创建边栏选项卡的屏幕截图,其中“网络”选项卡周围有红色框。

  8. 在“网络”选项卡中,选择“公共访问(允许的 IP 地址)”连接方法,并选中“允许使用公共 IP 地址从互联网访问此资源”,然后选中“允许从 Azure 内的任何 Azure 服务公开访问此服务器”,如以下屏幕截图所示。

  9. 选择“查看 + 创建”,查看你的 MySQL 灵活服务器配置。

  10. 选择“创建”以预配服务器。 预配可能需要长达 10 分钟的时间。

  11. 部署完成后,选择“转到资源”以查看 Azure Database for MySQL 灵活服务器的“概述”页。

在本练习的其余部分中,你要使用显示在此窗口右侧的 Azure Cloud Shell 运行命令。

要创建新的 MySQL 生产数据库 sampledb 以用于 PHP 应用程序,请运行以下命令:

az mysql flexible-server db create \
--resource-group <rgn>[Sandbox resource group name]</rgn> \
--server-name <your-mysql-server-name> \
--database-name sampledb

步骤 2 - 克隆应用程序

对于本练习而言,你使用显示和管理产品目录的示例 PHP 应用程序。 该应用程序提供基本功能,如查看目录中的产品、添加新产品、更新现有项目价格,以及删除产品。

直接克隆编码的应用,并了解如何将其部署到 Azure 应用服务上。

注意

要详细了解应用程序代码,请继续探索 GitHub 存储库中的应用!

  1. 要克隆示例应用程序存储库并转到存储库根路径,请运行以下命令:

    git clone https://github.com/Azure-Samples/php-mysql-app-service.git
    cd php-mysql-app-service
    
  2. 运行以下命令以确保默认分支为 main

    git branch -m main
    

步骤 3 - 创建和配置 Azure 应用服务 Web 应用

在 Azure 应用服务(Web 应用、API 应用或移动应用)中,应用始终在应用服务计划中运行。 应用服务计划为要运行的 Web 应用定义一组计算资源。 在此步骤中,你将创建一个 Azure 应用服务计划,并在该计划中创建一个应用服务 Web 应用以托管示例应用程序。

  1. 要使用免费定价层创建应用服务计划,请运行以下命令:

    az appservice plan create --name plan-learn \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --location centralus \
    --sku FREE --is-linux
    
  2. 如果要使用 FTP 或本地 Git 等部署方法将应用程序部署到 Azure Web 应用,则需使用用户名和密码凭据配置部署用户。 配置部署用户之后,可将其用于所有 Azure 应用服务部署。

    az webapp deployment user set \
    --user-name <your-deployment-username> \
    --password <your-deployment-password>
    
  3. 要使用 PHP 8.0 运行时创建应用服务 Web 应用,并配置本地 Git 部署选项以在本地计算机上部署 Git 存储库中的应用,请运行以下命令。

    注意:请将 <your-app-name> 替换为全局唯一的应用名称(有效字符为 a-z、0-9 和 -)。

    az webapp create \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --plan plan-learn \
    --name <your-app-name> \
    --runtime "PHP|8.0" \
    --deployment-local-git
    

    重要

    在 Azure CLI 输出中,Git 远程的 URL 以 https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git 格式显示在 deploymentLocalGitUrl 属性中。 保存此 URL,因为稍后将需要它。

  4. 示例 PHP 应用程序中的 config.php 文件使用 getenv() 函数从环境变量检索数据库连接信息(服务器名、数据库名、服务器用户名和密码)。 在应用服务中,要将环境变量设置为应用程序设置 (appsettings),请运行以下命令:

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --settings DB_HOST="<your-server-name>.mysql.database.azure.com" \
    DB_DATABASE="sampledb" \
    DB_USERNAME="<your-mysql-admin-username>" \
    DB_PASSWORD="<your-mysql-admin-password>" \
    MYSQL_SSL="true"
    

    此命令将在 Web 应用上配置 MySQL 灵活服务器数据库连接设置。

步骤 4 - 使用本地 Git 部署应用程序

现在,你将使用本地 Git 部署选项将示例 PHP 应用程序部署到 Azure 应用服务。

  1. 由于要部署主分支,因此需要将应用服务应用的默认部署分支设置为主分支。 要在“应用程序设置”下设置 DEPLOYMENT_BRANCH,请运行以下命令:

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --settings DEPLOYMENT_BRANCH='main'
    
  2. 验证你是否在应用程序存储库的根目录中。

  3. 要将 Azure 远程添加到本地 Git 存储库,请运行以下命令。

    注意:请将 <deploymentLocalGitUrl> 替换为你在“创建应用服务 Web 应用”步骤中保存的 Git 远程的 URL。

    git remote add azure <deploymentLocalGitUrl>
    
  4. 要向 Azure 远程执行 git push 来部署应用,请运行以下命令。 当 Git 凭据管理器提示你输入凭据时,请输入你在“配置部署用户”步骤中创建的部署凭据。

    git push azure main
    

部署可能需要几分钟时间才能完成。

步骤 5 - 测试应用

最后,浏览到 https://<app-name>.azurewebsites.net 来测试应用程序,然后在产品目录中添加、查看、更新或删除项目。

Web 浏览器中显示的已部署 Web 应用的屏幕截图。

祝贺你! 你已成功将示例 PHP 应用程序部署到 Azure 应用服务,并将其与后端的 Azure Database for MySQL 灵活服务器集成。