为什么我的python脚本下载而不是运行?

时间:2011-07-26 04:12:05

标签: python django fastcgi

我正在尝试使用.htaccess重写和运行FastCGI的python脚本在我的共享Web主机上部署我的Django项目。我正在使用此方法,因为我没有能力更改和Apache配置。当我访问该站点时,它不会运行FastCGI脚本,而是下载或显示脚本文件的内容。我使用chmod + x mysite.fcgi使脚本可执行。我已将脚本放在cgi-bin中,但没有任何作用。该脚本将从命令行运行。

的.htaccess

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cgi-bin/mysite.fcgi/$1 [QSA,L]

mysite.fcgi

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

# Add a custom Python path.
sys.path.insert(0, "/home/jmjordan/.local/lib/python")
sys.path.insert(0, "/home/jmjordan/.local/lib/python/flup")


# Switch to the directory of your project. (Optional.)
# os.chdir("/home/user/myproject")

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "jmjordan.settings"

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

1 个答案:

答案 0 :(得分:1)

我认为你需要:

<Files mysite.fcgi>
    SetHandler fastcgi-script
</Files>

Apache配置中的某个位置。 AddHandler只是在Apache的可用处理程序列表中放置一个处理程序;你必须使用SetHandler来使用它。

这可能是一项安全措施,可防止某人上传带有.fcgi后缀的文件并在您的服务器上运行任意代码。