你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:在 Azure 应用服务上生成 PHP (Laravel) 和 Azure Database for MySQL - 灵活服务器应用
适用于: Azure Database for MySQL - 灵活服务器
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 Database for MySQL - 灵活服务器。
示例应用程序
要继续学习本教程,请从资源库中克隆或下载示例应用程序:
git clone https://github.com/Azure-Samples/laravel-tasks.git
若要在本地运行应用程序,请执行以下操作:
在 .env 中,使用本地 Azure Database for MySQL 灵活服务器数据库中的设置配置数据库设置(如
DB_DATABASE
、DB_USERNAME
和DB_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 应用服务资源。
说明 | 屏幕快照 |
---|---|
在 Azure 门户中:
|
|
在“创建 Web 应用 + 数据库”页上,按如下所述填写表单。
|
|
部署需要几分钟时间才能完成,会创建以下资源:
|
2 - 设置数据库连接
创建向导生成了用于连接数据库的应用设置,但其格式尚未适用于你的代码。 在此步骤中,可以编辑应用设置并将其更新为应用所需的格式。
说明 | 屏幕快照 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
在左侧菜单的“应用服务”页面中,选择“配置”。 | |||||||||||
在“配置”页面的“应用程序设置”选项卡中,对于以下每个设置,单击“编辑”,用新值更新“名称”字段,然后单击“确定”。
|
|||||||||||
创建新 MYSQL_ATTR_SSL_CA 数据库设置:
|
|||||||||||
按照相同的步骤创建以下额外的应用程序设置,然后单击“保存”。
|
3 - 部署示例代码
在此步骤中,你将使用 GitHub Actions 配置 GitHub 部署。 这只是部署到应用服务的许多方法之一,也是一种在部署过程中持续集成的好方法。 默认情况下,GitHub 存储库的每个 git push
都会启动生成和部署操作。 你将在浏览器中直接使用 Visual Studio Code 对代码库进行更改,然后让 GitHub Actions 自动部署。
4 - 生成数据库架构
创建向导将 Azure Database for MySQL 灵活服务器实例置于专用终结点后面,因此只能从虚拟网络访问该实例。 由于应用服务应用已与虚拟网络集成,因此使用数据库运行数据库迁移的最简单方法是直接从应用服务容器中运行。
说明 | 屏幕快照 |
---|---|
在“应用服务”页中:
https://<app-name>.scm.azurewebsites.net/webssh/host 。 |
|
在 SSH 终端中:
|
5 - 更改站点根路径
Laravel 应用程序生命周期在 /public 目录中开始。 应用服务的默认 PHP 8.0 容器使用 Nginx,该服务器从应用程序的根目录中开始。 若要更改站点根路径,需要在 PHP 8.0 容器 (/etc/nginx/sites-available/default) 中更改 Nginx 配置文件。 为方便起见,示例存储库包含一个名为 default 的自定义配置文件。 如前所述,你不想使用 SSH shell 替换此文件,因为在应用重启后,更改将丢失。
6 - 浏览到应用
说明 | 屏幕快照 |
---|---|
在“应用服务”页中:
|
|
向列表中添加一些任务。恭喜,你的数据驱动的 PHP 应用正在 Azure 应用服务中运行。 |
7 - 流式传输诊断日志
说明 | 屏幕快照 |
---|---|
在“应用服务”页中:
|
|
在左侧菜单中,单击“日志流”。会看到应用的日志,包括平台日志和容器内部的日志。 |
清理资源
完成后,可以通过删除资源组从 Azure 订阅中删除所有资源。
说明 | 屏幕快照 |
---|---|
在 Azure 门户顶部的搜索栏中:
|
|
在资源组页面上,单击“删除资源组”。 | |
|
常见问题
- 此设置花费有多大?
- 如何连接到在虚拟网络后面受到保护的 Azure Database for MySQL 灵活服务器数据库?
- 本地应用开发如何处理 GitHub Actions?
- 为什么 GitHub Actions 部署速度这么慢?
此设置花费有多大?
创建资源的定价如下所示:
- 应用服务计划是在高级 V2 层中创建的,可以纵向扩展或缩减。 请参阅应用服务定价。
- Azure Database for MySQL 灵活服务器实例是在 B1ms 层中创建的,可以纵向扩展或缩减。 使用 Azure 免费帐户时,B1ms 层在 12 个月内免费,不能超过每月限制。 请参阅 Azure Database for MySQL 灵活服务器定价。
- 除非配置额外的功能(例如对等互连),否则虚拟网络不会产生费用。 请参阅 Azure 虚拟网络定价。
- 专用 DNS 区域会产生少量费用。 请参阅 Azure DNS 定价。
如何连接到在虚拟网络后面受到保护的 Azure Database for MySQL 灵活服务器数据库?
若要连接到 Azure Database for MySQL 灵活服务器数据库,可以根据可用的工具和环境使用几种方法:
- 命令行工具访问:
- 使用应用的 SSH 终端中的
mysql
命令进行基本访问。
- 使用应用的 SSH 终端中的
- 桌面工具(例如 MySQL Workbench):
- 通过 Azure CLI 使用 SSH 隧道:
- 使用 Azure CLI 创建到 Web 应用的 SSH 会话。
- 使用 SSH 会话将流量隧道传送到 MySQL。
- 使用站点到站点 VPN 或 Azure VM:
- 计算机必须是虚拟网络的一部分。
- 请考虑使用:
- 链接到其中一个子网的 Azure VM。
- 本地网络中站点到站点 VPN 连接到 Azure 虚拟网络的计算机。
- 通过 Azure CLI 使用 SSH 隧道:
- Azure Cloud Shell 集成:
- 将 Azure Cloud Shell 与虚拟网络集成,以便直接访问。
本地应用开发如何与 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 门户中管理应用