Назад | Перейти на главную страницу

Trac вызывает RuntimeError: instance .__ dict__ недоступен в ограниченном режиме

У меня указанная ниже конфигурация Apache. На каждом порту есть следующие службы:

8022 - Apache. Тестируем порт, в конечном итоге это будет порт 80.

8002 - XDV, прокси-сервер для создания тем, который находится перед рядом других служб.

8202 - Trac, Трекер ошибок на основе Python, который является одной из служб, перед которыми должен располагаться xdv, отсюда и разделение.

8082 - Plone CMS. Не отображается в apache. XDV отправляет ему запросы.

Идея состоит в том, что все запросы поступают через Apache (8022) через прокси xdv (8002), который применяет тему к каждому из источников контента (8082 и 8202)

Однако я заметил, что во время тестирования, если я захожу на сайт Trac через 8202, на сайте 8022 появляется ошибка RuntimeError: instance.__dict__ not accessible in restricted mode и не будет работать, пока не будет перезапущен Apache. 8202 по-прежнему работает независимо от того, является ли 8022 ошибочным или выполняется доступ.

Это похоже на эта ошибка Trac. Но я не использую mod_python, а WSGIProcessGroup и WSGIApplicationGroup имеют одно и то же значение.

Почему это происходит? Есть ли способ лучше настроить Apache? А именно элемент wsgi?

В предыдущей итерации эта настройка была внутри хоста 8022, но это означало, что он также обслуживался из этого порта и избегал прокси-сервера.

<VirtualHost foo.bar.com:8022>
        ServerName foo.bar.com
        ServerAlias foo.bar.com

        ProxyRequests Off
        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>

        ProxyPreserveHost On

        RewriteEngine On
        RewriteCond %{HTTP:Authorization} ^(.*)
        RewriteRule ^/(.*) http://0.0.0.0:8002/$1 [P]


</VirtualHost>


<VirtualHost foo.bar.com:8202>
        ServerName foo.bar.com
        ServerAlias foo.bar.com

        <Directory "/home/web/foo/parts/trac/tracwsgi/cgi-bin">
                WSGIDaemonProcess trac stack-size=524288 python-path=/usr/lib/python2.5/site-packages
                WSGIScriptAlias /trac /home/web/foo/parts/trac/tracwsgi/cgi-bin/trac.wsgi
                WSGIProcessGroup %{GLOBAL}
                WSGIApplicationGroup %{GLOBAL}
                Options +Indexes FollowSymLinks
                AllowOverride None
                Allow from all
                Order allow,deny
        </Directory>

        <Location "/trac">
                AuthBasicProvider ldap
                AuthType Basic
                AuthzLDAPAuthoritative off
                AuthName "Login"
                AuthLDAPURL "ldap://127.0.0.1:389/dc=foo-bar,dc=org?uid"
                AuthLDAPBindDN "cn=admin, dc=foo-bar, dc=org"
                AuthLDAPBindPassword secretword
                require valid-user
        </Location>

</VirtualHost>

Для начала вам понадобится:

WSGIProcessGroup trac

а не% {GLOBAL}, как у вас.

То, как оно у вас есть, все еще работает во встроенном режиме, и некоторые другие модули Apache или встроенное приложение WSGI могут мешать.