Я недавно установил сервер SVN на моем веб-сервере papache. Установил УСВН http://www.usvn.fr/ для помощи в управлении репозиториями через веб-интерфейс.
Когда я создаю репозиторий и пытаюсь импортировать в него код из netbeans, я получаю следующую ошибку: org.tigris.subversion.javahl.ClientException: RA layer request failed
Server sent unexpected return value (403 Forbidden) in response to PROPFIND request for '/svn/python1'
Я знаю, что у меня правильные имя пользователя и пароль (и я пробовал разных пользователей). Я провел некоторое исследование, и мне кажется, что это, скорее всего, ошибка Apache svn. Ниже приведен файл конфигурации для этого виртуального хоста.
<VirtualHost *:80>
ServerName svn.domain.com
ServerAlias www.svn.domain.com
ServerAlias admin.svn.domain.com
DocumentRoot /home/mrlanrat/domains/svn.domain.com/usvn/public
ErrorLog /var/log/virtualmin/svn.domain.com_error_log
CustomLog /var/log/virtualmin/svn.domain.com_access_log combined
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory "/home/mrlanrat/domains/svn.domain.com/usvn">
Options +SymLinksIfOwnerMatch
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Location /svn/>
ErrorDocument 404 default
DAV svn
Require valid-user
SVNParentPath /home/mrlanrat/domains/svn.domain.com/usvn/files/svn
SVNListParentPath on
AuthType Basic
AuthName "USVN"
AuthUserFile /home/mrlanrat/domains/svn.domain.com/usvn/files/htpasswd
AuthzSVNAccessFile /home/mrlanrat/domains/svn.domain.com/usvn/files/authz
</Location>
</VirtualHost>
Может ли кто-нибудь указать, что я сделал не так и как это исправить? Я безуспешно тестировал изменение прав доступа к файлам и изменение конфигурации.
Заранее спасибо!
ОБНОВЛЕНИЕ: вот содержимое /home/mrlanrat/domains/svn.domain.com/usvn/files/authz
# This is an auto generated file! Edit at your own risk!
# You can edit this "/" section. Settings will be kept.
#
[/]
* =
#
# Don't edit anything below! All manual changes will be overwritten.
#
[groups]
python1 = mrlanrat, user
# Project python1
[python1:/]
@python1 = r
[python1:/branches]
@python1 = rw
[python1:/trunk]
@python1 = rw
А вот /home/mrlanrat/domains/svn.domain.com/usvn/files/htpasswd
mrlanrat:*****
user:*****
Вот журнал доступа: http://pastebin.com/RRYL1kCx и вот журнал ошибок: http://pastebin.com/vR2MJj0v
Интересная часть находится здесь:
[Wed Apr 21 12:13:25 2010] [error] [client 209.129.37.170] user not found: /svn/test/trunk
[Wed Apr 21 12:13:25 2010] [error] [client 209.129.37.170] client denied by server configuration: /home/mrlanrat/domains/svn.domain.com/usvn/public/svn
Вход в систему через веб-браузер, похоже, работает, однако netbeans и другие клиенты svn получают ошибку 403.
У меня была та же проблема, и я красный, что нет возможности отключить mod_evasive для определенного виртуального хоста.
Следующая конфигурация "обходного пути" у меня работает с svn:
изменение: /etc/apache2/mods-available/mod-evasive.load
Весь файл:
LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
<Если модуль mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 15
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
</ IfModule>
После изменения необходимо перезапустить Apache:
/etc/init.d/apache2 перезапуск
Радоваться, веселиться
После целого дня поиска в Google и поиска всевозможных проблем, которые могли вызвать эту ошибку 403, ни одна из которых не была моей. Я наконец нашел свою проблему!
У меня в Apache был включен mod_evasive. Судя по всему, SVN / WED-DAV отправляет команды так быстро, что блокируется.
Итак, вернемся к решению! Отключите mod_evasive! :)
Если кто-нибудь знает способ просто отключить его только для одного виртуального хоста, дайте мне знать. Я все еще хотел бы, чтобы он был включен для других моих виртуальных хостов.
Спасибо!
Что делает ваш /home/mrlanrat/domains/svn.domain.com/usvn/files/authz
файл похож?
Мой выглядит так:
[groups]
everyone = user1, user2, user3
repo1users = user1
[/]
@everyone = r
[repo1:/]
@repo1users = rw
у нас раньше были подобные проблемы, и это в основном неправильная настройка файла authz.