2016-12-06 3 views
0

Ich habe gerade dieses Problem, und ich frage mich, ob Sie mir helfen können, ich benutze django 1.7, läuft mein Projekt großartig auf lokaler, ich mache eine Bereitstellung in EC2 von Amazon, mit nginx, Gunicorn, etc, das Projekt läuft gut in der Instanz von EC2, aber wenn ich die Einstellungen in der production.py, die Stile, Bilder hochladen in den Bucket in S3, aber laden Sie im Projekt, auf der Hauptseite. Im mit Kissen für die Verwaltung der Bilder und statische .. Ich weiß einfach nicht, warum es nicht funktioniert, weil die statischen Dateien im Eimer sind. Bitte hilf mir, hier stelle ich die Codes meiner base.py, production.py. Ich habe Python manage.py Collectfiles verwendet und es sammelt, aber es lädt nicht die Stile, wenn ich das Projekt im Web öffne.Problem mit django staticfiles amazon S3

BASE.PY

from unipath import Path 

BASE_DIR = Path(__file__).ancestor(3) 

SECRET_KEY = '<my secret key>' 



DJANGO_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    ) 

LOCAL_APPS = (

    'apps.eventos', 
    'apps.users', 

    ) 

THIRD_PARTY_APPS = (

    'social.apps.django_app.default', 

    ) 

INSTALLED_APPS = DJANGO_APPS + LOCAL_APPS + THIRD_PARTY_APPS 

MIDDLEWARE_CLASSES = (
    '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', 
) 

ROOT_URLCONF = 'ueventos.urls' 
WSGI_APPLICATION = 'ueventos.wsgi.application' 

LANGUAGE_CODE = 'es' 
TIME_ZONE = 'UTC' 
DATE_FORMAT = "Y-m-d" 
USE_I18N = True 
USE_L10N = False 
USE_TZ = True 


AUTH_USER_MODEL = 'users.User' 

AUTHENTICATION_BACKENDS = (
     'social.backends.facebook.FacebookAppOAuth2', 
     'social.backends.facebook.FacebookOAuth2', 
     'social.backends.google.GoogleOpenId', 
     'social.backends.google.GoogleOAuth2', 
     'social.backends.google.GoogleOAuth', 
     'django.contrib.auth.backends.ModelBackend', 
    ) 

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/' 
SOCIAL_AUTH_USER_MODEL = 'users.User' 

SOCIAL_AUTH_FACEBOOK_KEY = '776670565804594' 
SOCIAL_AUTH_FACEBOOK_SECRET = 'fcc2a240ef71ff88c15fd64d685bf4eb' 

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '435717486239-b9dpg2pfian4h8dj1vc95jna8tfdeced.apps.googleusercontent.com' 
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'oE9ZzK_p9zuNxH91gRLS8nH1' 

PRODUCTION.PY

from .base import * 

DEBUG = False 
TEMPLATE_DEBUG = False 
ALLOWED_HOSTS = ['*'] 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': '<mydb>', 
     'USER': '<mydbuser>', 
     'PASSWORD' : 'mydbuser', 
     'HOST': 'localhost', 
     'PORT': '5432' 

    } 
} 

INSTALLED_APPS = INSTALLED_APPS + (

    'storages', 
    ) 

AWS_STORAGE_BUCKET_NAME = 'ueventos' 
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorages' 
AWS_ACCESS_KEY_ID = 'mykey' 
AWS_SECRET_ACCESS_KEY = 'mysecretkey' 

STATIC_URL = 'https://s3.amazonaws.com/ueventos/' 
MEDIA_URL = 'https://s3.amazonaws.com/ueventos/' 

MEDIA_ROOT = BASE_DIR.child('media') 

ich installieren bereits boto und django Speicher .. eveything auf dem Server funktioniert gut, ist das Problem mit der statischen in s3.

in meiner manage.py und wsgi.py Ich gebe an, de production.py Datei zu verwenden.

Ich habe einen Ordner namens "media", wo alle Dateien, die die Leute hochladen, dort gespeichert werden. Aber dieser Ordner wird in S3 angezeigt. Ich habe versucht, ein Bild auf meiner Seite hochzuladen, funktioniert aber sowieso nicht.

I 2 apps bin mit, ein für Veranstaltungen und eine andere für Benutzer .. beiden Speicherbilder ..

Vielen Dank.

Antwort

0

versuchen, etwas wie folgt aus:

from storages.backends.s3boto import S3BotoStorage 

StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static') 
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media') 

DEFAULT_FILE_STORAGE = 'config.settings.production.MediaRootS3BotoStorage' 
STATICFILES_STORAGE = 'config.settings.production.StaticRootS3BotoStorage' 

MEDIA_URL = 'https://s3.amazonaws.com/%s/media/' % AWS_STORAGE_BUCKET_NAME 
STATIC_URL = 'https://s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME 

entsprechend anpassen Pfad.

Siehe auch: How to set-up a Django project with django-storages and Amazon S3, but with different folders for static files and media files?

+0

boto.exception.NoAuthHandlerFound: Kein Handler bereit war, zu authentifizieren. 1 Handler wurden überprüft. Prüfen [ 'HmacAuthV1Handler'] Ihre Anmeldeinformationen – soultaker

+0

Stellen Sie sicher, definiert haben: * 'AWS_ACCESS_KEY_ID' *' AWS_SECRET_ACCESS_KEY' * 'AWS_STORAGE_BUCKET_NAME' – mishbah

+0

Ja i definieren es – soultaker