2016-08-04 17 views
1

Ich habe versucht, die Lösungen in den anderen Stack-Überlauf Beiträge über Django statische Dateien in der Produktion dienen, aber ich konnte sie nicht zur Arbeit zu bekommen. Meine statischen Dateien befinden sich in meinem Django App-Ordner (Liga).Serving statische Dateien django 1.9 Produktion Fehler

Meine CSS-Dateien werden nicht ordnungsgemäß geladen; Ich habe den folgenden Fehler in der Konsole in chrome:

Resource interpreted as Stylesheet but transferred with MIME type text/html 
Uncaught SyntaxError: Unexpected token ! 
profile:5 Uncaught SyntaxError: Unexpected token ! 

Ich denke, dass die CSS-Dateien als HTML-Dateien interpretiert werden? Ich glaube nicht, dass die Javascript-Dateien auch richtig geladen werden ...

Als ich die Quelldatei in Chrome überprüft und auf den Link zur CSS-Datei geklickt habe, funktionieren sie nicht. Also ich vermute, dass der Link zu den CSS-Dateien nicht funktioniert?

Die Links und Skripte, die CSS und JavaScript-Dateien zu laden sind:

<head> 
<!-- Latest compiled and minified CSS --> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<link rel="stylesheet" href="{% static 'league/css/bootstrap-theme.css' %}"> 
<link rel="stylesheet" href="{% static 'league/css/bootstrap-theme.min.css' %}"> 
<link rel="stylesheet" href="{% static 'league/css/bootstrap.css' %}"> 

<!-- Optional theme --> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous"> 

<!-- Latest compiled and minified JavaScript --> 

<script type="text/javascript" src="{% static 'league/js/bootstrap.min.js' %}"></script> 
<script type="text/javascript" src="{% static 'league/js/npm.js' %}"></script> 
<!-- jQuery library --> 

<script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
<link rel="stylesheet" href="{% static 'league/css/f-style.css' %}"> 
</head> 

Meine die relevanten Dateien in meiner settings.py Datei sind wie folgt:

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder', 
'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

STATIC_URL = '/league/static/' 
SITE_ID = 1 
STATIC_ROOT = BASE_DIR + '/league/static/' 

Die Dateikonfiguration auf meinem Apache-Server ist wie folgt:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/html 
    Alias /static /home/ubunu/project/league/static 
    <Directory /home/ubuntu/project/league/static> 
      Require all granted 
    </Directory> 
    <Directory /home/ubuntu/project/fantasy> 
      <Files wsgi.py> 
        Require all granted 
      </Files> 
    </Directory> 

    WSGIDaemonProcess project python-path=/home/ubuntu/project:/home/ubuntu/project/myprojectenv/lib/python2.7/$ 
    WSGIProcessGroup project 
    WSGIScriptAlias//home/ubuntu/project/fantasy/wsgi.py 

</VirtualHost> 

Vielen Dank!

+0

hat der Server den Server versucht, neu zu starten. Und in Ihrer Vorlage haben Sie das Tag {% load staticfiles%} nicht verwendet. –

Antwort

3

Okay, das ist eine ziemlich triviale Frage. Da gibt es zwei Dinge, die du tun musst.

Erstens, wenn Sie den lokaler python django Entwicklungsserver verwenden, dann statische Dateien bedient, indem einfach die Static im App-Ordnern nach oben, und wenn Sie in STATIC_DIRS einer anderen Ordner für Ihre statischen Dateien angegeben , dann wird es auch darauf schauen.

Aber wenn Sie Ihre Datei auf einigen anderen Server, wie dienen Nginx oder Herkou oder Apache in Ihrem Fall, dann müssen Sie alle Ihre statischen Dateien in einem anderen Verzeichnis sammeln, von wo aus der Apache liest die statischen Dateien aus.

Um das zu erreichen die oben Sie python manage.py collectstatic

Sobald Sie dies tun, werden alle statischen Dateien in den angegebenen Ordner gesammelt werden vom STATIC_ROOT Wert in Ihrem settings.py

tun müssen Jetzt zweitens, wenn Ihre STATIC_ROOT sowie Ihre STATIC_URL = '/league/static/' dann technisch, Dinge nicht funktionieren werden, da diese beiden für verschiedene Zwecke sind.

Ich schlage vor, einen neuen Ordner auf dem BASE Verzeichnisebene erstellen, sagen static_root_content und ändern Sie Ihre STATIC_ROOT = os.path.join(BASE_DIR, 'static_root_content')

Nun, wenn Sie die laufen werden python manage.py collectstatic alle statischen Daten werden in diesem Ordner aus dem Apache gesammelt werden sucht nach statischen Dateien.

Auch STATIC_DIRS und STATIC_ROOT können nicht den gleichen Wert in Ihrem settings.py haben

in diesem Artikel für eine bessere Erklärung ->Differences between STATICFILES_DIR, STATIC_ROOT and MEDIA_ROOT

+0

Ich bekomme einen 'GET http: //...../static/league/js/index.js 403 (Forbidden) 'Fehler. Wenn ich die URL besuche, erhalte ich die folgende Fehlerseite: 'Forbidden Sie sind nicht berechtigt, /static/league/js/prefixfree.min.js auf diesem Server zuzugreifen.' – alienboy

+0

Sehen Sie dies -> http://stackoverflow.com/questions/10873295/error-message-forbidden-you-dont-have-permission-to-access-on-this-server –

Verwandte Themen