部署到 Azure
此练习需要沙盒。 在沙盒中,您可以访问免费资源。 您进行个人订阅不会被收取费用。
你只能使用沙盒来完成 Microsoft Learn 上的培训。 禁止将沙盒用于任何其他目的,否则可能会导致永远无法访问沙盒。
若要使你的站点对公众可用,请将其部署到 Azure。 你将在 Visual Studio Code 中使用 Azure 应用服务扩展来简化此过程。
安装 Azure 应用服务扩展
首先在 Visual Studio Code 中安装 Azure 应用服务扩展:
在 Visual Studio Code 中,选择“扩展”图标。
在“搜索扩展”字段中,键入“应用服务”。
在“Azure 应用服务”下,选择“安装”。
如果已有 Azure 应用服务扩展,请确保它已更新到最新版本。 请参阅扩展页上的上次更新时间。 如果使用的是最新版本,应会看到包含“应用服务”节点的“资源”节点。
部署应用
按照步骤克隆入门级存储库时,还应在打开 VS Code 之前将目录更改为 starter 文件夹。 starter 目录包含 manage.py 文件,该文件通知应用服务你将部署 Django Web 应用。
在 Visual Studio Code 的工具栏中,选择 Azure 图标。
选择“登录”以使用创建沙盒时所用的同一帐户登录到 Azure。
在 Azure 扩展的“资源”栏上,悬停然后选择 +(加号)图标来创建资源。
如果系统提示选择订阅,请选择 Azure 订阅。
选择“创建应用服务 Web 应用...”。
为应用程序提供唯一的名称。
选择“Python 3.9”作为运行时堆栈。
选择定价层。
该扩展将创建 Web 应用。 这个过程需要一些时间。
创建 Web 应用时,系统会要求将 Web 应用部署到应用服务,然后选择“部署”。
如果错过了要求部署应用的通知,或者你关闭了通知,还可查找创建的应用服务进行部署,右键单击它,然后选择“部署到 Web 应用”。
你的站点现在将部署!
创建数据库服务器
现在创建 PostgreSQL 数据库。
在 Azure 扩展的“资源”栏上,悬停然后选择 +(加号)图标来创建资源。
如果系统提示选择订阅,请选择 Azure 订阅。
选择“创建数据库...”。
对于 Azure 数据库服务器,请选择“PostgreSQL 灵活服务器”。
为数据库服务器输入唯一的名称。
重要
记下数据库服务器使用的名称。
选择 Postgres SKU 和选项。
对于管理员用户的名称,输入 shelter_admin。
输入安全密码,如“86i^z5#emSk6wu3t10nC*”。
重要
创建密码时,请不要使用美元符号 (
$
)。 这个符号可能会导致 Python 连接出现问题。 请记下你使用的密码。再次输入密码进行确认。
对于资源组,选择创建 Web 应用的同一资源组。
若要查找用于创建 Web 应用的资源组名称和位置,请在 Azure 扩展中找到应用服务,右键单击该名称,然后选择“查看属性”。 在“id”键中,资源组名称位于“/resourceGroups”后面。 “location”键显示位置。
还可右键单击应用服务的名称,然后选择“在门户中打开”来查找资源组名称和位置。
对于新资源的位置,请选择资源组和 Web 应用的相同位置。
重要
当你创建多个相互通信的 Azure 资源时,请务必将它们置于同一区域中。 此归置可确保最佳性能。
现在将创建服务器! 该过程将花费几分钟时间。
创建数据库防火墙规则以允许从开发环境进行访问
创建数据库后,需要创建防火墙规则,以允许开发人员环境访问数据库。 等待数据库出现,然后按照后续步骤创建规则。
使用 F1 或 Ctrl + Shift + P 键组合打开 Visual Studio Code 命令面板。
搜索“PostgreSQL: 配置防火墙”,然后选择它。
当系统提示资源应用防火墙时,请选择创建的 Postgres 数据库。
最后一个对话框要求继续,并显示它将添加的 IP 地址。 选择是。
添加规则需要几分钟时间。 查看 VS Code 通知窗口的状态。
在数据库服务器上创建数据库
现在,你已经配置应用服务并创建服务器,接下来可以在 Postgres 数据库服务器中创建数据库。
在 Azure 工具扩展的“资源”中,展开“PostgreSQL 服务器(灵活)”节点并查找你创建的服务器。
右键单击数据库服务器的名称,并选择“创建数据库”。
输入“收容所”。
数据库将创建。
允许从应用服务访问数据库服务器
在本练习中,还需要 Azure 应用服务中托管的“狗狗收容所”Web 应用连接到 Azure Database for PostgreSQL 灵活服务器。 当 Azure 中的应用程序尝试连接到你的数据库服务器时,防火墙将验证是否允许 Azure 连接。 之前,你允许从本地环境建立连接。 现在,还必须允许来自应用服务的连接。
在 VS Code 中,在 Azure 工具扩展的“资源”中,展开“PostgreSQL 服务器(灵活)”节点并查找你创建的服务器。
右键单击数据库服务器的名称,然后选择“在门户中打开”。
选择 Postgres 服务器的网络资源。
在门户的“网络”选项卡中,选择“允许从 Azure 内的任何 Azure 服务公开访问此服务器”选项,然后选择“保存”。
为 Web 应用配置应用程序设置
应用服务使用应用程序设置来配置环境变量。 设置是一种用于存储不应放置在代码中的信息(例如数据库连接字符串)的简便方法。
在“应用服务下,展开沙盒订阅。 然后展开应用程序。
若要创建第一个应用程序设置,请右键单击“应用程序设置”,然后选择“添加新设置”。
在第一个字段中输入名称 DBUSER。
在第二个字段中,输入值 shelter_admin。
重复上述步骤以创建其他设置:
名称 值 DBHOST <The server name you created previously>
DBPASS <The password you created previously>
DBUSER shelter_admin
DBNAME shelters
SECRET_KEY <Generate a secure password>
注意
将 DBHOST 和 DBPASS 值替换为在本练习前面创建的值。 对于 SECRET_KEY,请创建新密码。
现在,所有必要的环境变量都已在你的应用服务上创建。
创建架构和超级用户
部署的最后一步是设置数据库。 在本地开发中,需要运行 python manage.py migrate
和 python manage.py createsuperuser
以创建数据库架构和超级用户。 在 Azure 上,你也要这样做。
你将通过使用安全外壳 (SSH) 连接到 Azure 中的 Web 服务器。 可在 Visual Studio Code 中建立连接,如下所示。
在“应用服务”扩展中,右键单击应用服务,然后选择“通过 SSH 连接到 Web 应用”。
将与 Azure 中的 Web 服务器建立 SSH 连接。 该过程可能需要花费几分钟时间。 此时会在 Visual Studio Code 中显示一个终端窗格。 此终端是到 Web 服务器的 SSH 连接。 如果在连接时遇到问题,请参阅下面的故障排除步骤。
重要
如果你收到一条错误消息,指出需要为数据库启用 SSL,请确保已正确创建所有环境变量。
在 SSH 终端窗格内运行以下命令,以确保安装了适当的库并创建数据库。
# Run database migrations python manage.py makemigrations dog_shelters python manage.py migrate
运行以下命令创建超级用户。
python manage.py createsuperuser
为超级用户提供名称、电子邮件地址和密码。
创建超级用户之后,运行命令
exit
以关闭连接。
你的数据库现在已在 Azure 中配置完毕,并且你的站点有一个超级用户。
SSH 故障排除
如果无法从 VS Code 连接到 SSH,可尝试执行以下步骤:
转到应用服务的 Azure 门户页,并在此处访问 SSH。 在 VS Code 中,右键单击应用服务的名称,然后选择“在门户中打开”。 在应用服务的门户页上,转到左侧资源窗格中的 SSH 资源。
检查托管 Web 应用的应用服务是否已正确启动。 如果存在部署错误或编码问题,则应用服务可能尚未启动,并且你无法通过 SSH 连接到它。 在应用服务的门户页上,转到左侧资源窗格中的“诊断并解决问题”来查找问题。
详细了解应用服务中的 SSH。
转到你的站点
现在,你已部署并配置所有内容,可以在 Azure 上查看你的网站。
在“应用服务”扩展中,右键单击站点名称,然后选择“浏览网站”。
你的网站随即出现。 默认页面不显示收容所。 添加收容所:
在网站 URL 中添加“/admin”,转到站点的 Django 管理部分。
系统将要求你使用上面创建的超级用户名和密码进行身份验证。
添加收容所并导航回主页,你将可以为该收容所登记狗。
下面是网站的屏幕截图:
如果尝试转到站点上不存在的位置,则会出现一个一般错误“找不到”,因为 DEBUG
已禁用。
现已将网站部署到 Azure!