Я следил заэто руководство по установке svnи когда я пытаюсь получить доступ к своему тестовому репозиторию, перейдя по адресу http://localhost/repos
, я успешно прохожу аутентификацию, но затем получаю это:
"Forbidden You don't have permission to access /repos on this server"
Вот мой файл subversion.conf:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /repos>
DAV svn
SVNParentPath /var/www/svn/repos
#
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /etc/svn-auth-conf
Require valid-user
# </LimitExcept>
</Location>
Мой путь - /var/www/svn/repos и вот мои права доступа
[root@localhost svn]# ls -la repos/
total 32
drwxr-xr-x. 6 apache apache 4096 Aug 24 11:42 .
drwxr-xr-x. 3 root root 4096 Aug 24 11:42 ..
drwxr-xr-x. 2 apache apache 4096 Aug 24 13:50 conf
drwxr-sr-x. 6 apache apache 4096 Aug 24 11:42 db
-rwxr-xr-x. 1 apache apache 2 Aug 24 11:42 format
drwxr-xr-x. 2 apache apache 4096 Aug 24 11:42 hooks
drwxr-xr-x. 2 apache apache 4096 Aug 24 11:42 locks
-rwxr-xr-x. 1 apache apache 229 Aug 24 11:42 README.txt
Если я перехожу в localhost/repos/README.TXT, я получаю это сообщение.
<D:error><C:error/><m:human-readable errcode="20">
Could not open the requested SVN filesystem
</m:human-readable></D:error>
Любое другое имя файла даст errcode ="2"
вместо этого.
selinux настроен на разрешающий режим, я прекрасно вижу файл localhost/index.html, расположенный по адресу var/www/html/index.html.
Я прочитал несколько десятков сообщений на форуме с похожими проблемами, но безрезультатно.
Любые идеи были бы хорошы!
ПРАВКА 1:
Я отредактировал файл subversion.conf, изменив SVNParentPath /var/www/svn/repos
его на , SVNParentPath /var/www/svn
но, похоже, это не дало никакого эффекта.
ПРАВКА 2:
brain99 справился. Изменение на Location />
решило проблему, и теперь я получаюrepos - Revision 0: /
Powered by Subversion version 1.6.11 (r934486).
решение1
Похоже, вы путаете директивы SVNPath и SVNParentPath.
Из того, что вы постите, похоже, что /var/www/svn/repos
содержит один репозиторий. В этом случае используйте
SVNPath /var/www/svn/repos
Только если у вас есть несколько репозиториев, вам следует использовать SVNParentPath. Каждый отдельный репозиторий должен быть расположен в подпапке каталога, который вы здесь настраиваете.
Поэтому либо укажите родительский каталог:
SVNParentPath /var/www/svn
Или оставьте конфигурацию как есть и переместите текущий репозиторий в подкаталог, например /var/www/svn/repos/myRepo
Для получения дополнительной информации об использовании mod_dav_svn проверьтеРаздел книги SVN на mod_dav_svn
решение2
Сначала проверьте, существует ли каталог SVNParentPath /var/www/svn/repos. Затем проверьте, есть ли подкаталоги? должны быть директории репозиториев с его собственными базами данных. Если каталог пуст или не имеет подкаталогов, создайте любой репозиторий с помощью команды svnadmin (вызовите manual). После создания проблема все еще существует? Затем закомментируйте все директивы AUTH* и require и перезапустите apache. Доступ будет анонимным, но вы проверите, есть ли проблема с авторизацией. Когда доступ возможен, проблема в авторизации. Вы должны настроить это. Вы должны прочитать man apache и узнать, как управлять AuthUserFile /etc/svn-auth-conf для базовой авторизации. Когда проблема (с закомментированной auth) все еще существует, проблема в правах доступа к файлу. Настройте доступ на чтение и запись для имени пользователя, используемого сервером apache. ps auxww сообщит вам, что это за пользователь. Номер группы вы получите из файла /etc/passwd. Имя группы вы получите из файла /etc/group. После этого, когда вы сможете извлекать/обновлять и фиксировать, вы сможете решить проблемы с авторизацией. Существует множество рецептов. Я ввел в Google запрос «svn create my first repository» и получил множество ответов. Первый пример: http://queens.db.toronto.edu/~nilesh/linux/subversion-howto/ Попробуй это :)
Кстати, CentOS — это дистрибутив Linux, похожий на RedHat. Вы можете перезапустить Apache с помощью команды /etc/init.d/httpd start/stop. Посмотрите, что пишется в файлы /etc/apache или /etc/httpd (в зависимости от дистрибутива Linux и конфигурации Apache по умолчанию).
решение3
попробуйте эти параметры: SVNListParentPath on