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_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 应用服务资源。
运行时堆栈 → 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
专门为你的部署进行生成。
在“常规设置”选项卡中:
在“启动命令”框中,输入以下命令:cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload。
它将替换 PHP 8.0 容器中的 Nginx 配置文件并重启 Nginx。 此配置可确保每次启动容器时对容器进行此更改。
选择“保存”。
- 如何连接到在虚拟网络后面受到保护的 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
命令进行基本访问。
- 桌面工具(例如 MySQL Workbench):
- 通过 Azure CLI 使用 SSH 隧道:
- 使用 Azure CLI 创建到 Web 应用的 SSH 会话。
- 使用 SSH 会话将流量隧道传送到 MySQL。
- 使用站点到站点 VPN 或 Azure VM: