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

教程:在 Azure 应用服务上部署 PHP 和 Azure Database for MySQL - 灵活服务器应用

Azure 应用服务使用 Linux 操作系统,提供高度可缩放的自修补 Web 托管服务。

本教程介绍如何生成示例 PHP 应用程序并将其部署到 Azure 应用服务,以及如何在后端将其与 Azure Database for MySQL 灵活服务器集成。 在此处,你将使用 Azure Database for MySQL 灵活服务器实例中的公共访问连接(允许的 IP 地址)连接到应用服务应用。

本教程介绍以下操作:

  • 创建 Azure Database for MySQL 灵活服务器实例
  • 将 PHP 应用连接到 Azure Database for MySQL 灵活服务器实例
  • 将应用部署到 Azure 应用服务
  • 更新并重新部署应用

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户。 目前,通过 Azure 免费帐户,可以在 12 个月内免费试用 Azure Database for MySQL - 灵活服务器。 有关详细信息,请参阅使用 Azure 免费帐户免费试用 Azure Database for MySQL - 灵活服务器

先决条件

创建 Azure Database for MySQL 灵活服务器

首先,我们将预配具有公共访问连接的 Azure Database for MySQL 灵活服务器实例,配置防火墙规则以允许应用程序访问服务器,并创建生产数据库。

若要了解如何改用专用访问连接并在虚拟网络中隔离应用和数据库资源,请参阅教程:将应用服务 Web 应用连接到虚拟网络中的 Azure Database for MySQL 灵活服务器

创建资源组

Azure 资源组是一个逻辑组,用于部署和管理 Azure 资源。 请使用 az group create 命令在 centralus 位置创建一个资源组 rg-php-demo。

  1. 打开命令提示符。

  2. 登录 Azure 帐户。

    az login
    
  3. 选择自己的 Azure 订阅。

    az account set -s <your-subscription-ID>
    
  4. 创建资源组。

    az group create --name rg-php-demo --location centralus
    

创建 Azure Database for MySQL 灵活服务器实例

  1. 要创建具有公共访问连接的 Azure Database for MySQL 灵活服务器实例,请运行以下 az flexible-server create 命令。 替换服务器名称、管理员用户名和密码的值。

    az mysql flexible-server create \
    --name <your-mysql-server-name> \
    --resource-group rg-php-demo \
    --location centralus \
    --admin-user <your-mysql-admin-username> \
    --admin-password <your-mysql-admin-password>
    

    现在,你已在 CentralUS 区域中创建了 Azure Database for MySQL 灵活服务器实例。 该服务器基于可突发 B1MS 计算 SKU,具有 32 GB 的存储空间和 7 天备份保持期,并配置了公共访问连接。

  2. 接下来,要为 Azure Database for MySQL 灵活服务器实例创建防火墙规则以允许客户端连接,请运行以下命令。 当起始 IP 和结束 IP 都设置为 0.0.0.0 时,只有其他 Azure 资源(如应用服务应用、VM、AKS 群集等)可以连接到 Azure Database for MySQL 灵活服务器实例。

    az mysql flexible-server firewall-rule create \
     --name <your-mysql-server-name> \
     --resource-group rg-php-demo \
     --rule-name AllowAzureIPs \
     --start-ip-address 0.0.0.0 \
     --end-ip-address 0.0.0.0
    
  3. 要创建新的 Azure Database for MySQL 灵活服务器生产数据库 sampledb 以用于 PHP 应用程序,请运行以下命令:

    az mysql flexible-server db create \
    --resource-group rg-php-demo \
    --server-name <your-mysql-server-name> \
    --database-name sampledb
    

生成应用程序

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

要详细了解应用程序代码,请继续探索 GitHub 存储库中的应用。 若要了解如何将 PHP 应用连接到 Azure Database for MySQL 灵活服务器,请参阅将 PHP 与 Azure Database for MySQL 灵活服务器配合使用

在本教程中,我们将直接克隆编码的示例应用,并了解如何将其部署到 Azure 应用服务上。

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

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

    git branch -m main
    

创建和配置 Azure 应用服务 Web 应用

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

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

    az appservice plan create --name plan-php-demo \
    --resource-group rg-php-demo \
    --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 rg-php-demo \
    --plan plan-php-demo \
    --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. 接下来,我们将在 Web 应用上配置 Azure Database for MySQL 灵活服务器数据库连接设置。

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

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group rg-php-demo \
    --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"
    

    此外,也可以使用服务连接器在应用服务应用与 Azure Database for MySQL 灵活服务器实例之间建立连接。 有关详细信息,请参阅将 Azure Database for MySQL 灵活服务器与服务连接器集成

使用本地 Git 部署应用程序

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

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

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

  3. 要将 Azure 远程添加到本地 Git 存储库,请运行以下命令。 将 <deploymentLocalGitUrl> 替换为你在创建应用服务网络应用步骤中保存的 Git 远程的 URL。

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

    git push azure main
    

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

测试应用程序

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

显示示例产品目录 PHP Web 应用的屏幕截图。

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

更新并重新部署应用

若要更新 Azure 应用,请进行必要的代码更改,在 Git 中提交所有更改,然后将代码更改推送到 Azure。

git add .
git commit -m "Update Azure app"
git push azure main

git push 完成后,请导航到或刷新 Azure 应用,以测试新功能。

清理资源

在本教程中,你在资源组中创建了所有 Azure 资源。 如果认为将来不需要这些资源,请在 Cloud Shell 中运行以下命令删除资源组:

az group delete --name rg-php-demo