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

Как заставить trac 12.2 работать на httpd RHEL5 с 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.

На Apache httpd, поставляемом с RHEL5, работающим под управлением v2.2.3

# apachectl -v
Server version: Apache/2.2.3

Я установил mod_wsgi, так как это рекомендовано на сайте trac.

Настройки python.conf для httpd 2.2.3:

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). Что ж, на httpd-сервере, связанном с CollabNet, не установлен mod_wsgi, и я не уверен, как я могу создать такой и добавить его на свой сервер, поэтому мне не нравится этот вариант. Я бы предпочел не обновлять наш основной httpd с 2.2.3 до 2.2.19 - но разве это единственный вариант?

Кстати, я попытался загрузить SVN 1.6.17 и собрать и установить swig-py - для создания привязок, надеясь использовать их с 2.2.3 httpd и trac. Однако я не уверен, что это безопасно / правильно ... SVN каким-то образом привязан к httpd 2.2.19, верно? Во всяком случае, я тоже не мог заставить это работать. Любые советы приветствуются.

ОБНОВИТЬ: Следуя предложению Грэма, я скомпилировал сервер httpd 2.2.19 (чтобы заменить httpd RH5 2.2.3), и теперь все работает. Моя первая попытка с httpd 2.2.19 не удалась. Мне пришлось настроить httpd с опцией --with-included-apr, то все заработало.

Используемые вами двоичные файлы были созданы для более новой версии Apache и, в частности, более новой версии библиотек APR, чем ваша установка Apache 2.2.3, которую вы используете. Нет никакого способа обойти проблему, кроме обновления до версии Apache, которая использует достаточно новую библиотеку APR.