Frage

Erstens, hier ist mein Skript:

#!/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")

Wie beschrieben wurde hier.

Und hier ist der Fehler ich erhalte beim Startversuch von shell:

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 -->

Meine Frage ist, warum sind nicht diejenigen, params übergeben werden automatisch per FastCGI?Was mache ich falsch?Ausgeführt wird das Skript von meinem web-server macht mir einfach ein interner server-Fehler.


Anstatt die letzten beiden Zeilen des Skripts, die ich verwenden kann

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

Aber ich bekomme immer noch den exakt gleichen Fehler...

War es hilfreich?

Lösung

Gelöst.Diese .htaccess-Datei hat den trick, aus welchem Grund auch immer.Ich schwöre, ich habe versucht, all dies vor dem...

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]

Andere Tipps

Das Skript erwartet, dass dieser params als Umgebungsvariablen übergeben werden. Da sie in der Shell-Umgebung nicht vorhanden sind, und das Skript wird nicht in der Apache fastcgi-Umgebung ausgeführt wird (was sie zur Verfügung stellt), klagt sie.

Haben Sie Zugriff auf Apache Fehlerprotokolle haben? Was sagen sie?

Hat Ihr Host mod_wsgi Unterstützung? Wenn ja, könnten Sie Djangos wsgi Handler verwenden:

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()

Weitere Hinweise finden Sie auf der modwsgi Wiki gefunden werden, und die < a href = "http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/" rel = "nofollow noreferrer"> Django docs .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top