Ошибки WSGIServer при попытке запустить приложение Django

StackOverflow https://stackoverflow.com/questions/800584

  •  03-07-2019
  •  | 
  •  

Вопрос

Во-первых, вот мой скрипт:

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

Как было описано здесь.

И вот ошибка, которую я получаю при попытке запустить ее из оболочки:

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

Мой вопрос: почему эти параметры не передаются FastCGI автоматически?Что я делаю не так?Запуск сценария с моего веб-сервера приводит к внутренней ошибке сервера.


Вместо последних двух строк моего сценария я могу использовать

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

Но я все равно получаю ту же ошибку...

Это было полезно?

Решение

Решил это.По какой-то причине этот файл .htaccess помог.Клянусь, я пробовал все это раньше...

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]

Другие советы

Скрипт ожидает, что эти параметры будут переданы как переменные среды.Поскольку они отсутствуют в вашей среде оболочки, а сценарий не запускается в среде apache fastcgi (которая их предоставляет), он жалуется.

Есть ли у вас доступ к журналам ошибок Apache?Что они говорят?

Есть ли у вашего хоста поддержка mod_wsgi?Если да, вы можете использовать обработчик wsgi Django:

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

Дальнейшие инструкции можно найти на странице modwsgi вики, и Документы Джанго.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top