CentOS 5.8上的SVN服务器

时间:2012-07-22 14:57:51

标签: apache svn centos svn-server

我想在CentOS 5.8(CentOS 5.8版(最终版))上设置一个subversion服务器。我对CentOS只有一点经验。到目前为止,我只与SuSE和Ubuntu合作过。

我遇到的问题是,当我尝试通过http://domain.tld/svn访问我的SVN存储库时,我得到“禁止,您无权访问此服务器上的/ svn /。”。

以下是我的设置步骤:

yum install mod_dav_svn subversion

/etc/httpd/conf.d/subversion.conf的内容

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
</Location>

创建相关路径

mkdir -p /var/www/svn && cd /var/www/svn
svnadmin create repos
chown -R apache:apache repos
service httpd restart

我无法弄清楚,什么是错的......

CentOS 5.7上的其他消息来源表明这是一个额外的步骤:

chcon -R -t httpd_sys_content_t /var/www/svn/repos
chcon -R -t httpd_sys_rw_content_t /var/www/svn/repos

当我执行此操作时,我得到chcon: can't apply partial context to unlabeled file /var/www/svn/repos

所以我环顾四周,发现一个用户说,我应该用

chcon -h system_u:object_r:httpd_sys_content_t /var/www/svn/repos
chcon -R -h apache:object_r:httpd_sys_content_t /var/www/svn/repos/*

而不是

chcon -R -t httpd_sys_content_t /var/www/svn/repos

所以我为httpd_sys_rw_content_t添加了2行:

chcon -h system_u:object_r:httpd_sys_content_t /var/www/svn/repos
chcon -R -h apache:object_r:httpd_sys_content_t /var/www/svn/repos/*
chcon -h system_u:object_r:httpd_sys_rw_content_t /var/www/svn/repos
chcon -R -h apache:object_r:httpd_sys_rw_content_t /var/www/svn/repos/*

问题仍然存在......

service httpd restart

问题仍然存在......

修改

我还在subversion.conf中添加了身份验证规则:

<LimitExcept GET PROPFIND OPTIONS REPORT>
    AuthzSVNAccessFile /etc/subversion/svn-access
    # Require SSL connection for password protection.
    # SSLRequireSSL

    AuthType Basic
    AuthName "Authorization Realm"
    AuthUserFile /etc/subversion/svn-passwd
    Require valid-user
</LimitExcept>

这些配置规则是从SuSE下的先前运行的安装中复制的。这些文件包含有效内容。问题仍然存在......

修改

我删除了<LimitExcept GET PROPFIND OPTIONS REPORT></LimitExcept>行,因此身份验证始终适用。当我现在从浏览器访问svn时,我得到一个HTTP-Basic-Auth窗口。输入现有和正确的凭据后,“禁止”消息再次出现。问题仍然存在......

修改

我终于让它运行了。我已通过SVNPath /var/www/svn/repos而不是SVNParentPath /var/www/svn设置了存储库路径。现在一切都很好......

2 个答案:

答案 0 :(得分:1)

您必须指示Apache执行身份验证(以便Subversion允许用户使用规则

在您的位置向您<Location>指令添加喜欢这个内容:

SSLRequireSSL

AuthType Basic
AuthPAM_Enabled on 
AuthName "Subversion"
AuthUserFile /etc/shadow
Require valid-user

此示例使用PAM,但还有许多其他可能性:请参阅Apache httpd手册

答案 1 :(得分:0)

试试这个:

<Location /svn>
    DAV svn
    SVNPath /var/www/svn
</Location>