SVN на моем веб-сервере, кажется, сломался после того, как я внес некоторые изменения. Он настроен как часть одного виртуального хоста HTTPS, а не для всеобщего доступа. Мои клиенты SVN выдают ошибку «доступ к (репо) запрещен», но если я прохожу через веб-интерфейс (включен SVNListParentPath), все работает правильно, используя тот же URL. Я даже могу получить доступ к файлам через браузер. Когда я использую клиент, я замечаю, что мой журнал Apache указывает, что клиент пытается получить доступ к '/ var / www / mysite / svn', когда мои репозитории SVN расположены в '/ home / svn'. Однажды у меня была страница перенаправления при устранении неполадок с использованием Elinks. Может ли это означать, что мой сервер использует какое-то перенаправление, которое не работает для клиентов SVN? Остальная часть сайта нормально работает через SSL, просто SVN не работает. Спасибо.
Вот моя конфигурация Apache для этого сайта:
#mydomain.co.uk
NameVirtualHost *:443
<VirtualHost *:80>
ServerAdmin me@mydomain.co.uk
ServerName mydomain.co.uk
DocumentRoot /var/www/mydomain
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/mydomain>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /usr/share/ampache>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Directory>
<Directory /var/www/mydomain/opendocman>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Directory>
<Directory /var/www/mydomain/44kg>
Options Indexes FollowSymLinks MultiViews
Order deny,allow
Deny from all
Allow from 192.168.1
</Directory>
<Directory /var/www/mydomain/69td>
Options Indexes FollowSymLinks MultiViews
Order deny,allow
Deny from all
Allow from 192.168.1 127.0.0.1 localhost
SCGIHandler on
SCGIServer 127.0.0.1:5000
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorDocument 404 /fourohfour.html
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin me@mydomain.co.uk
ServerName mydomain.co.uk
DocumentRoot /var/www/mydomain/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/mydomain/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/mydomain/44kg>
Order deny,allow
Deny from all
</Directory>
<Location /svn>
DAV svn
SVNParentPath /home/svn
SVNListParentPath on
AuthType Basic
AuthName "Excalibur SVN Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/QPR/qpr.pem
SSLCertificateKeyFile /etc/ssl/certs/QPR/ca.key
</VirtualHost>
#SquirrelMail
<VirtualHost *:443>
ServerName webmail.mydomain.co.uk
DocumentRoot /usr/share/squirrelmail
SSLEngine on
SSLCertificateFile /etc/ssl/certs/QPR/qpr.pem
SSLCertificateKeyFile /etc/ssl/certs/QPR/ca.key
</VirtualHost>
В последний раз все работало до того, как я добавил веб-почту, но ее отключение не возвращает SVN. На самом деле мне не удалось увидеть страницу перенаправления - у меня было достаточно времени, чтобы определить, что это перенаправление 302, прежде чем оно произошло, и я не смог воспроизвести его. Через браузер все мои репозитории доступны по адресу https://mydomain.co.uk/svn/(repository), но один и тот же URL-адрес в клиентах просто дает эту ошибку как в SVN CLI, так и в Dreamweaver:
Pegasus:Uni Gargravarr$ svn update
svn: access to '/svn/Uni' forbidden
Понял.
Я совершенно забыл, что недавно установил «уклонение от модификаций» в Apache. Отключение его мгновенно восстановило SVN. Оказывается, в Debian есть известная ошибка с уклонением от мода и mod-dav-svn. Точно по этому вопросу здесь:
Проблемы с apache svn server (403 запрещено)
По глупости, я тоже прочитал этот вопрос перед тем, как писать. Думаю, я пропустил последний пост.
TL; DR: Mod-evasive и Apache2 / SVN не ладят :)