Trac 导致 RuntimeError:instance.__dict__ 在受限模式下无法访问

Trac 导致 RuntimeError:instance.__dict__ 在受限模式下无法访问

我有以下 Apache 配置。每个端口上有以下服务:

8022 - Apache。测试端口,长期来看将是端口 80。

8002 -西地那非,一个位于许多其他服务前端的主题代理。

8202 -追踪,基于 Python 的错误跟踪器,这是 xdv 需要置于其前面的服务之一,因此将其分离。

8082 -克隆CMS。未在 apache 中显示。XDV 将请求代理给它。

这个想法是,所有请求都通过 Apache(8022)通过 xdv 代理(8002)发送,该代理将主题应用于每个内容源(8082 和 8202)

然而,我注意到在测试期间,如果我通过 8202 访问 Trac 站点,8022 站点将会出现错误,RuntimeError: instance.__dict__ not accessible in restricted mode并且在 Apache 重新启动之前不会再工作。无论 8022 是否出现错误或被访问,8202 仍然可以工作。

这似乎与这个 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>

答案1

首先,你应该具备:

WSGIProcessGroup trac

而不是像您那样的 %{GLOBAL}。

您拥有它的方式仍然以嵌入模式运行,并且一些其他 Apache 模块或嵌入式 WSGI 应用程序可能会产生干扰。

相关内容