Как мне заставить 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.