快速入门:在 Linux 上的 Azure 应用服务中创建 Python 应用

选择框架

在本快速入门中,需将 Python Web 应用部署到 Linux 上的应用服务,该版本提供了一项高度可缩放、自我修补的 Azure Web 托管服务。 可以从 Windows、Linux 或 macOS 环境在本地使用 Azure CLI 来部署具有 Flask 或 Django 框架的示例。 配置的 Web 应用使用免费的应用服务层,因此本文中的操作不会产生任何费用。

提示

如果希望通过 IDE 部署应用,请参阅从 Visual Studio Code 将 Python 应用部署到应用服务

设置初始环境

  1. 具有活动订阅的 Azure 帐户。 创建试用版订阅
  2. 安装 Python
  3. 安装 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 应用服务在启动应用时可以识别的框架特定代码。 有关详细信息,请参阅容器启动过程

遇到问题? 请告知我们。

部署示例

使用 命令在本地文件夹 (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-z0-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 命令的示例输出

遇到问题? 请告知我们。

备注

az webapp up 命令执行以下操作:

  • 创建一个默认的资源组

  • 创建一个默认的应用服务计划

  • 使用指定名称创建应用

  • 对当前工作目录中的所有文件进行 zip 部署,并启用生成自动化

  • 将参数本地缓存在 .azure/config 文件中,使得以后使用项目文件夹中的 az webapp up 或其他 az webapp 命令部署时,无需再次指定它们。 默认情况下,自动使用缓存的值。

浏览到应用

在 Web 浏览器中使用以下 URL 浏览到已部署的应用程序:http://<app-name>.chinacloudsites.cn。 最初启动应用需要几分钟时间。

Python 示例代码在使用内置映像的应用服务中运行 Linux 容器。

在 Azure 中运行示例 Python 应用

恭喜! 现已将 Python 应用部署到应用服务。

遇到问题? 请告知我们。

运行示例

  1. 确保位于 python-docs-hello-world 文件夹中。

  2. 创建虚拟环境并安装依赖项:

    # 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 文件夹中。

  3. 运行开发服务器。

    flask run
    

    默认情况下,该服务器假定应用的条目模块位于示例使用的 app.py 中。 (如果使用其他模块名称,请将 FLASK_APP 环境变量设置为该名称。)

  4. 打开 Web 浏览器并转到 http://localhost:5000/ 处的示例应用。 该应用显示“Hello, World!”消息。

    在本地运行示例 Python 应用

  5. 在终端窗口中,按 CtrlC 退出开发服务器 。

  1. 确保位于 python-docs-hello-django 文件夹中。

  2. 创建虚拟环境并安装依赖项:

    # 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 文件夹中。

  3. 运行开发服务器。

    python3 manage.py runserver
    
  4. 打开 Web 浏览器并转到 http://localhost:8000/ 处的示例应用。 该应用显示“Hello, World!”消息。

    在本地运行示例 Python 应用

  5. 在终端窗口中,按 CtrlC 退出开发服务器 。

遇到问题? 请告知我们。

重新部署更新

在本部分中,你将对代码进行少量更改,然后将代码重新部署到 Azure。 代码更改包括 print 语句,用于生成要在下一部分使用的日志记录输出。

在编辑器中打开 app.py,并更新 函数以匹配以下代码。

def hello():
    print("Handling request to home page.")
    return "Hello, Azure!"

在编辑器中打开 hello/views.py,并更新 函数以匹配以下代码。

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 的浏览器窗口。 刷新页面,刷新后的页面应显示修改后的消息:

在 Azure 中运行更新的示例 Python 应用

遇到问题? 请告知我们。

提示

Visual Studio Code 为 Python 和 Azure 应用服务提供了功能强大的扩展,简化了将 Python Web 应用部署到应用服务的过程。 有关详细信息,请参阅将 Python 应用从 Visual Studio Code 部署到应用服务

流式传输日志

可以访问应用内和运行应用的容器所生成的控制台日志。 这些日志包括使用 print 语句生成的任何输出。

若要流式传输日志,请运行 az webapp log tail 命令:

az webapp log tail

还可以在 --logs 命令中包含 az webapp up 参数,以在部署时自动打开日志流。

在浏览器中刷新应用以生成控制台日志,其中包括描述对应用的 HTTP 请求的消息。 如果未立即显示输出,请在 30 秒后重试。

也可通过浏览器在 https://<app-name>.scm.chinacloudsites.cn/api/logs/docker 中检查日志文件。

若要随时停止日志流式处理,请在终端中按 CtrlC。

遇到问题? 请告知我们。

管理 Azure 应用

转到 Azure 门户管理已创建的应用。 搜索并选择“应用服务”。

在 Azure 门户中导航到应用服务

选择 Azure 应用名称。

在 Azure 门户的应用程序服务中导航到 Python 应用

选择该应用将打开其“概述”页,你可以在其中执行基本的管理任务,例如浏览、停止、启动、重启和删除。

在 Azure 门户的“概述”页中管理 Python 应用

应用服务菜单提供了用于配置应用的不同页面。

遇到问题? 请告知我们。

清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 资源组根据位置得名,例如“appsvc_rg_Linux_chinanorth”。 如果将 Web 应用保持运行状态,则会产生一些持续成本(请参阅应用服务定价)。

如果你认为将来不再需要这些资源,请运行以下命令删除资源组:

az group delete --no-wait

此命令使用 .azure/config 文件中缓存的资源组名称。

--no-wait 参数允许此命令在操作完成之前返回。

遇到问题? 请告知我们。

后续步骤