如何让 trac 12.2 在 RHEL5 的 httpd 和 CollabNet SVN 1.6.17(它有自己的 httpd)上运行?

如何让 trac 12.2 在 RHEL5 的 httpd 和 CollabNet SVN 1.6.17(它有自己的 httpd)上运行?

我安装了 CollabNetSubversion-client-1.6.17-1.x86_64.rpm,它安装了 httpd v2.2.19

# /opt/CollabNet_Edge/csvn/bin/httpd -v
Server version: Apache/2.2.19 (Unix)

我安装了 Trac-0.12.2.tar.gz。

在 RHEL5 自带的 Apache httpd 上,运行的是 v2.2.3

# apachectl -v
Server version: Apache/2.2.3

我安装了 mod_wsgi,因为这是 trac 网站推荐的。

2.2.3 httpd 的 python.conf 设置:

Alias /trac/chrome/common /var/trac/htdocs/common
Alias /trac/chrome/site /var/trac/htdocs/site
<Directory "/var/trac/htdocs">
   Order allow,deny
   Allow from all
</Directory>
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /trac /var/trac/cgi-bin/trac.wsgi
<Directory /var/trac/cgi-bin>
  SetEnv PYTHON_EGG_CACHE /tmp
  WSGIApplicationGroup %{GLOBAL}
  Order deny,allow
  Allow from all
</Directory>
<LocationMatch "/trac/[^/]+/login">
  AuthType Digest
  AuthName "trac"
  AuthDigestDomain /trac
  AuthUserFile /etc/httpd/trac.htpasswd
  Require valid-user
</LocationMatch>

我建立了一个 trac 项目并将其配置为指向现有的 SVN 存储库。

trac.log 中报告的第一个错误是:

ImportError: No module named svn

http://trac.edgewall.org/wiki/TracSubversion#Troubleshooting有答案,所以我添加了指向 CollabNet 区域中的绑定的符号链接:

cd /usr/lib64/python2.4/site-packages
ln -s /opt/CollabNet_Edge/csvn/lib/svn-python/libsvn .
ln -s /opt/CollabNet_Edge/csvn/lib/svn-python/svn .

trac.log 中的下一个错误(感谢您读到这里——这是真正的问题):

Trac[svn_fs] INFO: Failed to load Subversion bindings
Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/trac/versioncontrol/svn_fs.py", line 267, in    __init__
  File "build/bdist.linux-x86_64/egg/trac/versioncontrol/svn_fs.py", line 68, in _import_svn
  File "/opt/CollabNet_Edge/csvn/lib/svn-python/svn/fs.py", line 19, in ?
     from libsvn.fs import *
  File "/opt/CollabNet_Edge/csvn/lib/svn-python/libsvn/fs.py", line 7, in ?
     import _fs
ImportError: /usr/lib64/python2.4/site-packages/libsvn/../../../lib/libsvn_subr-1.so.0:
  undefined symbol: apr_memcache_add_server

我发现这个页面提到了同样的问题:http://subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=313639

给出的建议是:“您可能需要使用我们的 Apache 服务器或将您的服务器更新到 2.2.11”(即 2.2.19 以匹配 CollabNet 包中的服务器)。好吧,CollabNet 捆绑的 httpd 服务器没有安装 mod_wsgi,而且我不确定如何构建它并将其添加到他们的服务器中——所以我不喜欢那个选项。我宁愿不将我们的主要 httpd 从 2.2.3 更新到 2.2.19——但这真的是我唯一的其他选择吗?

顺便说一句,我尝试下载 SVN 1.6.17 并构建和安装 swig-py -- 来构建绑定,希望将它们与 2.2.3 httpd 和 trac 一起使用。但是,我不确定这是否安全/正确... SVN 不知何故与 2.2.19 httpd 绑定,对吧?无论如何,我也无法让它工作。任何建议都值得赞赏。

更新:根据 Graham 的建议,我编译了一个 2.2.19 httpd 服务器(用于替换 RH5 2.2.3 httpd),现在一切正常。我第一次尝试使用 2.2.19 httpd 失败了。我必须使用选项配置 httpd --with-included-apr,然后一切正常。

答案1

您使用的二进制文件是针对较新的 Apache 版本构建的,具体而言是针对较新的 APR 库版本构建的,而不是您使用的 Apache 2.2.3 安装。除了升级到使用足够新的 APR 库的 Apache 版本外,没有其他方法可以解决这个问题。

相关内容