2014-01-14 7 views
7

Ich versuche, ein Django (1.6) -Projekt mit Apache (2.2.22) und mod_wsgi (3.4) zu starten. Mein Python ist 2.7.3, der Standardwert von Ubuntu 12.04. Ich habe alles wie chmod 777 von/var/www nach unten eingestellt. Leider gibt es mirApache sagt Fehler beim Öffnen der Datei zum Lesen: Berechtigung verweigert

Fehler beim Öffnen der Datei zum Lesen: Permission und dann vorzeitiges Ende der Skript-Header verweigert: wsgi.py

kann mir jemand sagen, was ich falsch mache? Ich veröffentliche meine error.log hier

[email protected]:/var/www/Imse_dev2/Imse/Imse# tail -f /var/log/apache2/error.log 
[Tue Jan 14 14:16:04 2014] [notice] caught SIGTERM, shutting down 
[Tue Jan 14 14:16:08 2014] [notice] Apache/2.2.22 (Ubuntu) mod_wsgi/3.4 Python/2.7.3  configured -- resuming normal operations 
[Tue Jan 14 14:16:28 2014] [error] /var/www/Imse_dev2/Imse 
Error opening file for reading: Permission denied 
[Tue Jan 14 14:21:32 2014] [error] [client 127.0.0.1] Premature end of script headers: wsgi.py 
[Tue Jan 14 14:29:13 2014] [notice] caught SIGTERM, shutting down 
[Tue Jan 14 14:29:13 2014] [notice] Apache/2.2.22 (Ubuntu) mod_wsgi/3.4 Python/2.7.3 configured -- resuming normal operations 
[Tue Jan 14 14:29:17 2014] [error] /var/www/Imse_dev2/Imse 
Error opening file for reading: Permission denied 
[Tue Jan 14 14:34:21 2014] [error] [client 127.0.0.1] Premature end of script headers: wsgi.py 

Und auch meine httpd.conf

#LimitRequestLine 200475 
#LimitRequestFieldSize 200475 

WSGIDaemonProcess imse_dev2_wsgi python-path=/var/www/Imse_dev2/Imse/Imse 


#LoadModule deflate_module modules/mod_deflate.so 
#LoadModule headers_module modules/mod_headers.so 

<VirtualHost *:80> 
    ServerName whq-4 
    DocumentRoot /var/www/ 
    #Header set Access-Control-Allow-Origin "*" 
    Alias /static /var/www/Imse_dev2/Imse/static 
    Alias /favicon.ico /var/www/favicon.ico 
#  Header set Access-Control-Allow-Origin "*" 


    <Directory /var/www/> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride None 
      Order allow,deny 
      allow from all 
    </Directory> 


    WSGIScriptAlias /imse_dev2 /var/www/Imse_dev2/Imse/Imse/wsgi.py 
    <Directory /var/www/Imse_dev2/Imse/Imse> 
      WSGIProcessGroup imse_dev2_wsgi 
      <Files wsgi.py> 
        Order deny,allow 
        Allow from all 
      </Files> 
    </Directory> 

    <IfModule mod_headers.c> 
      Header set Access-Control-Allow-Origin "*" 
    </IfModule> 

</VirtualHost> 
+0

Ich denke, dass für Apache 2.2 Sie sollten mod_wsgi 3.3 – yuvi

+0

verwenden mit ok ok, lass mich dann versuchen ... – Sayantan

+0

Warum der Downvote? – trpt4him

Antwort

0

Die Sache ist, wird Django nicht zulassen, dass Sie Dateien außerhalb des Verzeichnisses zuzugreifen, in dem die Anwendung . Wenn Ihre Anwendung beispielsweise unter /var/www/project ausgeführt wird und die Dateien, auf die Sie zugreifen möchten, unter /var/www/foo gespeichert sind, löst Django die Ausnahme aus, die Sie erhalten.

Die Lösung besteht darin, das Verzeichnis, auf das Sie zugreifen möchten, in das Projektverzeichnis zu verschieben.

+0

Ich denke, dass Django selbst keine Beschränkungen auferlegt, auf welche Dateien man zugreifen kann ... Meinst du vielleicht Apache? – Mark

+0

Hallo Mark, nein, ich meinte wirklich Django selbst. Früher wurde überprüft, ob Sie auf etwas außerhalb des Projektpfads zugreifen wollten ... Ich hatte dieses Problem schon einmal selbst, aber ich kann nicht bestätigen, dass diese Überprüfung in den aktuellen Versionen noch vorhanden ist ... aber Sie können auf Google verweisen um zu sehen, wie oft es passiert ist: https://www.google.com.br/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=django%20file%20upload%20suspiciformeoperation – Carlos

+0

Okay, das stimmt Für hochgeladene Dateien wird das Verzeichnis überprüft. Ich denke, dass Django das gegen MEDIA_ROOT anstatt Apache conf prüft. Ich bin ziemlich sicher, dass das hier nicht das Problem ist (keine Erwähnung einer Datei, die hochgeladen wird), aber es ist eine gute Anmerkung, kann ähnliche Probleme verursachen. – Mark

0

bei httpd.conf suchen und die entsprechende Fehlermeldung, sieht aus wie das Verzeichnis

/var/www/Imse_dev2/Imse/Imse 

ist entweder nicht lesbar durch den Apache-Benutzer (das ist der Apache-Prozess ‚besitzt‘) oder das Verzeichnis isn 't ausführbar durch den Apache-Benutzer.

chmod 755 /var/www/Imse_dev2/Imse/Imse 

, aber ich würde es Document-Root sind andere Verzeichnisse unter der Apache vermuten, dass auch unlesbar wäre: das Verzeichnis für alle Benutzer sichtbar machen kann wie folgt durchgeführt werden. Ich würde wahrscheinlich alle Dateien und Verzeichnisse von der Apache-Benutzer unter Ihrem Dokument root gehören, es sei denn Sie bestimmten Grund hatte nicht, wie folgt aus:

chown -R apache /var/www/Imse_dev2 
Verwandte Themen