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

Проблемы с настройкой SVN с Apache в Ubuntu - ошибка 500 при фиксации

Я пытаюсь настроить сервер SVN с помощью DAV на Apache. По данным интернет-ресурсов (например, https://help.ubuntu.com/10.04/serverguide/subversion.html), установка всех их на Ubuntu должна быть довольно простой. И это было, никаких ошибок при установке и создании первого репозитория, кроме проблемы при первоначальном импорте файлов проекта (я захожу в репозиторий по HTTP). В клиенте SVN (KDESVN) я вижу следующее сообщение:

Server sent unexpected return value (500 Internal Server Error) in response to PROPFIND request for 'http://.../svn/myproject/trunk/test.txt'

Нет ничего об этой ошибке в error.log Apache и в пользовательском журнале svn.log Настроил в DAV. В access.log Есть несколько строк, регистрирующих активность, и эта одна из них:

{IP} - - [18/Mar/2014:22:47:24 -0300] "PROPFIND /svn/myproject/trunk/test.txt HTTP/1.1" 500 1150 "-" "SVN/1.7.9/SvnQt wrapper client neon/0.29.6" 

без подробностей.

Моя конфигурация следует.

/etc/apache2/mods-enabled/dav_svn.conf:

<Location /svn>
        DAV svn
        SVNParentPath /var/www/svn-repos
        SVNListParentPath On
        #SVNPathAuthz Off
        AuthType Basic
        AuthName "Subversion Repository"
        AuthUserFile /etc/apache2/passwd
        Require valid-user
        LimitXMLRequestBody 0 
</Location>

CustomLog ${APACHE_LOG_DIR}/svn.log "%t %u %{SVN-ACTION}e" env=SVN-ACTION

Разрешения для /var/www/svn-repos:

sudo chmod -R 777 /var/www/svn-repos
sudo chown -R www-data:www-data /var/www/svn-repos

Добавлен один пользователь в /etc/apache2/passwd какие данные я использую в KDESVN и в командной строке с --username и --password аргументы.

Версии:

Мне удалось создать начальную структуру репозитория (/ trunk, / tags, / branch), зафиксировать локально, используя file:///..., и я могу перечислить их в клиенте или в браузере. Но когда я сделаю commit с удаленной машины с помощью http://, возникает указанная выше ошибка.

Я пробовал каждое решение, которое смог найти для этой ошибки:

Ничего не помогает. Все та же ошибка.

Есть ли способ улучшить ведение журнала, просто чтобы посмотреть, что это за загадочный 500 Internal Server Error? Как узнать, что мне не хватает?

За ваши предложения заранее благодарю.

Попробуйте включить журнал перезаписи, чтобы убедиться, что у вас нет правила mod_rewrite, которое мешает dav_svn. Я столкнулся с проблемой с такими же симптомами для usvn.

Вы можете включить перезапись журнала (обязательно отключите это после завершения отладки):

RewriteLog "/usr/local/var/apache/logs/rewrite.log"
RewriteLogLevel 3

Я исправил свою проблему, добавив строку в мой файл .htaccess, чтобы исключить подкаталог репозиториев dav_svn:

<Files *.ini>
Order Allow,Deny
Deny from all
</Files>

php_flag short_open_tag on
php_flag magic_quotes_gpc off

RewriteEngine on
#RewriteCond
RewriteBase "//usvn/"
RewriteRule ^svn/ - [L,NC] # This is the line I added to exclude this path
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]