2009-04-29 15 views
8

çalıştırmak çalışırken:WSGIServer hataları burada benim senaryo, Öncelikle Django uygulaması

#!/usr/bin/python 
import sys, os 

sys.path.append('/home/username/python') 
sys.path.append("/home/username/python/flup") 
sys.path.append("/home/username/python/django") 
# more path stuff 

os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings" 

from django.core.servers.fastcgi import runfastcgi 
runfastcgi(method="threaded", daemonize="false") 

olarak here nitelendirildi. Burada

Ve olsun hata olduğunda kabuğundan çalıştırmak çalışıyor:

WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI! 
WSGIServer: missing FastCGI param SERVER_NAME required by WSGI! 
WSGIServer: missing FastCGI param SERVER_PORT required by WSGI! 
WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI! 
Status: 404 NOT FOUND 
Content-Type: text/html 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html lang="en"> 
<!-- more html which looks to be the correct output --> 

Sorum şu, neden FastCGI tarafından otomatik geçirilen bu parametreler değil mi? Neyi yanlış yapıyorum? Komut dosyasını web sunucumdan yürütmek bana bir iç sunucu hatası veriyor. Yerine Senaryomun son iki hatlarının


, ben

from flup.server.fcgi import WSGIServer 
from django.core.handlers.wsgi import WSGIHandler 
WSGIServer(WSGIHandler()).run() 

kullanabilirsiniz Ama yine aynı hatayı alıyorum ...

+0

Neden mod_wsgi kullanmıyorsunuz? –

+2

@ S.Lott: Birkaç yıl geçti, ancak paylaşılan bir ev sahibiydim. WSGI'ya erişiminiz yoktu. – mpen

cevap

6

Çözüldü. Bu .htaccess dosyası ne sebepten dolayı hile yaptı. Yemin ederim ki bütün bunları denedim ...

AddHandler fcgid-script .fcgi 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^(media/.*)$ - [L] 
RewriteRule ^(adminmedia/.*)$ - [L] 
RewriteCond %{REQUEST_URI} !(cgi-bin/myproject.fcgi) 
RewriteRule ^(.*)$ cgi-bin/myproject.fcgi/$1 [L] 
2

senaryo bu parametreler geçirilmesini bekliyor çevre değişkenleri olarak. Kabuk ortamınızda bulunmadıklarından ve betik apache fastcgi ortamında çalışmıyorsa (bu onları sağlar), şikayetçi olur.

Apache hata günlüklerine erişiminiz var mı? Ne diyorlar?

Ev sahibi mod_wsgi destekliyor mu? Eğer öyleyse, Django'nın WSGI işleyicisi kullanabilirsiniz:

import sys 
import os 

base = os.path.dirname(os.path.abspath(__file__)) + '/..' 
sys.path.append(base) 

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

import django.core.handlers.wsgi 

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

ayrıntılı talimatlar modwsgi wiki bulunan ve Django docs edilebilir.

+0

Bu, kabuktan çalıştırırken hiç bir çıktı ve tarayıcımdan çalışırken normal dahili sunucu hatası veriyor. Sunucumun WSGI'yi destekleyip desteklemediğini ve nasıl kontrol edeceğimi bilmiyorum. – mpen

+0

Ayrıca, tam olarak ne demek istediğinizden emin değilim ama "fastcgi ortamında çalışmıyor". Ev sahibi, FastCGI'yi desteklediklerini iddia ediyor ve .fcgi olarak kaydedebiliyor ve çalışabiliyor ... FastCGI değilse tam olarak ne oluyor ve bunu nasıl ifade edebilirim, böylece hosting sağlayıcılarım bunu etkinleştirmesini isteyebilirim? – mpen

+0

Demek istediğim Apache, fastcgi işleminize çevre değişkenleri aracılığıyla bilgi aktarıyor olmasıdır. Özel olarak eklemediyseniz, kabuğunuz bu bilgiyi içermiyor. Komut dosyanızı komut satırından çalıştırdığınızda bu değişkenleri kabuk ortamınızda ayarlamadığınızdan, fasgcgi betiğinizin gerektirdiği bilgilere ve dolayısıyla hataya sahip olmaz. Komut satırında tanımladığınız hata, komut dosyanızın apache altında çalışmasını engelleyen herhangi bir hata ile ilgili değildir. – vezult