簡體   English   中英

使用 Devops CI/CD 將 Django Web 應用程序部署到 Azure 應用程序服務上

[英]Deploying Django Web App using Devops CI/CD onto Azure App Service

我正在嘗試使用 CI/CD 管道(Microsoft 為應用程序部署提供的最基本的管道)將簡單的 django web ap 部署到 Azure 應用程序服務。 但是我收到以下錯誤:

2021-03-08T16:55:51.172914117Z   File "", line 219, in _call_with_frames_removed
2021-03-08T16:55:51.172918317Z   File "/home/site/wwwroot/deytabank_auth/wsgi.py", line 13, in 
2021-03-08T16:55:51.172923117Z     from django.core.wsgi import get_wsgi_application
2021-03-08T16:55:51.172927017Z ModuleNotFoundError: No module named 'django'

我檢查了其他線程並嘗試做所有提到的事情,但沒有幫助,或者我遺漏了一些東西:

wsgi.py我添加了:

import os
import sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..' )
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../licenses_api')
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../deytabank_auth')

from django.core.wsgi import get_wsgi_application


os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'deytabank_auth.settings')

application = get_wsgi_application()

但仍然出現相同的錯誤,其中 django 無法識別。 我可以看到 reuqirements.txt 已成功安裝,並且其中包含所有必需的庫(包括 Django)

我的 CI/CD yaml 文件如下所示:

# Python to Linux Web App on Azure
# Build your Python project and deploy it to Azure as a Linux Web App.
# Change python version to one thats appropriate for your application.
# https://docs.microsoft.com/azure/devops/pipelines/languages/python

trigger:
- develop

variables:
  # Azure Resource Manager connection created during pipeline creation
  azureServiceConnectionId: '***'

  # Web app name
  webAppName: 'DeytabankAuth'

  # Agent VM image name
  vmImageName: 'ubuntu-latest'

  # Environment name
  environmentName: 'DeytabankAuth'

  # Project root folder. Point to the folder containing manage.py file.
  projectRoot: $(System.DefaultWorkingDirectory)

  # Python version: 3.7
  pythonVersion: '3.7'

stages:
- stage: Build
  displayName: Build stage
  jobs:
  - job: BuildJob
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '$(pythonVersion)'
      displayName: 'Use Python $(pythonVersion)'

    - script: |
        python -m venv antenv
        source antenv/bin/activate
        python -m pip install --upgrade pip
        pip install setup
        pip install -r requirements.txt
      workingDirectory: $(projectRoot)
      displayName: "Install requirements"

    - task: ArchiveFiles@2
      displayName: 'Archive files'
      inputs:
        rootFolderOrFile: '$(projectRoot)'
        includeRootFolder: false
        archiveType: zip
        archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
        replaceExistingArchive: true

    - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      displayName: 'Upload package'
      artifact: drop

- stage: Deploy
  displayName: 'Deploy Web App'
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: DeploymentJob
    pool:
      vmImage: $(vmImageName)
    environment: $(environmentName)
    strategy:
      runOnce:
        deploy:
          steps:

          - task: UsePythonVersion@0
            inputs:
              versionSpec: '$(pythonVersion)'
            displayName: 'Use Python version'

          - task: AzureWebApp@1
            displayName: 'Deploy Azure Web App : DeytabankAuth'
            inputs:
              azureSubscription: $(azureServiceConnectionId)
              appName: $(webAppName)
              package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip

也許我需要在 Azure 應用服務中配置一些東西? 但我不確定到底是什么。

我之前遇到過這個問題,問題可能是你的部署方法。 不確定您使用的是哪一個,但下面的經典部署中心已被棄用,請嘗試使用新的部署中心。 在此處輸入圖像描述 用我這邊的工作流程檢查了你的工作流程,沒有什么不同。 因此,我將發布正確的步驟供您參考。

  1. 本地檢查您的項目以確保它可以成功運行。

  2. 創建一個的 web 應用程序(這是為了確保您的 web 應用程序沒有損壞)並導航到部署中心頁面。 在此處輸入圖像描述

  3. Go 到您的 GitHub 並導航到GitHub 操作頁面以查看日志。 在此處輸入圖像描述

  4. 測試您的 web 應用程序並檢查 KuDu 站點上的文件結構: https://{yourappname}.scm.azurewebsites.net/wwwroot/ 在此處輸入圖像描述

您可以像我一樣單擊瀏覽按鈕進行測試。 在此處輸入圖像描述 如果要運行命令 go 到此站點: https://{yourappname}.scm.azurewebsites.net/DebugConsole 在此處輸入圖像描述


順便說一句,如果您需要使用 DevOps 進行部署,我會發布此鏈接

這個問題的可能原因是您沒有安裝 Django。

在 Microsoft 托管的代理ubuntu-latest中,未預安裝 Django。 也就是說,您需要手動安裝它。

pip install Django==3.1.7

單擊此文檔以獲取有關下載 Django 的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM