1

greengeeks 共有ホスティング アカウントで django をセットアップしようとしています。

私は(ほとんど)ここの指示に従い、さらにローカルのpython 'site-packages'ディレクトリにflupをインストールしました。

私のpythonは2.4.3で、その「ローカル」コピーを と に作成しまし~/bin~/lib/python2.4

私はdjango 1.3を使用しています(まだpython 2.4.xをサポートしている最新リリース)。

編集:わかりました、前回はPythonを機能させる(そしてdjangoを呼び出す)ことについてでした...

SO、djangoが動作しています-実行すると:

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

次に、django の出力が stdout に出力されます。すごい!

ただし、 www.icebreakersent.comに移動すると、django から stdout に出力されたものが表示されません! mysite.fcgi ファイルに出力された出力のみがブラウザーに表示されます。

この問題を回避するために、flup cgi サーバー ファイルを編集して、stdout に送信されるデータをファイルとして保存しました。次に、このファイルを mysite.fcgi スクリプトにロードして、画面に出力します。 これは機能します。 ただし、これは私が理解していない問題の回避策です。

だから、皆さんへの私の質問は - flup/django 内から stdout に出力されているデータがブラウザに表示されないのはなぜですか? そして、なぜそれがコンソールにうまく表示されるのですか?

私の 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]

これを適切に機能させる方法を知っている人はいますか??

提案をありがとう:)

乾杯

ジャレット

4

0 に答える 0