Я выполнил эти шаги на своей новой виртуальной машине (Debian 6)
https://stackoverflow.com/questions/60736/how-to-setup-a-subversion-svn-server-on-gnu-linux-ubuntu
я только что понял где NameVirtualHost
был и настроен на NameVirtualHost *:443
но это не помогло.
моя полная конфигурация svnserver:
#<VirtualHost *:80>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</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>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Когда я пытаюсь зайти на сайт вне виртуальной машины через браузер, я получаю 403 Forbidden.
мой dav_svn.conf:
<Location /svn>
# Uncomment this to enable the repository
DAV svn
SVNParentPath /var/svn/svn-repos
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
# To enable authorization via mod_authz_svn
#AuthzSVNAccessFile /etc/apache2/dav_svn.authz
# The following three lines allow anonymous read, but make
# committers authenticate themselves. It requires the 'authz_user'
# module (enable it with 'a2enmod').
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
#Added
SVNListParentPath On
</Location>
должен разрешать внешним пользователям доступ к svn (как указано в руководстве).
Так почему я получаю ошибку 403?
журнал ошибок apache:
[Fri Aug 10 17:51:11 2012] [error] [client my.main.pc.ip] Could not fetch resource information. [403, #0]
[Fri Aug 10 17:51:11 2012] [error] [client my.main.pc.ip] (2)No such file or directory: The URI does not contain the name of a repository. [403, #190001]
я добавил SVNListParentPath On
в мой блок местоположения и получить в моем браузере следующий результат:
<D:error><C:error/><m:human-readable errcode="2">
Can't open directory '/var/svn/svn-repos': No such file or directory
</m:human-readable></D:error>
С помощью SVNPath
и вместо этого используя SVNParentPath
решил проблему. Но я хотел использовать более одного репозитория.
любая помощь приветствуется!
Похоже, вы настроили SVNParentPath
в апаче Location
но не предоставил имя репозитория в клиенте. Например.:
<Location /svn>
SVNParentPath /my/repos
# ...
</Location>
доступ через URL-адрес клиента: http://server/svn
В /svn
URL-адрес - это не репозиторий, а родительский путь, вам необходимо svnadmin create /my/repos/repo1
а затем доступ http://server/svn/repo1
Если вы включите директиву родительского пути списка в Location
block вы можете перечислить суб-репозитории:
<Location /svn>
SVNParentPath /my/repos
SVNListParentPath On
# ...
</Location>
Что делает ваш <Location /svn>
блок похож? У него должен быть оператор SVNPath или SVNParentPath, указывающий на ваш репозиторий. В этом же блоке должен быть <LimitExcept>
блок.
Принадлежит ли / var / svn / $ REPOS (или любой другой путь SVN (Parent)) www-data? Он должен быть или, по крайней мере, должен быть доступен для чтения и записи с помощью www-data.