2016-12-15 116 views
0

首先對此的長度表示歉意。使用Whitenoise製作Django靜態文件

我有一個運行在Centos6和Apache上的django項目,使用C-Panel插件來安裝Django,我試圖在生產環境中提供靜態文件。 我的項目使用Django 1.9,我試圖使用Whitenoise來提供我的靜態文件。

我的settings.py包含以下內容:

STATICFILES_STORAGE ='whitenoise.django.GzipManifestStaticFilesStorage' 
STATIC_URL = '/static/' 
STATIC_ROOT = STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'common-static'), 

這是我MIDDLEWARE_CLASSES

MIDDLEWARE_CLASSES = [ 
'django.middleware.security.SecurityMiddleware', 
'whitenoise.middleware.WhiteNoiseMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 
) 

這是我的Django應用程序

import os 
from django.core.wsgi import get_wsgi_application 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 
application = get_wsgi_application() 

而且這個wsgi.py是由插件生成的:

import os 
import sys 
import site 
vepath = '/home/mysite/virtualenv3.5/lib/python3.5/site-packages' 
prev_sys_path = list(sys.path) 
site.addsitedir(vepath) 

sys.path.append('/home/mysite/djangosites/mysite') 
from django.core.wsgi import get_wsgi_application 

os.environ.setdefault("DJANGO_SETTINGS_MODULE","mysite.settings" 
application = get_wsgi_application() 

我在我的settings.py中有DEBUG = False。 當我運行./manage.py collectstatic收集文件,如果我用0.0.0.0:8000運行服務器,找到靜態文件。

我嘗試添加以下兩個wsgi.py文件,但無濟於事:

from whitenoise.django importDjangoWhiteNoise 
application = DjangoWhiteNoise(application) 

就如何解決這一將不勝感激任何意見。

+0

我忘了補充一點,我的IP目前只能通過筆記本電腦主機文件公開發布。 – dtdave

回答

0

這是一個遲到的反應,但它可能會幫助其他人尋找答案。

當您使用'whitenoise.middleware.WhiteNoiseMiddleware'時,您不必包含'django.middleware.security.SecurityMiddleware'。

此外,您不需要對wsgi.py進行任何更改。添加中間件將爲您處理所有事情。