【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://docs.azure.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://xxxxxxxxx.scm.chinacloudsites.cn:443/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://xxxxxxxxx.scm.chinacloudsites.cn:443/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://github.com/Microsoft/Oryx
remote: You can report issues at https://github.com/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://docs.azure.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://docs.azure.cn/zh-cn/app-service/deploy-local-git?tabs=cli#change-deployment-branch

 

相关文章
|
10月前
|
JavaScript 前端开发 机器人
【Azure Bot Service】在中国区Azure上部署机器人的 Python 版配置
本文介绍了在中国区Azure上使用Python SDK配置Azure Bot Service时遇到的问题及解决方案,涵盖参数设置与适配器配置,适用于希望在Azure中国区部署Python机器人的开发者。
275 9
|
11月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
815 10
|
11月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1070 13
|
API 开发工具 网络架构
【Azure Service Bus】使用Python SDK创建Service Bus Namespace资源(中国区)
本文介绍了如何使用Python SDK创建Azure Service Bus Namespace资源。首先,通过Microsoft Entra ID注册应用获取Client ID、Client Secret和Tenant ID,完成中国区Azure认证。接着,初始化ServiceBusManagementClient对象,并调用`begin_create_or_update`方法创建资源。
309 30
|
10月前
|
存储 数据采集 监控
ubuntu(linux)系统主要应用于哪些工业场景中?研维三防ubuntu系统的手持工业三防平板电脑在哪些行业中有实际应用
Ubuntu 系统凭借其独特的优势,在众多工业场景中得到了广泛应用,为工业数字化、智能化发展提供了有力支持。而研维三防基于 Ubuntu 定制系统的手持工业三防平板电脑,更是将 Ubuntu 系统的优势与工业级的性能、坚固耐用性完美结合,在电力、物流、制造等多个行业中展现出强大的应用价值,助力企业提高生产效率、优化管理流程、提升产品质量,成为推动工业现代化发展的重要力量。随着技术的不断进步与创新,相信 Ubuntu 系统以及研维三防这类工业级设备将在更多的工业领域中发挥更大的作用,为工业发展带来更多的机遇与变革。
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
380 22
|
API 开发工具 Python
|
机器学习/深度学习 安全 Linux
Linux 主要应用领域的归纳
服务器领域 Linux在服务器领域的应用是其最为广泛和成熟的领域之一。由于其开源、稳定、高效和安全的特性,Linux成为许多企业服务器的首选操作系统。 Web服务器:Linux是Web服务器的理想选择,因为它支持Apache、Nginx等流行的Web服务器软件,这些软件在Linux上运行稳定且性能卓越。Linux服务器可以高效地处理大量并发请求,提供快速、可靠的Web服务。 数据库服务器:Linux也广泛用于数据库服务器,如MySQL、PostgreSQL和Oracle等数据库管理系统在Linux上运行良好。Linux的稳定性和安全性使得它成为存储和管理敏感数据的理想平台。 邮件服务器:Lin
822 5
|
8月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1442 139