我正在尝试在我的 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 输出打印到标准输出。伟大的!
但是,当我导航到www.icebreakersent.com时,从 django 打印到 stdout 的任何内容都不会出现!只有在 mysite.fcgi 文件中打印的输出才会发送到浏览器。
为了解决这个问题,我编辑了flup cgi 服务器文件以将发送到标准输出的数据作为文件保存。然后,我在 mysite.fcgi 脚本中加载此文件并将其打印到屏幕上。 这有效。 但是,这是我不明白的问题的解决方法。
所以,我对你们的问题是 - 为什么从 Flup/django 中打印到标准输出的数据没有显示在浏览器中?为什么它在控制台中显示得很好?
我的 cgi 文件名为“mysite.fcgi”,位于我的~/public_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'
我的 .htaccess 文件在~/public_html
其中并包含以下内容:
# 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]
有谁知道我怎样才能让它正常工作?
感谢您的任何建议:)
干杯
贾勒特