CentOS 上的 Apache 是否可以位于其文档根目录树之外的 Subversion 存储库?

CentOS 上的 Apache 是否可以位于其文档根目录树之外的 Subversion 存储库?

如果是,怎么办?

这与问题 43805。如果 repo 已正确chmod安装但位于文档根目录树之外,Apache 会抱怨它无法访问formatrepo 根目录中的文件。如果 repo 位于文档根目录树中的某个位置,则一切正常。

答案1

这当然是可能的,我有一个与 David 类似的设置(我的是 Centos 的默认设置):

DocumentRoot /var/www/html/

我的文件中包含以下内容/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

  # Limit write permission to list of valid users.
  <LimitExcept GET PROPFIND OPTIONS REPORT>
     # Require SSL connection for password protection.
     # SSLRequireSSL

     AuthType Basic
     AuthName "Subversion Repository"
     AuthUserFile /etc/svn-auth-file
     Require valid-user
  </LimitExcept>
</Location>

您是否在强制执行 SELinux?您可能需要正确设置 /var/www/svn 位置中文件的上下文。

sestatus命令将显示您是否处于强制模式。您可以(暂时)使用setenforce 0从强制模式切换到宽容模式,然后重试以查看是否是该问题。

您希望格式文件的标签为system_u:object_r:httpd_sys_content_t:s0(用于ls -Z查看文件的 SELinux 标签)。您可以使用 来修复它restorecon -R /var/www/svn

有关 SELinux 的更多内容,请参阅Fedora SELinux 用户指南

答案2

这完全没问题。您可以使用 SVNPath 或 SVNParentPath 选项设置路径。您确实应该将这些选项放在文档根目录之外,因为它们不应该通过这种方式访问​​。

我们有:

DocumentRoot /var/www/svn/ 

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

相关内容