2017-07-05 2 views
2

J'essaye de déployer un site Web de django sur un ubuntu 14.04 vps using nginx et gunicorn mais mes dossiers de css et fichiers de js ne sont pas chargés. Je l'ai développé sur le par défaut django serveur de développement et cela a très bien fonctionné, mais quand je déploie mon site et collectstatic et essayez d'y accéder via le navigateur seulement le texte HTML est chargé et en vérifiant sur ma console de navigateur je trouve 301 et forbidden erreurs sur mon dossier statique . Je suis un débutant à Ubuntu et Django ainsi et tous les fils et les forums que j'ai trouvés en ligne indiquent simplement les autorisations et la propriété des fichiers et n'ont pas eu de chance lorsque je corrige mes permissions.Django 301 et 403 interdit les erreurs sur mes fichiers statiques en production

screenshot of my browser error when i try to access django admin

ici est mon settings.py

import os 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 


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

# SECURITY WARNING: keep the secret key used in production secret! 
SECRET_KEY = '' 

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

ALLOWED_HOSTS = ['mysite.com','www.mysite.com'] 


# Application definition 

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'powerlineapp', 
] 

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    '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 = 'powerlineproject.urls' 

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', 
      ], 
     }, 
    }, 
] 

WSGI_APPLICATION = 'powerlineproject.wsgi.application' 


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

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


# Password validation 
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators 

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', 
    }, 
] 


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

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'UTC' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 


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


STATIC_URL = '/static/' 

if not DEBUG: 
    STATIC_ROOT = '/var/www/powerline/powerlineproject/static/' 


MEDIA_ROOT = os.path.join(BASE_DIR,'media') 
MEDIA_URL = '/media/' 

ici est ma principale urls.py

from django.conf.urls import include,url 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^',include('powerlineapp.urls')), 

] 

nginx.conf

user www-data www-data; 
pid /var/run/nginx.pid; 
worker_processes 1; 
worker_rlimit_nofile 100000; 

events { 
    worker_connections 4096; 
    include /etc/nginx.custom.events.d/*.conf; 
} 

http { 
    default_type application/octet-stream; 

    access_log off; 
    error_log /var/log/nginx/error.log crit; 

    sendfile on; 
    tcp_nopush on; 

    keepalive_timeout 20; 
    client_header_timeout 20; 
    client_body_timeout 20; 
    reset_timedout_connection on; 
    send_timeout 20; 

    types_hash_max_size 2048; 

    gzip on; 
    gzip_disable "msie6"; 
    gzip_proxied any; 
    gzip_min_length 256; 
    gzip_comp_level 4; 
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js; 

    server_names_hash_bucket_size 128; 

    include mime.conf; 
    charset UTF-8; 

    open_file_cache max=100000 inactive=20s; 
    open_file_cache_valid 30s; 
    open_file_cache_min_uses 2; 
    open_file_cache_errors on; 

    server_tokens off; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 

    include proxy.conf; 
    include fcgi.conf; 

    include conf.d/*.conf; 
    include /etc/nginx.custom.d/*.conf; 
} 

include /etc/nginx.custom.global.d/*.conf; 

mon dossier site conf

server { 
    listen *:80; 



    server_name powerlineagencies.co.ke; 

    access_log /var/log/nginx/powerline-agencies.access.log; 
    error_log /var/log/nginx/powerline-agencies.error.log; 

    root /var/www/powerline/powerlineproject; 
    index index.html index.htm index.php; 





    location/{ 



     proxy_pass http://unix:/var/run/ajenti-v-gunicorn-powerline-agencies-python-wsgi-0.sock; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-Proto $scheme; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

    } 


    location ~ /static/.* { 
     alias /var/www/powerline/powerlineproject; 




    } 

}

ici est mes répertoires la structure

screenshot of my directory structure

Quelqu'un peut-il me aider à résoudre s'il vous plaît ce problème?

+0

montrer votre principale urls.py – Exprator

+0

mis à jour ma question et inclus ma principale urls.py, son Rien d'extraordinaire mais je crois que c'est assez suffisant pour charger mon tableau de bord admin au moins. mais je ne sais pas pourquoi cela ne fonctionne pas dans la production. – gathagu

+0

Etes-vous sûr que votre utilisateur nginx 'www-data' peut accéder à'/var/www/powerline/powerlineproject'. Vous devriez essayer nginx config comme '' 'location/static/{ root/var/www/powerline/powerlineproject; } '' ' –

Répondre

1
from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 
    # ... the rest of your URLconf goes here ... 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
urlpatterns = [ 
    # ... the rest of your URLconf goes here ... 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

dans ngix

location /static/ {  

      alias /var/www/powerline/powerlineproject/static/;  
     } 

ajouter ces lignes à urls.py et collectstatic puis vérifier

+0

j'ai essayé votre solution mais toujours pas de chance mes fichiers sont toujours interdits – gathagu

+0

le servez-vous avec n'importe quel serveur? comme nginx? – Exprator

+0

ouais.im le servant avec nginx et gunicorn – gathagu