2016-02-19 2 views
3

Je suis en route pour le déploiement mais quand je suis passé à gunicorn depuis le serveur de développement mes fichiers statiques ne sont pas trouvés. J'ai couru collectstatic, et les fichiers ont été collectés.Je ne trouve pas les fichiers statiques django 1.9 gunicorn

note dans mon fichier de paramètres J'imprime le chemin d'accès à mes fichiers statiques. Ceci est de mon journal gunicorn:

/home/jcg/code/python/venvs/baseball/baseball_stats/collect_static 
Not Found: /static/admin/css/base.css 
Not Found: /static/admin/css/dashboard.css 

Voici mon fichier de paramètres. J'ai mis à jour correctement (j'espère) les paramètres de la version django 1.6 originale.

""" 
Django settings for baseball_stats project. 

For more information on this file, see 
https://docs.djangoproject.com/en/1.6/topics/settings/ 

For the full list of settings and their values, see 
https://docs.djangoproject.com/en/1.6/ref/settings/ 
""" 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
import os 

# this for reading environment variables for private values (secret_key, etc) 
# copy this to .bashrc or if using virtualvenvwrapper to bin/postactivate script 
# EXPORT VARIABLE=thevaluegoeshere 
import get_env_variable 

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

# Most recent year for statistics 
MOST_RECENT = 2013 

# Quick-start development settings - unsuitable for production 
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/ 

# SECURITY WARNING: keep the secret key used in production secret! 
SECRET_KEY = '-s*2+cq_niwa&*b%9(0w6$w!*9%d98oe7r6=+m0v+8(^&!10b6' 
SECRET_KEY = get_env_variable.get_env_variable('SECRET_KEY') 

# SECURITY WARNING: don't run with debug turned on in production! 
DEBUG = True 

TEMPLATE_DEBUG = True 

ALLOWED_HOSTS = [] 


# Application definition 

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'baseball', 
    'django.contrib.humanize', 
    'bootstrap3', 
    # 'debug_toolbar', 
    'django_extensions', 
    # 'csvimport', 
) 

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

ROOT_URLCONF = 'baseball_stats.urls' 

WSGI_APPLICATION = 'baseball_stats.wsgi.application' 


# Database 
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases 

AUTH_PASSWORD_VALIDATORS = [ 
    { 
     'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 
    }, 
    { 
     'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 
    }, 
    { 
     'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 
    }, 
    { 
     'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 
    }, 
] 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 

# Internationalization 
# https://docs.djangoproject.com/en/1.6/topics/i18n/ 

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'America/New_York' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 


# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.6/howto/static-files/ 

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, "collect_static") 
print STATIC_ROOT 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 
""" 
LOGGING = { 
    'version': 1, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
     }, 
    }, 
    'loggers': { 
     'django.db.backends': { 
      'level': 'DEBUG', 
      'handlers': ['console'], 
     }, 
    } 
} 
""" 

Je regardais ceci: Django Gunicorn not load static files

Mais je crois comprendre gunicorn peut faire des fichiers statiques, il est tout simplement pas aussi efficace que l'utilisation de nginx. Je pensais que je ferais cela comme une première étape avant la mise en place nginx

Courir findstatic ./manage.py ne trouve pas mes fichiers, donc, je devine son mon fichier de paramètres, pas le serveur

+1

gunicorn pourrait bien être en mesure de faire des fichiers statiques, mais avez-vous dit à? Comment? Où? –

Répondre

6

Troisième application de fête

Tout ce dont vous avez besoin est dj-static.

pip install dj-static 

Configurer vos actifs statiques dans settings.py:

STATIC_ROOT = 'staticfiles' 
STATIC_URL = '/static/' 

Ensuite, mettez à jour votre fichier wsgi.py utiliser dj-statique:

from django.core.wsgi import get_wsgi_application 
from dj_static import Cling 

application = Cling(get_wsgi_application()) 

pur Django

Ajouter à votre urls.py

from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

... 

urlpatterns += staticfiles_urlpatterns() 
+0

Pourquoi ai-je besoin d'une application tierce? En cours d'exécution findstatic ne trouve pas mes fichiers, donc je pense que c'est un problème de paramètres –

+0

Vous dev serveur fonctionne très bien? Ce n'est pas un problème de paramètres. –

+0

Merci d'avoir clarifié devoir ajouter à urlpatterns. J'ai fini par filer nginx et tout s'est bien passé. Je veux accepter votre réponse car elle était utile, même si je suis allé dans une autre direction –

2

vous pouvez le serveur de fichiers statiques à partir du serveur nginx. Dans le paramètre du serveur. https://stackoverflow.com/questions/tagged/django-settings

server { 
    listen 80; 
    server_name test.com; 
    location/{ 
     proxy_pass http://0.0.0.0:8000; 
     proxy_set_header X-Forwarded-Host $server_name; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Forwarded-Ssl on; 
     proxy_redirect off; 
    } 
    location /static/ { 
     autoindex on; 
     alias /home/ec2-user/app/static/; 
    } 
}