Как мне заставить 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 для 2.2.3 httpd:

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 имеет ответ, поэтому я добавил символические ссылки на привязки, которые находятся в области 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 - для создания привязок, надеясь использовать их с http.3 и trac 2.2.3. Тем не менее, я не уверен, что это безопасно / правильно... SVN как-то связан с httpd 2.2.19, верно? Во всяком случае, я не мог заставить это работать. Любой совет приветствуется.

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

1 ответ

Решение

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

Другие вопросы по тегам