Python django关于共享主机(绿色极客)

Python django关于共享主机(绿色极客),python,django,hosting,cgi,Python,Django,Hosting,Cgi,我正在尝试在我的greengeeks共享主机帐户上安装django 我(大部分)按照说明进行操作,此外还将flup安装到了本地python“site packages”目录中 我的python是2.4.3,我在~/bin和~/lib/python2.4中创建了它的“本地”副本 我使用的是django 1.3(仍然支持python 2.4.x的最新版本) 编辑: 好的,上次是关于让python工作(并调用django) 所以,我让django工作了-如果我运行: python/home/icebr

我正在尝试在我的greengeeks共享主机帐户上安装django

我(大部分)按照说明进行操作,此外还将flup安装到了本地python“site packages”目录中

我的python是2.4.3,我在
~/bin
~/lib/python2.4
中创建了它的“本地”副本

我使用的是django 1.3(仍然支持python 2.4.x的最新版本)

编辑: 好的,上次是关于让python工作(并调用django)

所以,我让django工作了-如果我运行:

python/home/icebreak/www/cgi-bin/mysite.fcgi

然后django输出被打印到stdout。太好了

然而,当我导航到时,从django打印到stdout的任何内容都不会出现!只有在mysite.fcgi文件中打印的输出才能进入浏览器

为了解决这个问题,我编辑了flup cgi服务器文件,将发送到标准输出的数据保存为文件。然后,我将这个文件加载到mysite.fcgi脚本中,并将其打印到屏幕上这是有效的。然而,这是一个我不理解的问题的解决办法

所以,我的问题是-为什么从flup/django内部打印到stdout的数据没有显示在浏览器中?为什么它在控制台中显示得很好

我的cgi文件名为“mysite.fcgi”,位于我的
~/public\u html/cgi-bin
目录中。 内容包括:

#!/home/icebreak/bin/python
import sys, os
import traceback

# Add a custom Python path.
sys.path.insert(0, "/home/icebreak/bin/python")
sys.path.append("/home/icebreak/lib/python2.4/site-packages")
sys.path.append("/home/icebreak/bin")
sys.path.append("/home/icebreak/django_projects/icebreak")

# Switch to the directory of your project. (Optional.)
os.chdir("/home/icebreak/django_projects/icebreak/mysite")

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

#from flup.server.fcgi import WSGIServer
#def test_app(environ, start_response):
#    start_response('200 OK', [('Content-Type', 'text/plain')])
#    yield 'Hello, world!\n'

#WSGIServer(test_app).run()

from django.core.servers.fastcgi import runfastcgi

print "Content-type: text/html\n\n"
print 'BEGIN'
try:
    runfastcgi(method="threaded", daemonize="false", outlog="/home/icebreak/django_out.log", errlog="/home/icebreak/django_err.log")
    #runfastcgi(method="threaded", daemonize="false")
except Exception, e:
    #print '<br>'
    #print 'oops, error occured in runfastcgi...'
    #print '<br>'
    #print "Unexpected error:", sys.exc_info()[0]
    #print '<br>'
    #traceback.print_exc()
    #print "Couldn't do it: %s" % e
    pass

f = open('/home/icebreak/django_projects/icebreak/mysite/okiedokie.txt', 'r')
for line in f:
    print line
f.close()


#from django.core.handlers.wsgi import WSGIHandler
#application = WSGIHandler()


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

print '<br>'
print 'END'
有人知道我怎样才能让它正常工作吗

谢谢你的建议:)

干杯


贾雷特

1。你的规则似乎被注释掉了。2.Apache日志怎么说?嘿@DanielRoseman,谢谢你的评论。。我注释掉了rewriterule,因为它似乎没有改变(在安装flub之后,它似乎正在处理重定向到我的cgi文件)。我似乎在共享主机服务器上的任何地方都找不到apache日志文件(通过ssh访问)。我不确定flup如何进行重定向。Flup是一个基本的FCGI服务器,但仍然需要告诉Apache,当您请求
www.mywebsitename.com/mysite
时,它应该通过
/cgi-bin/mysite.cgi/
提供服务。你需要问你的主机公司哪里可以访问Apache日志。嗯……我问了我的主机,他们给了我早上的日志(通常我没有访问权限)。他们是这么说的:
[Sun Jul 15 11:25:33 2012][error][client 184.151.61.68]脚本头过早结束:mysite.cgi,referer:http://www.icebreakersent.com/ [Sun Jul 15 11:25:33 2012][error][client 184.151.61.68]文件不存在:/home/icebreak/public_html/500.shtml,请参考:http://www.icebreakersent.com/   文件“/home/icebreak/public_html/cgi-bin/mysite.cgi”,第13行,在?
我猜我的cgi文件有问题…@TankorSmash-我不记得我到底做了什么,但我让它工作了一段时间,但它不稳定(如果我回忆正确,它有时会停止工作,然后再工作)最后,我离开了GreenGeeks,通过Name便宜买了一台VPS。祝你好运:)
# Use PHP5CGI as default
AddHandler fcgid-script .php
AddHandler application/cgi .fcgi
AddHandler fastcgi-script .fcgi
AddHandler cgi-script .fcgi
#Options +FollowSymLinks
Options ALL

RewriteEngine On
RewriteBase /

# PHP based site (www.jarrettchisholm.com) - currently not working (July 18, 2012)
RewriteRule ^(jarrettchisholm.com/.*)$ jarrettchisholm.com/index.php/$1 [QSA,L]

# Django based site (www.icebreakersent.com)
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(static/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(cgi-bin/mysite.fcgi)
RewriteRule ^(.*)$ cgi-bin/mysite.fcgi/$1 [QSA,L]