4

我正在使用 WHM 和 CentOS 5 为我的客户运行一个专用服务器来分离帐户。我的一个客户要求我安装 subversion,并将存储库存储在 webroot 下。

  • repo 的真实文件夹将在“/home/theirfolder/svn”中
  • repo 将通过“svn.theirdomain.com”上的子域访问

我知道执行此操作的常规方法是在 Apache 中设置一个虚拟主机来处理重定向。问题是 WHM 似乎超越了整个虚拟托管过程,迫使我将更改烘焙到似乎对我不起作用的外部文件中。保留 webroot 下的文件夹时,我根本无法让虚拟主机识别该文件夹的路径。

我得到的最接近的是将 subversion 文件夹移动到 webroot 上,但即便如此,我使用身份验证的说明也没有遵循,所以从安全角度来看,这不是一个好的解决方案。在这个设置中,页面似乎是由 Apache 生成的,而不是由 Subversion 生成的。

这里的任何人都可以向我指出可以指导我完成此类设置的教程的方向,或者给我一个清晰的分步指南,说明我需要做什么?我已经尝试了很多东西,但没有什么能真正让我到达那里。我已经正确下载并安装了 Subversion 及其所有依赖项。

提前致谢!

4

2 回答 2

10

实现这一点的一种方法是使用WHM 的自定义包含文件之一,并以“常规方式”添加您的自定义<virtualhost>指令。这些文件中所做的更改将在 WHM 自动重建 Apache 配置文件后继续存在,而直接对/etc/httpd/conf/httpd.conf进行的任何更改可能不会。

included主 httpd.conf 在不同的点上有三个自定义包含文件。这些文件(如果运行 Apache 2.x)位于:

  • /usr/local/apache/conf/includes/pre_virtualhost_2.conf,包含在自动生成的<virtualhost>指令之前
  • /usr/local/apache/conf/includes/post_virtualhost_2.conf,包含在自动生成的<virtualhost>指令之后
  • /usr/local/apache/conf/includes/pre_main_2.conf,包含在 httpd.conf 的顶部

您可以直接编辑这些文件,也可以通过 WHM 管理面板(服务配置 -> Apache 配置,包含编辑器,在 WHM 11.30 上)。

当 WHM/cpanel 无法通过其他配置方法执行我想要的操作时,我使用 post_virtualhost_2.conf 为客户帐户设置了额外的虚拟主机。任何有效的 Apache 配置指令都可以放在文件中——它只是完整地包含在主 httpd.conf 中。

于 2011-08-23T02:09:00.273 回答
3

上面的说明不是您在每个帐户的基础上使用的。放置在 apache 中的任何内容都包含在服务器范围内。您可能希望使用 apache 包含来包含 mod dav 和 mod authz 共享对象。您可能已经设置好了,但这里有一些说明以防万一。在 WHM 中,转到 Service Configuration->Apache Configuration->Include Editor 将其放在 Pre Main Include 中:

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

接下来,您要创建一个 .conf 文件并将其放入

/usr/local/apache/conf/userdata/std/2/<user account name>/svn.conf

如果你想要 SSL 在

/usr/local/apache/conf/userdata/ssl/2/<user account name>/svn.conf

如果上面的目录不存在,那么您将需要创建它们。

文件将包含:

<IfModule mod_dav_svn.c>
<Location /svn>
DAV svn
SVNPath /home/<user account>/svn
AuthType Basic
AuthName "My Repo"
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>
</IfModule> 

用户名和密码可以设置为:

htpasswd -cm /etc/svn-auth-conf myusername

然后提交文件更改执行:

/scripts/ensure_vhost_includes --user=<user account>
/scripts/rebuildhttpdconf
/scripts/restartsrv_httpd

您应该能够浏览到

yourdomain.com/svn 

它会从

/home/<user account>/svn
于 2011-08-23T06:54:07.130 回答