fastCGi 与 Django:“缺少 WSGI 所需的 FastCGI 参数 REQUEST_METHOD!”

问题描述 投票:0回答:2

我使用的是 Apache + fastCGI 和 Django 1.8

我在共享主机上的文件夹如下所示:

/home/username/

/home/username/MyProject_SRC

/home/username/MyProject_SRC/MyProject/manage.py

和:

/home/username/public_html/.htaccess

/home/username/public_html/index.fcgi

我已将

.htaccess
index.fcgi
编辑为如下所示:

.htaccess:

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/index.fcgi
RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]

index.fcgi:

#!/home/username/djangoenv/bin/python3
import sys, os

sys.path.insert(0, "/home/username/MyProject_SRC")

os.chdir("/home/username/MyProject_SRC")

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

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

现在,当我在服务器上这样做时:

(djangoenv)username@hostname [~/public_html]# ./index.fcgi 
Status: 200 OK
Vary: Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<html lang="en">
.... // Normal webpage
</html>
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!

访问我的主页会返回

500 internal error
,日志中没有更多内容。

编辑我在执行以下操作时得到了相同的结果:

(djangoenv)username@hostname [~/MyProject_SRC]# ./manage.py runfcgi

django apache fastcgi
2个回答
1
投票

我有一个类似的问题,就我而言,我没有找到特定的来源,但我尝试将其添加到我的 index.fcgi 中,并且执行 ./index.fcgi 不再问我,如果它一直得到 500 检查您正在使用的 flup 版本,最好是 1.0.2

os.environ['REQUEST_METHOD'] = "GET"
os.environ['SERVER_NAME'] = "yourdomain.com"
os.environ['SERVER_PORT'] = "80"
os.environ['SERVER_PROTOCOL'] = "HTTP/1.1"

0
投票

当我收到此错误时,问题是服务器更改删除了我所有自定义安装的 python 软件包,包括

flup
。所以修复方法很简单:安装它:

pip3 install flup
© www.soinside.com 2019 - 2024. All rights reserved.