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

SVN возвращает 403 запрещено

Я выполнил эти шаги на своей новой виртуальной машине (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.