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