添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Azure 应用服务 使用 Linux 操作系统,提供高度可缩放的自修补 Web 托管服务。 本教程演示如何(使用 Azure Database for MySQL 灵活服务器)在连接到 MySQL 数据库的Azure 应用服务中创建安全 PHP 应用。 完成本教程后,Linux 上的 Azure 应用服务中将会运行一个 Laravel 应用。

在本教程中,你将了解如何执行以下操作:

  • 在 Azure 中创建一个默认为安全的 PHP 和 MySQL 应用程序
  • 使用应用设置将连接机密配置到 MySQL
  • 使用 GitHub Actions 部署应用程序代码
  • 更新并重新部署应用
  • 安全运行数据库迁移
  • 从 Azure 流式传输诊断日志
  • 在 Azure 门户中管理应用
  • 一个 Azure 订阅。如果你没有 Azure 订阅,请在开始之前创建一个 免费 Azure 帐户 。 目前,通过 Azure 免费帐户,可以在 12 个月内免费试用 Azure Database for MySQL - 灵活服务器。 有关详细信息,请参阅 使用 Azure 免费帐户免费试用 Azure Database for MySQL - 灵活服务器
  • 示例应用程序

    要继续学习本教程,请从资源库中克隆或下载示例应用程序:

    git clone https://github.com/Azure-Samples/laravel-tasks.git
    

    若要在本地运行应用程序,请执行以下操作:

  • 在 .env 中,使用本地 Azure Database for MySQL 灵活服务器数据库中的设置配置数据库设置(如 DB_DATABASEDB_USERNAMEDB_PASSWORD。 需要一个本地 Azure Database for MySQL 灵活服务器实例才能运行此示例。

  • 在存储库的根目录中,使用以下命令启动 Laravel:

    composer install
    php artisan migrate
    php artisan key:generate
    php artisan serve
    

    1 - 创建应用服务和 Azure Database for MySQL 灵活服务器资源

    此步骤创建 Azure 资源。 本教程中使用的步骤会创建默认安全的应用服务和 Azure Database for MySQL 灵活服务器配置。 此创建过程中,你将指定:

  • Web 应用的名称。 此名称用作 Web 应用的 DNS 名称的一部分,其格式为 https://<app-name>.azurewebsites.net
  • 应用的运行时。 在此处选择要用于应用的 PHP 版本。
  • 应用的资源组。 使用资源组可将应用程序所需的所有 Azure 资源分组到一个逻辑容器中。
  • 登录到 Azure 门户并按照以下步骤创建 Azure 应用服务资源。

  • 运行时堆栈 → PHP 8.0。

    默认情况下,选择 MySQL - 灵活服务器作为数据库引擎。 Azure Database for MySQL 是 Azure 上完全托管的 MySQL 数据库即服务,与最新的社区版本兼容。

  • 请注意为你生成的数据库名称 (<app-name>-database)。 稍后需要用到此信息。

  • 选择“查看 + 创建”。

    验证完成后,选择“创建”。
  • 应用服务计划 → 定义应用服务的计算资源。 将创建 P1v2 层中的 Linux 计划。
  • 应用服务 → 表示应用,且在应用服务计划中运行。
  • 虚拟网络 → 与应用服务应用集成,并隔离后端网络流量。
  • Azure Database for MySQL - 灵活服务器 → 只能从虚拟网络访问。 你的数据库和用户创建于此服务器上。
  • 专用 DNS 区域 → 启用虚拟网络中 MySQL 数据库服务器的 DNS 解析。
  • 部署完成后,选择“转到资源”按钮。 你将直接转到应用服务应用。
  • 在“名称”字段中,输入“MYSQL_ATTR_SSL_CA”。

  • 在“”字段中,输入“/home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem”。

    此应用设置指向访问 MySQL 服务器所需的 TLS/SSL 证书的路径。 为了方便起见,它包含在示例存储库中。

  • 选择“确定”

  • APP_DEBUG:使用 true 作为值。 这是 Laravel 调试变量

  • APP_KEY:使用 base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= 作为值。 这是 Laravel 加密变量

    为了方便起见,此处使用 APP_KEY 值。 对于生产方案,应在命令行中使用 php artisan key:generate --show 专门为你的部署进行生成。

    在“常规设置”选项卡中:
    1. 在“启动命令”框中,输入以下命令:cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload。

      它将替换 PHP 8.0 容器中的 Nginx 配置文件并重启 Nginx。 此配置可确保每次启动容器时对容器进行此更改。

    2. 选择“保存”。

    3. 如何连接到在虚拟网络后面受到保护的 Azure Database for MySQL 灵活服务器数据库?
    4. 本地应用开发如何处理 GitHub Actions?
    5. 为什么 GitHub Actions 部署速度这么慢?
    6. 此设置花费有多大?

      创建资源的定价如下所示:

    7. 应用服务计划是在高级 V2 层中创建的,可以纵向扩展或缩减。 请参阅应用服务定价
    8. Azure Database for MySQL 灵活服务器实例是在 B1ms 层中创建的,可以纵向扩展或缩减。 使用 Azure 免费帐户时,B1ms 层在 12 个月内免费,不能超过每月限制。 请参阅 Azure Database for MySQL 灵活服务器定价
    9. 除非配置额外的功能(例如对等互连),否则虚拟网络不会产生费用。 请参阅 Azure 虚拟网络定价
    10. 专用 DNS 区域会产生少量费用。 请参阅 Azure DNS 定价
    11. 如何连接到在虚拟网络后面受到保护的 Azure Database for MySQL 灵活服务器数据库?

      若要连接到 Azure Database for MySQL 灵活服务器数据库,可以根据可用的工具和环境使用几种方法:

    12. 命令行工具访问
      • 使用应用的 SSH 终端中的 mysql 命令进行基本访问。
      • 桌面工具(例如 MySQL Workbench)
        • 通过 Azure CLI 使用 SSH 隧道
          • 使用 Azure CLI 创建到 Web 应用的 SSH 会话
          • 使用 SSH 会话将流量隧道传送到 MySQL。
          • 使用站点到站点 VPN 或 Azure VM
            • 计算机必须是虚拟网络的一部分。
            • 请考虑使用:
              • 链接到其中一个子网的 Azure VM。
              • 本地网络中站点到站点 VPN 连接到 Azure 虚拟网络的计算机。
              • 本地应用开发如何与 GitHub Actions 配合使用?

                以应用服务自动生成的工作流文件为例,每个 git push 文件都会启动新的生成和部署运行。 从 GitHub 存储库的本地克隆中,将所需的更新推送到 GitHub。 例如:

                git add .
                git commit -m "<some-message>"
                git push origin main
                

                为什么 GitHub Actions 部署速度这么慢?

                应用服务自动生成的工作流文件定义生成后部署的双作业运行。 由于每个作业都在自己的干净环境中运行,因此工作流文件可确保 deploy 作业有权从 build 作业访问文件:

              • build 作业结束时,将文件上传为项目
              • deploy 作业开始时,下载项目。
              • 两个作业过程的大部分时间都是花费在上传和下载项目上。 如果需要,可以通过将两个作业合并为一个作业来简化工作流文件,这样就无需上传和下载步骤。

                在本教程中,你了解了如何执行以下操作:

              • 在 Azure 中创建安全默认的 PHP 和 Azure Database for MySQL 灵活服务器应用
              • 使用应用设置配置到 Azure Database for MySQL 灵活服务器的连接机密
              • 使用 GitHub Actions 部署应用程序代码
              • 更新并重新部署应用
              • 安全运行数据库迁移
              • 从 Azure 流式传输诊断日志
              • 在 Azure 门户中管理应用
              • 教程:将自定义 DNS 名称映射到应用
              • 如何在 Azure 门户中管理资源
              • 使用 Azure CLI 管理 Azure Database for MySQL 灵活服务器
  •