簡體   English   中英

通過Github部署Django App到Azure時禁用collectstatic命令

[英]Disable collectstatic command when deploying Django App to Azure via Github

這是一個給我帶來無數問題的錯誤,不幸的是,沒有記錄在案的解決方法。

我有一個在 Azure 上運行的 Django 應用程序。我將本地更改推送到 Github,並通過 Github 操作將更改同步到 Azure。這一直進行得很好,構建/部署處理成功沒有任何問題。

當我使用 django-storages [Azure] 在 Azure 上為媒體文件和 static 文件創建存儲帳戶時,出現了問題。 因此,每次我將更改從本地主機推送到 Github 時,從 Github 到 Azure 的構建/部署過程將運行並設法運行 collectstatic 命令,不幸的是由於未知錯誤而失敗。 從我的 Azure 門戶上的 SSH 終端運行 collectstatic 成功,盡管在永遠之后,所以,我假設這是因為這個過程花費了很長時間而最終失敗了。

我不需要每次更改站點時都運行此過程,因為我可以在需要時從 SSH 終端執行此操作。

我已閱讀文檔,其中大多數建議設置值 DISABLE_COLLECTSTATIC = 1 以禁用該進程。 但是,我不知道該怎么做或在哪里設置值。 我嘗試在workflows file中檢查它,但不存在類似的東西。 這讓我很困擾,因為我無法更新網站,因為我在本地所做的每項更改都由於錯誤而無法部署。

這是我對 azure 存儲帳戶的設置:

# Media Storage Location
DEFAULT_FILE_STORAGE = 'custom_azure.AzureMediaStorage'
STATICFILES_STORAGE = 'custom_azure.AzureStaticStorage'

STATIC_LOCATION = "static"
MEDIA_LOCATION = "media"

AZURE_ACCOUNT_NAME = "my_storage_account"
AZURE_CUSTOM_DOMAIN = f'{AZURE_ACCOUNT_NAME}.blob.core.windows.net'
STATIC_URL = f'https://{AZURE_CUSTOM_DOMAIN}/{STATIC_LOCATION}/'
MEDIA_URL = f'https://{AZURE_CUSTOM_DOMAIN}/{MEDIA_LOCATION}/'

# CORS SETTINGS
CORS_ALLOW_ALL_ORIGINS = os.getenv('CORS_ALLOW_ALL_ORIGINS', True) == 'True'

CORS_ALLOWED_ORIGINS = [
    "https://mywebsite.com",
]

這是自定義的 Azure 文件:

import os
from storages.backends.azure_storage import AzureStorage

class AzureMediaStorage(AzureStorage):
    account_name = os.environ['STORAGE_ACCOUNT_NAME'] # Must be replaced by your <storage_account_name>
    account_key = os.environ['STORAGE_ACCOUNT_KEY'] # Must be replaced by your <storage_account_key>
    azure_container = 'media'
    file_overwrite = False
    expiration_secs = None

class AzureStaticStorage(AzureStorage):
    account_name = os.environ['STORAGE_ACCOUNT_NAME'] # Must be replaced by your storage_account_name
    account_key = os.environ['STORAGE_ACCOUNT_KEY'] # Must be replaced by your <storage_account_key>
    azure_container = 'static'
    expiration_secs = None

這是我得到的代碼片段或錯誤代碼:

運行 collectstatic 導致的錯誤

請幫助在部署期間禁用collectstatic function。

我設法解決了這個問題。 正如 Sumithran 所建議的,將DISABLE_COLLECTSTATIC = True添加到設置並不能解決問題。 但是,我通過 Azure 應用程序主頁中的配置設置將變量DISABLE_COLLECTSTATIC = True添加到環境變量中來管理它。 我還選中了顯示這是部署設置的復選框。 這節省了我的時間,並且奏效了。

在配置設置中,單擊新建應用程序設置,並將名稱設置為DISABLE_COLLECTSTATIC ,然后將值設置為True

那解決了它。

暫無
暫無

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

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