适用于: Azure Database for MySQL - 灵活服务器

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

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

本教程介绍以下操作:

  • 创建 MySQL 灵活服务器
  • 将 PHP 应用连接到 MySQL 灵活服务器
  • 将应用部署到 Azure 应用服务
  • 更新并重新部署应用
  • 如果没有 Azure 订阅,请在开始之前 创建一个 Azure 免费帐户 。 通过使用 Azure 免费帐户,你现在可以在 12 个月内免费试用 Azure Database for MySQL 灵活服务器。 有关详细信息,请参阅 免费试用灵活服务器

  • 安装 Git
  • Azure 命令行接口 (CLI)
  • 一个 Azure 订阅。如果你没有 Azure 订阅,请在开始之前创建一个 免费 Azure 帐户 。 通过使用 Azure 免费帐户,你现在可以在 12 个月内免费试用 Azure Database for MySQL 灵活服务器。 有关详细信息,请参阅 免费试用灵活服务器
  • 创建 Azure Database for MySQL 灵活服务器

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

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

    创建资源组

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

  • 打开命令提示符。
  • 登录 Azure 帐户。
    az login
    
  • 选择自己的 Azure 订阅。
    az account set -s <your-subscription-ID>
    
  • 创建资源组。
    az group create --name rg-php-demo --location centralus
    

    创建 MySQL 灵活服务器

  • 若要创建具有公共访问连接的 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 区域中创建了一个灵活服务器。 该服务器基于可突发 B1MS 计算 SKU,具有 32 GB 的存储空间和 7 天备份保持期,并配置了公共访问连接。

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

    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
    
  • 要创建新的 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 应用连接到 MySQL 灵活服务器,请参阅快速入门:使用 PHP 进行连接

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

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

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

    git branch -m main
    

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

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

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

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

    az webapp deployment user set \
    --user-name <your-deployment-username> \
    --password <your-deployment-password>
    
  • 要使用 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,因为稍后将需要它。

  • 接下来在 Web 应用上配置 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"
    

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

    使用本地 Git 部署应用程序

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

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

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

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

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

    git push azure main
    

    部署可能需要几分钟才能成功。

    测试应用程序

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

    恭喜! 你已成功将示例 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
    

    如何在 Azure 门户中管理资源

    如何管理服务器

  •