![SVN 与 Apache 2.2 错误:“禁止您无权访问此服务器上的 /repos”](https://linux22.com/image/593990/SVN%20%E4%B8%8E%20Apache%202.2%20%E9%94%99%E8%AF%AF%EF%BC%9A%E2%80%9C%E7%A6%81%E6%AD%A2%E6%82%A8%E6%97%A0%E6%9D%83%E8%AE%BF%E9%97%AE%E6%AD%A4%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%20%2Frepos%E2%80%9D.png)
我一直在关注本 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 设置为宽容,我可以正常看到位于 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).
答案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 命令(调用手册)创建任意存储库。创建后问题仍然存在?然后注释掉所有指令 AUTH* ,然后重新请求并重新启动 apache。访问将是匿名的,但您将检查授权是否存在问题。当可以访问时,授权就是问题。您必须对其进行配置。您必须阅读 apache man 并学习如何管理 AuthUserFile /etc/svn-auth-conf 以进行基本授权。如果问题(注释掉 auth)仍然存在,则问题出在文件访问权限上。配置对 apache 服务器使用的用户名的读/写访问权限。ps auxww 告诉您该用户是什么。您将从 /etc/passwd 文件中获得组号。您将从 /etc/group 文件中获得组名。在此之后,当您能够签出/更新并提交时,您可以解决授权问题。有很多方法。我在谷歌上输入问题“svn 创建我的第一个存储库”,得到了很多答案。例如第一个是: http://queens.db.toronto.edu/~nilesh/linux/subversion-howto/ 试试这个:)
顺便说一句。centos 是类似 redhat 的 Linux 发行版。您可以通过 /etc/init.d/httpd start/stop 重新启动 apache。查看文件 /etc/apache 或 /etc/httpd 中写入了什么(取决于 Linux 发行版和默认 apache 配置)。
答案3
尝试这个选项:SVNListParentPath on