0

私はこれに慣れていませんが、mod_python/apacheまたはwsgi/apacheの構成に関しては苦労しています。

私はPythonデバッガーツールを使用することができました。pdb.set_trace()特にdjango開発サーバーを使用している場合、つまり、pdbインターフェイスを含むすべてのサーバーアクティビティを端末に出力します。

では、webfactionなどのホストにdjango Webサイトをデプロイしようとすると、どのようにこのようなことを行うのでしょうか。

ftpでerror_logにアクセスし、障害後にそれについて読む以外に、システムと対話できるようになりますか?

うまくいけば、私はここで十分に明確です。

ところで、以下は私が設定しようとしているファイルです。

import os
import sys

from os.path import abspath, dirname, join
from site import addsitedir

from django.core.handlers.modpython import ModPythonHandler

import pdb

class PinaxModPythonHandler(ModPythonHandler):
    def __call__(self, req):
        # mod_python fakes the environ, and thus doesn't process SetEnv. 
        # This fixes that. Django will call this again since there is no way
        # of overriding __call__ to just process the request.
        os.environ.update(req.subprocess_env)
        from django.conf import settings

        sys.path.insert(0, abspath(join(dirname(__file__), "../../")))

        sys.path.insert(0, os.path.join(settings.PINAX_ROOT, "apps/external_apps"))
        sys.path.insert(0, os.path.join(settings.PINAX_ROOT, "apps/local_apps"))

        sys.path.insert(0, join(settings.PINAX_ROOT, "apps"))
        sys.path.insert(0, join(settings.PROJECT_ROOT, "apps"))
        pdb.set_trace()

        return super(PinaxModPythonHandler, self).__call__(req)

def handler(req):
    # mod_python hooks into this function.
    return PinaxModPythonHandler()(req)

httpを介して結果として生じるエラーページは次のとおりです。

MOD_PYTHON ERROR

ProcessId:      318
Interpreter:    'web25.webfaction.com'

ServerName:     'web25.webfaction.com'
DocumentRoot:   '/etc/httpd/htdocs'

URI:            '/'
Location:       '/'
Directory:      None
Filename:       '/etc/httpd/htdocs'
PathInfo:       '/'

Phase:          'PythonHandler'
Handler:        'bc.deploy.modpython'

Traceback (most recent call last):

  File "/home/dalidada/webapps/birthconfidence/lib/python2.5/mod_python/importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "/home/dalidada/webapps/birthconfidence/lib/python2.5/mod_python/importer.py", line 1229, in _process_target
    result = _execute_target(config, req, object, arg)

  File "/home/dalidada/webapps/birthconfidence/lib/python2.5/mod_python/importer.py", line 1128, in _execute_target
    result = object(arg)

  File "/home/dalidada/webapps/birthconfidence/bc/deploy/modpython.py", line 33, in handler
    return PinaxModPythonHandler()(req)

  File "/home/dalidada/webapps/birthconfidence/bc/deploy/modpython.py", line 29, in __call__
    return super(PinaxModPythonHandler, self).__call__(req)

  File "/home/dalidada/webapps/birthconfidence/lib/python2.5/django/core/handlers/modpython.py", line 191, in __call__
    self.load_middleware()

  File "/home/dalidada/webapps/birthconfidence/lib/python2.5/django/core/handlers/base.py", line 40, in load_middleware
    raise exceptions.ImproperlyConfigured, 'Error importing middleware %s: "%s"' % (mw_module, e)

ImproperlyConfigured: Error importing middleware django_openid.consumer: "No module named django_openid.consumer"
4

1 に答える 1

1

mod_wsgi で pdb を使用する方法は、mod_wsgi サイトに記載されています。見る:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Python_Interactive_Debugger

他のデバッグ手法も同じページに示されています。

于 2009-03-15T01:46:27.440 に答える