快速入门:在 Linux 上的 Azure 应用服务中创建 Python 应用
在本快速入门中,需将 Python Web 应用部署到 Linux 上的应用服务,该版本提供了一项高度可缩放、自我修补的 Azure Web 托管服务。 可以从 Windows、Linux 或 macOS 环境在本地使用 Azure CLI 来部署具有 Flask 或 Django 框架的示例。 配置的 Web 应用使用免费的应用服务层,因此本文中的操作不会产生任何费用。
提示
如果希望通过 IDE 部署应用,请参阅从 Visual Studio Code 将 Python 应用部署到应用服务。
设置初始环境
- 具有活动订阅的 Azure 帐户。 创建试用版订阅。
- 安装 Python。
- 安装 Azure CLI 2.0.80 或更高版本,使用它可以在任何 shell 中运行命令来预配和配置 Azure 资源。
打开终端窗口并检查 Python 版本是否为 3.6 或更高版本:
python3 --version
检查 Azure CLI 版本是否为 2.0.80 或更高版本:
az --version
然后通过 CLI 登录到 Azure:
az cloud set -n AzureChinaCloud
az login
此命令将打开浏览器以获取凭据。 命令完成后,会显示包含订阅相关信息的 JSON 输出。
登录后,可以使用 Azure CLI 运行 Azure 命令,处理订阅中的资源。
克隆示例
使用以下命令克隆示例存储库,并导航到示例文件夹。 (如果尚未安装 git,请安装 git。)
git clone https://github.com/Azure-Samples/python-docs-hello-world
然后导航到该文件夹:
cd python-docs-hello-world
git clone https://github.com/Azure-Samples/python-docs-hello-django
然后导航到该文件夹:
cd python-docs-hello-django
示例包含 Azure 应用服务在启动应用时可以识别的框架特定代码。 有关详细信息,请参阅容器启动过程。
部署示例
使用 az webapp up
命令在本地文件夹 (python-docs-hello-world) 中部署代码:
az webapp up --sku B1 --name <app-name>
- 如果无法识别
az
命令,请确保按照设置初始环境中所述安装 Azure CLI。 - 如果无法识别
webapp
命令,请确保 Azure CLI 版本为 2.0.80 或更高版本。 如果不是,请安装最新版本。 - 将
<app_name>
替换为在整个 Azure 中均唯一的名称(有效字符为a-z
、0-9
和-
)。 良好的模式是结合使用公司名称和应用标识符。 --sku B1
参数在基本定价层上创建 Web 应用,这样每小时产生的费用较低。 省略此参数可使用更快的高级层。- 可以选择包含参数
--location <location-name>
,其中<location_name>
是可用的 Azure 区域。 可以运行 az account list-locations 命令来检索 Azure 帐户的允许区域列表。 - 如果看到错误“无法自动检测应用的运行时堆栈”,请确保在包含 requirements.txt 文件的 python-docs-hello-world 文件夹 (Flask) 或 python-docs-hello-django 文件夹 (Django) 中运行该命令 。 (请参阅通过 az webapp up 解决自动检测问题 (GitHub)。)
此命令可能需要花费几分钟时间完成。 运行时,它提供以下相关信息:创建资源组、应用服务计划和托管应用,配置日志记录,然后执行 ZIP 部署。 然后,它会显示消息“可以通过 http://<app-name>.chinacloudsites.cn 启动应用”(该网址是 Azure 上应用的 URL)。
注意
az webapp up
命令执行以下操作:
浏览到应用
在 Web 浏览器中使用以下 URL 浏览到已部署的应用程序:http://<app-name>.chinacloudsites.cn
。 最初启动应用需要几分钟时间。
Python 示例代码在使用内置映像的应用服务中运行 Linux 容器。
祝贺你! 现已将 Python 应用部署到应用服务。
运行示例
确保位于 python-docs-hello-world 文件夹中。
创建虚拟环境并安装依赖项:
# Linux systems only python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt # Git Bash on Windows only py -3 -m venv .venv source .venv\\scripts\\activate pip install -r requirements.txt
如果你运行的是 Windows 系统,并且看到一则错误消息:“源”未被识别为内部或外部命令,请确保系统正在 Git Bash shell 中运行,或使用上面的“Cmd”选项卡中所示的命令。
如果遇到“[Errno 2] 没有此类文件或目录:“requirements.txt”。”,请确保位于 python-docs-hello-world 文件夹中。
运行开发服务器。
flask run
默认情况下,该服务器假定应用的条目模块位于示例使用的 app.py 中。 (如果使用其他模块名称,请将
FLASK_APP
环境变量设置为该名称。)打开 Web 浏览器并转到
http://localhost:5000/
处的示例应用。 该应用显示“Hello, World!”消息。在终端窗口中,按 Ctrl+C 退出开发服务器 。
确保位于 python-docs-hello-django 文件夹中。
创建虚拟环境并安装依赖项:
# Linux systems only python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt # Git Bash on Windows only py -3 -m venv .venv source .venv\\scripts\\activate pip install -r requirements.txt
如果你运行的是 Windows 系统,并且看到一则错误消息:“源”未被识别为内部或外部命令,请确保系统正在 Git Bash shell 中运行,或使用上面的“Cmd”选项卡中所示的命令。
如果遇到“[Errno 2] 没有此类文件或目录:“requirements.txt”。”,请确保位于 python-docs-hello-django 文件夹中。
运行开发服务器。
python3 manage.py runserver
打开 Web 浏览器并转到
http://localhost:8000/
处的示例应用。 该应用显示“Hello, World!”消息。在终端窗口中,按 Ctrl+C 退出开发服务器 。
重新部署更新
在本部分中,你将对代码进行少量更改,然后将代码重新部署到 Azure。 代码更改包括 print
语句,用于生成要在下一部分使用的日志记录输出。
在编辑器中打开 app.py,并更新 hello
函数以匹配以下代码。
def hello():
print("Handling request to home page.")
return "Hello, Azure!"
在编辑器中打开 hello/views.py,并更新 hello
函数以匹配以下代码。
def hello(request):
print("Handling request to home page.")
return HttpResponse("Hello, Azure!")
保存更改,然后再次使用 az webapp up
命令重新部署应用:
az webapp up
此命令使用本地缓存在 .azure/config 文件中的值,包括应用名称、资源组和应用服务计划。
部署完成后,切换回打开到 http://<app-name>.chinacloudsites.cn
的浏览器窗口。 刷新页面,刷新后的页面应显示修改后的消息:
提示
Visual Studio Code 为 Python 和 Azure 应用服务提供了功能强大的扩展,简化了将 Python Web 应用部署到应用服务的过程。 有关详细信息,请参阅将 Python 应用从 Visual Studio Code 部署到应用服务。
流式传输日志
可以访问应用内和运行应用的容器所生成的控制台日志。 这些日志包括使用 print
语句生成的任何输出。
若要流式传输日志,请运行 az webapp log tail 命令:
az webapp log tail
还可以在 az webapp up
命令中包含 --logs
参数,以在部署时自动打开日志流。
在浏览器中刷新应用以生成控制台日志,其中包括描述对应用的 HTTP 请求的消息。 如果未立即显示输出,请在 30 秒后重试。
也可通过浏览器在 https://<app-name>.scm.chinacloudsites.cn/api/logs/docker
中检查日志文件。
若要随时停止日志流式处理,请在终端中按 Ctrl+C。
管理 Azure 应用
转到 Azure 门户管理已创建的应用。 搜索并选择“应用服务”。
选择 Azure 应用的名称。
选择该应用将打开其“概述”页,你可以在其中执行基本的管理任务,例如浏览、停止、启动、重启和删除。
应用服务菜单提供了用于配置应用的不同页面。
清理资源
在前面的步骤中,你在资源组中创建了 Azure 资源。 资源组根据位置得名,例如“appsvc_rg_Linux_chinanorth”。 如果将 Web 应用保持运行状态,则会产生一些持续成本(请参阅应用服务定价)。
如果你认为将来不再需要这些资源,请运行以下命令删除资源组:
az group delete --no-wait
此命令使用 .azure/config 文件中缓存的资源组名称。
--no-wait
参数允许此命令在操作完成之前返回。