2014-01-14 117 views
7

我想用apache(2.2.22)和mod_wsgi(3.4)運行Django(1.6)項目。我的Python是2.7.3,默認是Ubuntu 12.04。我已經將/ var/www中的所有內容都設置爲chmod 777。不幸的是它給了我Apache說錯誤打開文件閱讀:權限被拒絕

錯誤打開文件進行讀取:權限拒絕 然後 腳本頭過早結束:wsgi.py

有誰能夠告訴我什麼,我做錯了什麼? 我張貼我的error.log這裏

[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 

,也是我的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

我認爲對於Apache 2.2的你應該使用mod_wsgi的3.3 – yuvi

+0

使用好的好吧,讓我試試然後... – Sayantan

+0

爲什麼downvote? – trpt4him

回答

0

的事情是,Django將不會允許你訪問該目錄以外的文件,其中應用程序是。因此,例如,如果您的應用程序運行在/var/www/project,並且您要訪問的文件位於/var/www/foo,則Django會引發您遇到的異常。

解決方法是將您正嘗試訪問的目錄移動到項目目錄中。

+0

我認爲Django本身不會對您可以訪問的文件施加任何限制...您是指Apache可能嗎? – Mark

+0

嗨馬克,不,我真的指的是Django本身。它用於檢查您是否嘗試訪問項目路徑之外的某些內容...我以前自己曾經遇到過這個問題,但我無法確認這一檢查是否仍在當前版本中,但您可以參考Google看看它曾經發生過的頻率:https://www.google.com.br/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=django%20file%20upload%20susiciousicious – Carlos

+0

好的,那是真的,對於上傳的文件,它會檢查目錄。我認爲Django檢查對MEDIA_ROOT而不是Apache conf。我相當確定這不是問題(沒有提及正在上傳的文件),但是這是一個好消息,可能會導致類似的問題。 – Mark

0

看你的httpd.conf和相應的錯誤消息,看起來像目錄

/var/www/Imse_dev2/Imse/Imse 

要麼由Apache用戶可讀的(其中「擁有」 apache的過程)或該目錄ISN可以由apache用戶執行。使該目錄對所有用戶可見可以做這樣的:

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

,但我懷疑有Apache文檔根目錄下的其他目錄,也將是不可讀的。我可能會做一個由Apache用戶擁有的所有文件,並顯示目錄文檔根目錄下,除非你有特殊理由,否則像這樣:

chown -R apache /var/www/Imse_dev2 
相關問題