2010-11-23 54 views
4

我試圖讓一些微不足道的Django在我的dreamhost帳戶上運行。在選擇Dreamhost之前,我做了功課,但最近才決定嘗試Django。Dreamhost上的Django與乘客:沒有迴應瀏覽器,沒有錯誤

無論如何,我有我想下something.mydomain.com運行一個簡單的應用程序。乘客已啓用。

當我訪問一個靜態頁面,它加載罰款,走出〜/ something.mydomain.com /公共/中。 當我訪問任何其他頁面(如something.mydomain.com/admin)時,該url應該由我的Django應用程序處理。

這是我卡住的地方;頁面不會加載,並且不會引發錯誤。它始終保持試圖加載(沒有超時)。我對日誌不太瞭解;我自己沒有找到任何東西。

我的猜測是在〜/ something.mydomain.com /的passenger_wsgi.py故障。我嘗試過不同的版本。

此乘客給...凍結?上述

import sys, os, django 
sys.path.append("/home/me/something.mydomain.com/") 
os.environ['DJANGO_SETTINGS_MODULE'] = 'something.settings' 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

該乘客開心地描述了 「你好,世界!」 S我

import sys, os, django 
sys.path.append("/home/me/something.mydomain.com/") 
os.environ['DJANGO_SETTINGS_MODULE'] = 'something.settings' 
def application(environ, start_response): 
    write = start_response('200 OK', [('Content-type', 'text/plain')]) 
    return ["Hello, world!"] 

所以我傾向於相信一些關於WSGIHandler()沒有正確accomodated。

我在Python殼試過這樣:

>>> import django 

,它給了沒有錯誤。

現在是什麼?

回答

1

我放棄了Dreamhost上使用Django,因爲他們的服務器強制終止計時的基礎上,任何WSGI過程。之後,新的請求必須啓動一個新的實例,在我的情況下,這意味着查詢有時花費10-15秒。對於大多數人來說,假定該網站已關閉並放棄,這已經足夠了。

這可能不是你特別的問題,但我希望你不會很高興,即使你讓你的網站工作。

+0

就我個人而言,我與WebFaction並發現他們很好,包括與Django。如果你尋找另一個能與Django和WSGI配合的主機,那麼WebFaction就是其中之一。 – 2010-11-23 00:55:43

+1

所以我收集,但我已經支付了dreamhost。 – Joel 2010-11-23 09:31:39

0

我同意本和克里斯,在DH共享env肯定不適合服務更大的項目。 Afaik,但是,超時是基於上次加載,所以如果你有穩定的流,你的應用程序應該在理論上 - 運行良好。 :)

反正我用DH的共享名乘客,概念證明很多,且有提供良好服務,爲一個很好的價格。

關於您的問題 - 乘客做好捕捉和解析Rails的錯誤,但是當將引發異常您使用的Django實驗WSGI實現模具。解決方法是運行一些中間件,捕獲錯誤並將其傳遞給Passenger。

閱讀更多信息和實例: http://wiki.dreamhost.com/Passenger_WSGI#500_Errors_with_Passenger_WSGI_Workaround

+0

感謝您進一步解釋。我會試一試中間件並回報。我正在認真考慮轉向林德,但我仍然希望得到這個工作。 – Joel 2010-11-28 08:13:06

0

我有類似這樣的DH最初的一系列問題。我最終創建了自己的Python,而不是他們自己的,並且從此沒有任何問題。

設置一些路徑:

echo 'PATH="$HOME/bin:$PATH"' >> ~/.bash_profile 
echo 'LD_LIBRARY_PATH=$HOME/lib/' >> ~/.bash_profile 
source ~/.bash_profile 

安裝Python:

wget http://python.org/ftp/python/2.7/Python-2.7.tgz 
tar -xzvf Python-2.7.tgz 
rm Python-2.7.tgz 
cd Python-2.7 
./configure --prefix=${HOME} 
make 
make install 
cd .. 
rm -rf Python-2.7 

和調整你的WSGI處理程序:

import sys, os 
INTERP = "/home/example_user/bin/python" 
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv) 
sys.path.append("/home/example_user/example.com") 
os.environ["DJANGO_SETTINGS_MODULE"] = "example_project.settings" 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 
1

我能得到WSGI一個很好的調試安裝應用程序使用Werkzeug模塊。我認爲這也可以與Django集成。

首先,我假設你在你的主目錄下設置了你的python virtualenv,並在~/env下激活。

二,安裝werkzeug-debugger-appengine函數,打補丁werkzeug debugger

cd ~ 
mkdir src 
cd src 
git clone https://github.com/nshah/werkzeug-debugger-appengine.git 
cd werkzeug-debugger-appengine 
python setup.py install 

的最後一步是設置你passenger_wsgi.py文件:

import sys, os 

DEBUG = True 
ROOT = os.path.dirname(os.path.abspath(__file__)) 
INTERP = '/home/HOMEDIR/env/bin/python' 

sys.path.insert(1,ROOT)  # for when your app is in your web dir 
if sys.executable != INTERP: 
    os.execl(INTERP, INTERP, *sys.argv) 

from myapp import app as application 

if DEBUG: 
    application.debug=True 
    from werkzeug_debugger_appengine import get_debugged_app 
    application = get_debugged_app(application) 

不要忘了給力的乘客重新啓動:

touch ~/domain.com/tmp/restart.txt 

現在,當你打一個例外,你將會看到如下所示的頁面:

Werkzeug Debugger Output