我一直在关注这个 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 设置为 permissive,我可以看到位于 var/www/html/index.html 的 localhost/index.html 文件就好了。
我已经阅读了一些具有类似问题的 fozen 论坛帖子,但无济于事。
任何想法,将不胜感激!
编辑 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).
看来您混淆了 SVNPath 和 SVNParentPath 指令。
从您发布的内容来看,它似乎
/var/www/svn/repos
包含一个存储库。在这种情况下,使用只有当你有多个存储库时,你才应该使用 SVNParentPath。然后,每个单独的存储库都应位于您在此处配置的目录的子文件夹中。
所以要么将它设置为父目录:
或者保持配置不变并将当前存储库移动到子目录,例如 /var/www/svn/repos/myRepo
有关 mod_dav_svn 使用的更多信息,请查看有关 mod_dav_svn 的 SVN Book 部分
首先,检查目录 SVNParentPath /var/www/svn/repos 是否存在。接下来,有没有子目录?应该有他自己的数据库的存储库目录。如果目录为空或没有子目录,请使用 svnadmin 命令(调用手册)创建任何存储库。创建后问题还存在吗?然后注释掉所有指令 AUTH* ,并要求并重新启动 apache。访问将是匿名的,但您会检查授权是否有问题。当可以访问时,授权是问题。你必须配置它。您必须阅读 apache man 并学习如何管理 AuthUserFile /etc/svn-auth-conf 以获得基本授权。当问题(注释掉 auth)仍然存在时,问题出在文件访问权限上。配置对 apache 服务器使用的用户名的读/写访问权限。ps auxww 告诉你那个用户是什么。您将从 /etc/passwd 文件中获得的组号。您将从 /etc/group 文件中获得的组名。在此之后,当您可以签出/更新并提交时,您可以通过授权解决问题。有很多食谱。我将问题“svn create my first repository”放入谷歌,我得到了很多答案。第一个是例如: http://queens.db.toronto.edu/~nilesh/linux/subversion-howto/ 试试这个 :)
顺便提一句。centos 是类似于 redhat 的 linux 发行版。您可以通过 /etc/init.d/httpd start/stop 重新启动 apache。查看写入文件 /etc/apache 或 /etc/httpd 的内容(取决于 linux distributio 和默认的 apache 配置)。
试试这个选项: SVNListParentPath on