Я пытаюсь настроить сервер 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://
, возникает указанная выше ошибка.
Я пробовал каждое решение, которое смог найти для этой ошибки:
DAV svn \ SVNParentPath /var/www/svn-repos
в конфигурации DAVloglevel
к debug
в apache2.conf
- Я не мог видеть больше полезной информации в журналахНичего не помогает. Все та же ошибка.
Есть ли способ улучшить ведение журнала, просто чтобы посмотреть, что это за загадочный 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]