2011-07-27 82 views
3

我有一個Apache服務器,我想開始用Django寫的網站。我用戶mod_wsgi。現在我準備好了。但是服務器的響應是空的。而在錯誤日誌中,什麼也沒有。你知道是什麼原因嗎?Django:只有空白頁

如果有些文件可以幫助(* .wsgi,settings.py),我會追加它。

Prochazky.wsgi

import os 
import sys 
import site 

os.environ['PYTHON_EGG_CACHE'] = '/home/prochazky/venv/.python-eggs' 

site.addsitedir('/home/prochazky/venv/lib/python2.6/site-packages') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'Prochazky.settings' 

sys.path.append('/home/prochazky/') 
sys.path.append('/home/prochazky/Prochazky/') 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

Apache的虛擬主機:

<VirtualHost *:80> 
    WSGIScriptAlias//home/prochazky/Prochazky/Prochazky.wsgi 
    ServerName testing.prochazky.net 
    DocumentRoot /home/prochazky 

    ErrorLog /home/prochazky/wsgi.log 
</VirtualHost> 
+1

你能告訴我們你的WSGI和Apache虛擬主機文件? –

+0

是的,我已添加它。 – yetty

+0

順便說一下,使用'DocumentRoot/home/prochazky'是一個非常糟糕的主意。如果您設法刪除WSGIScriptAlias,那麼該帳戶的主目錄中的所有內容都可能會被人們下載。切勿將DocumentRoot指向包含您不希望人們看到的東西的目錄。 –

回答

7

試圖得到一個Hello World程序的工作第一,而不是Django的。關注:

http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations

和閱讀:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

在猜測,雖然,你也許裝載了mod_python到同一個Apache。一個不兼容的mod_python只會在Apache主錯誤日誌中產生一個分段錯誤消息。


更新1

你加載mod_php,並且到同一個Apache?它有時可能會有衝突的共享庫需求,並會導致崩潰。如果您還在加載它,請從Apache配置中禁用它。

也可以嘗試設置:

WSGIApplicationGroup %{GLOBAL} 

這將強制使用主解釋的,這將避免與不正確寫入子口譯工作的第三方擴展的問題。

你確實需要仔細看看主要的Apache錯誤日誌,而不是虛擬主機。當您提出請求時,運行一個'tail -f'並檢查是否有消息存在,特別是分段錯誤或類似消息。這種關於進程崩潰和導致空頁面的消息不會顯示在虛擬主機錯誤日誌中。

+0

是的,我試過你好世界程序,它的工作原理。我沒有mod_python(是的,我相信,我一直在尋找它)。 – yetty

+0

好吧,打:)謝謝。 – yetty

+0

雖然這是它? PHP或可能是Python的第三方C擴展? –

1

是否有可能您的根網址/視圖的模板文件爲空或計算爲空?

舉例來說,如果你有一個模板,像這樣:

{% extends "base.html" %} 
{% block content %}blah blah{% endblock %} 

和base.html文件不使用塊「內容」,然後從你的模板內容分塊將不會被使用,你的儘管有內容,但模板將評估爲空。

+0

中解釋。響應完全是空的 - 沒有頭文件,沒有頭文件。我在我的本地主機上有這個相同的應用程序,它在那裏工作。不幸的是它是不同的操作系統。 – yetty

+0

當我去那裏,它給了我一個500錯誤,所以你可能想要現在檢查日誌。如果你的IP設置爲內部,它可能會試圖向你顯示錯誤,但也會失敗,但不會向我顯示錯誤。 – fahhem

+0

是的,我明白了,我正在努力並嘗試一些思考,因此有e500。 – yetty

0

這是從我的設置(名稱更改爲保護 無辜 有罪)。

<VirtualHost *:80> 
     ServerName site.domain.com 
     ServerAdmin [email protected] 

     WSGIScriptAlias//home/user/site/django.wsgi 

     <Directory /home/user/site/> 
       Options FollowSymLinks 
       AllowOverride None 
       Order allow,deny 
       allow from all 
     </Directory> 
     ... etc etc etc. 

我認爲你需要的<directory>允許服務器訪問.wsgi。
我真的不是一個Apache大師,儘管如此,不要把這個例子作爲完美。(我認爲所有需要的是order Allow, denyallow from all

一個很好的網站,以檢查出:http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango