WSGIServer Fehler, wenn Sie versuchen zu laufen, Django-app
-
03-07-2019 - |
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...
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 .