2016-06-26 16 views
0

Ich habe den ganzen Tag damit verbracht. Ich konnte meine statischen Dateien nicht erhalten. Meine Django-Anwendung funktioniert gut. Ich benutze: Python 3.4, Django 1.8.13, mod_wsgi 4.5.2. Ich habe die meisten Fehler in meiner httpd.conf mit anderen Fragen in SO gelöst. Was braucht man mehr, um das zu schaffen?Statische Dateien nicht über Apache für Django Anwendung

httpd.conf

ServerRoot "/home/rajkumar2014/webapps/allure/apache2" 

LoadModule authz_core_module modules/mod_authz_core.so 
LoadModule dir_module  modules/mod_dir.so 
LoadModule env_module  modules/mod_env.so 
LoadModule log_config_module modules/mod_log_config.so 
LoadModule mime_module  modules/mod_mime.so 
LoadModule rewrite_module modules/mod_rewrite.so 
LoadModule setenvif_module modules/mod_setenvif.so 
LoadModule wsgi_module  modules/mod_wsgi.so 
LoadModule unixd_module  modules/mod_unixd.so 
LoadModule alias_module  modules/mod_alias.so 

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
CustomLog /home/rajkumar2014/logs/user/access_allure.log combined 
ErrorLog /home/rajkumar2014/logs/user/error_allure.log 

Listen 21188 
KeepAlive Off 
SetEnvIf X-Forwarded-SSL on HTTPS=1 
ServerLimit 1 
StartServers 1 
MaxRequestWorkers 5 
MinSpareThreads 1 
MaxSpareThreads 3 
ThreadsPerChild 5 

WSGIRestrictEmbedded On 
WSGILazyInitialization On 

<VirtualHost *:21188> 

    Alias /media "/home/webapps/allure_media" 
    Alias /static "/home/webapps/allure_static" 

    <Directory /home/rajkumar2014/webapps/allure_media> 
    Require all granted 
    </Directory> 

    <Directory /home/rajkumar2014/webapps/allure_static> 
    Require all granted 
    </Directory> 

    WSGIDaemonProcess allure processes=2 threads=12 python-path=/home/rajkumar2014/webapps/allure/allure:/home/rajkumar2014/webapps/allure/lib/python3.4/site-packages:/home/rajkumar2014/webapps/allure/lib/python3.4 
    WSGIProcessGroup allure 

    WSGIScriptAlias//home/rajkumar2014/webapps/allure/allure/allure/wsgi.py 
    <Directory /home/rajkumar2014/webapps/allure/apache2> 
    Require all granted 
    </Directory> 

</VirtualHost> 

settings.py

STATIC_URL = '/static/' 

STATIC_ROOT = '/home/rajkumar2014/webapps/allure_static/' 

STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),) 

# Media files (All user uploaded content) 

MEDIA_ROOT = '/home/rajkumar2014/webapps/allure_media/' 

MEDIA_URL = '/media/' 

Bitte helfen.

Antwort

1

Ich bin neu bei djano/python und habe diesen Kampf letzten Monat für meine erste Django-App ausgetragen ... ich bin kein Serveradministrator, also kann ich nicht sagen, was genau du falsch machst, aber es scheint deine Syntax zu sein etwas anders ist als das, was ich getan habe, habe ich es wie

Alias /static/ /home/ksjdsd3/public_html/mysite/static/ 
<Directory /home/ksjdsd3/public_html/mysite/static> 
    Require all granted 
</Directory> 

vor allem gibt es eine / nach statischer und Pfad zum Verzeichnis nicht im Angebot ist

0

habe ich Probleme dienen statische Datei mit Webfaction haben , je nachdem, wie ich Django installiert habe (mit dem webfaction installer kannst du entweder eine vollständige django-app oder nur einen Apache/mod_wsgi App, wo Sie Ihre Django-Version bereitstellen können).

Webfaction verfügt über einen zusätzlichen nginx-Prozess, der auf Stammebene für ausgeführt wird, der statische Dateien bereitstellt. Sie sollten also die Zugriffssteuerungslisten - ACLs überprüfen.

Für mich waren diese ACLs das Problem, nginx Benutzer hatte keinen Lesezugriff auf den statischen Ordner.

Vielleicht können Sie auf UNIX-Terminal auf Webfaction anmelden und führen getfacl (Sie etwas ähnlich wie diese Ausgabe erhalten sollen):

[[email protected] ~]$getfacl /home/rajkumar2014/webapps/allure_static/ 

# file: home/rajkumar2014/webapps/allure_static/ 
# owner: rajkumar2014 
# group: rajkumar2014 
user::rwx 
user:apache:r-x 
user:nginx:r-x 
group::rwx 
mask::rwx 
other::r-x 

[[email protected] ~]$ getfacl /home/rajkumar2014/webapps/allure/allure/allure/wsgi.py 
getfacl: Removing leading '/' from absolute path names 
# file: home/rajkumar2014/webapps/allure/allure/allure/wsgi.py 
# owner: rajkumar2014 
# group: rajkumar2014 
user:apache:r-x 
user:nginx:r-x 
group::rw- 
mask::rwx 
other::-- 

Die ideea wird, dass der Apache-Benutzer und die nginx Nutzer Zugriff gelesen zu Ihrem statischen Ordner und auch zum wsgi.py (wenn es von einer externen Quelle hochgeladen wurde - Ihrem Laptop).

auch auf Fehler prüfen und Verweise auf Ihre statischen Ordner in den Protokollen:

  • Frontend Logs, der nginx Prozess für statisch; Lage:

    /home/rajkumar2014/logs/frontend/

  • Benutzerprotokolle für Anwendungen Benutzer installiert (wie Django)

    /home/rajkumar2014/logs/user/

ich wäre daran interessiert zu wissen:

  • Haben Sie den Installer von Webfaction Django verwendet?
  • hast du eine webfaction app to serve static assets erstellt?
  • finden Sie Verweise auf Ihren statischen Ordner in den Protokollen frontend?
  • Sie haben einen alten (Centos 6.5, Apache 2.2) oder neuen (Centos 7, Apache 2.4) Webfaction Plan?

Mehr dazu in der Webfaction Docs