2

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 からアプリケーションを実行する方法が必要です...

4

2 に答える 2

2

この問題によると、これは許可の問題です。以下を使用して解決:

WSGIDaemonProcess support.roundup user=roundup group=roundup threads=25
WSGIProcessGroup support.roundup

のファイルに/var/roundup/support/roundup、適切なアクセス許可を持つ所有者とグループがあります。

于 2012-09-17T14:07:24.083 に答える
1

試す:

from roundup.cgi.wsgi_handler import RequestDispatcher
tracker_home = '/var/roundup/support'
application = RequestDispatcher(tracker_home)

mod_wsgi が必要とするのは、有効な WSGI アプリケーション エントリ ポイントである「アプリケーション」オブジェクトだけです。

これまで試みてきたように、WSGI サーバーまたは FASTCGI アダプターを自分で開始する必要はありません。

于 2012-09-16T05:12:25.390 に答える