快速入门:在 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 应用服务在启动应用时可以识别的框架特定代码。 有关详细信息,请参阅容器启动过程

遇到问题? 请告知我们。

部署示例

使用 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-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)。

Example output of the az webapp up command

遇到问题? 请告知我们。

注意

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

  • 创建一个默认的资源组

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

  • 使用指定名称创建应用

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

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

浏览到应用

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

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

Run a sample Python app in Azure

祝贺你! 现已将 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!”消息。

    Run a sample Python app locally

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

  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!”消息。

    Run a sample Python app locally

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

Run an updated sample Python app in Azure

遇到问题? 请告知我们。

提示

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 门户管理已创建的应用。 搜索并选择“应用服务”。

Navigate to App Services in the Azure portal

选择 Azure 应用的名称。

Navigate to your Python app in App Services in the Azure portal

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

Manage your Python app in the Overview page in the Azure portal

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

遇到问题? 请告知我们。

清理资源

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

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

az group delete --no-wait

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

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

遇到问题? 请告诉我们。

后续步骤