記一次django項目的線上部署錯誤,django+nginx
一、問題描述
在將django項目部署到阿里雲(nginx作為web服務器)上之后發現出現后台管理界面admin不顯示樣式。
二、問題分析
1、靜態資源指向失效
打開瀏覽器查看css資源后發現,雖然文件指向項目文件中的靜態資源,但是static目錄下卻沒有相應的css和js資源
嘗試在項目路徑下收集樣式
python manage.py collectstatic
顯示報錯
django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
由報錯信息大概得之跟路徑配置靜態文件路徑有關
2、本地環境
在本地時,卻沒有出現問題
3、查找差別
在本地部署到線上后主要是將settings.py配置文件中的debug模式做了修改,
DEBUG = True
ALLOWED_HOSTS = []
改為
DEBUG = False
ALLOWED_HOSTS = ["*"]
三、問題解決
在debug為True的模式下,django的靜態文件都有內部自己管理,文件都在django內部,而部署線上之后無法正常顯示后台admin的靜態文件,就需要指定靜態文件的目錄
這里直接在settings.py中設置指定的靜態文件目錄:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')#指定樣式收集目錄
#或
STATIC_ROOT = '/www/mysite/mysite/static' #指定樣式收集目錄
然后收集CSS樣式,在終端輸入:
python manage.py collectstatic
運行這個命令之后,就會自動把后台CSS樣式和其他相關文件資源收集到/static/目錄下。
刷新頁面就能恢復樣式!