Debian Squeeze の公式リポジトリで Roundup 1.4 をインストールしましたが、mod_wsgi
. ホスト構成:
<VirtualHost *:80>
ServerName support.domain.com
WSGIScriptAlias / /var/roundup/support/apache/roundup.wsgi
WSGIDaemonProcess support.roundup user=roundup group=roundup threads=25
WSGIProcessGroup support.roundup
<Directory /var/roundup/support>
<Files roundup.wsgi>
Order allow,deny
Allow from all
</Files>
</Directory>
# ... some logging configuration
</VirtualHost>
/var/roundup/support
を使用してトラッカーをインストールしroundup-admin install
、構成し、次に を使用して初期化しroundup-admin initialise
ました。それから私は作成されましたapache/roundup.wsgi
:
from roundup.cgi.wsgi_handler import RequestDispatcher
tracker_home = '/var/roundup/support'
application = RequestDispatcher(tracker_home)
http://support.domain.com
(もちろん、この URL は少し異なります)で自分のサイトを開くと、HTTP 応答があり、次のよう500 Internal Server Error
にログに記録されます。
mod_wsgi (pid=17433): Exception occured processing WSGI script '/var/roundup/support/apache/roundup.wsgi'.
RuntimeError: response has not been started
どうしたの?cgiではなくwsgiでラウンドアップを正しく実行するには? または、応答が開始されていない理由はどこにありますか?
編集
Roundup のインストール マニュアルによると、wsgi ハンドラは次のようになります。
from wsgiref.simple_server import make_server
# obtain the WSGI request dispatcher
from roundup.cgi.wsgi_handler import RequestDispatcher
tracker_home = 'demo'
app = RequestDispatcher(tracker_home)
httpd = make_server('', 8917, app)
httpd.serve_forever()
しかし、これは何の反応もありません。メッセージやサーバーログなしでブラウザが永久にロードします。apache モジュールで実行されているスクリプトから別のサーバーを起動するのは良い考えではないと思います。だから私は別のコードサンプルを試しました:
from roundup.cgi.wsgi_handler import RequestDispatcher
tracker_home = '/var/roundup/support'
application = RequestDispatcher(tracker_home)
from flup.server.fcgi import WSGIServer
WSGIServer(application).run()
しかし、これは次のようないくつかのエラーをスローします:
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!
RequestDispatcher からアプリケーションを実行する方法が必要です...