使用Active Directory身份validation的Windows上的SvnServe

现在我的公司正在使用networking共享来与SVN存储库进行通信。 这真的很慢,所以我想切换到SVNSERVE。

我公司select去文件系统路由的主要原因是因为它使我们现有的活动目录authentication系统更容易安全。

从我读过的,只要使用Sasl库 ,就可以使用带有活动目录的SvnServe 。 我只是想知道是否有其他人在这样做,可以给一些configuration指针,因为它似乎没有logging在任何地方。

谢谢

编辑

我们有一个快速的服务器svn,但不幸的是用于其他企业文件共享和服务。

我被告知,HTTP协议不会比SMB:file://更快。 有没有人有任何这方面的文件。 我认为一个真正的客户端服务器模型会performance得更好。 我们有大约13个开发人员和一个构build服务器全天提交和更新。

    去死简单的路线,只需安装Visual SVN服务器。

    http://www.visualsvn.com/server/

    将其安装在连接到Active Directory的服务器上。 您现在拥有带有AD身份validation的http(s)上的SVN。 使用随附的方便的Dandy MMC工具pipe理权限。 从0到部署约15分钟。

    请注意,对于SVN存储库,不build议使用file://访问权限,对于pipe理工具则更多。 文件访问的问题在于,在中间没有服务器,以确保所有写入都正确写入。 所以尽快停止使用它。

    Svnserve(或者Apache)要好得多,但是你会遇到相同的性能问题 – 它不会变得更好,因为你的networking使用http或svn协议而不是smb。 如果你今天的访问速度很慢,除非你对networking或文件系统做任何事情(或者其他任何让它变慢的),否则它还是会变慢的。

    但是,迁移到Apache或Svnserve本身是值得的。

    svnserve和sasl库有一个问题,最近在svn邮件列表中提到过。 问题是,svn协议不允许纯文本,但纯文本auth只允许由saslauthd。 最终结果 – 它只是不起作用 ,是一个已知的问题 。

    它不是所有坏,但如果你在Windows上运行,只需安装VisualSVN服务器。 它是一个顶级的打包工具,为您提供了一个Apache安装,作为一个Windows服务运行,包含pipe理单元,以及在安装过程中只需单击一个单选button即可进行活动目录validation。 你甚至可以将acls放在回购目录或文件中。

    如果没有,我仍然推荐Apache,因为它的configuration更好地logging下来,并且它支持LDAP auth(与AD协同工作)。 有很多博客文章描述如何做到这一点。

    http而不是svn的性能将会变慢,但是我怀疑你会注意到它,除非你并排安装和checkout / commit一个大的目录。 尝试一下 – 您可以同时使用Svnserve服务Apache服务的回购。 (尽pipe在实施之前我会validation这一说法)。

    对不起,没有Windowsauthentication的Svnserve。 不过,我用Svnserve和SASL手动pipe理账户,因为在这里使用SVN的实际编程人员数量非常less。

    事实上,你愿意冒着Windows文件共享的风险来做SVN,这表明你一定处于绝望的境地,所以我推荐使用Apache而不是Apache,而在那里你可以获得Windows身份validation。 这是使用SSL而不是SVN,但它足够接近。 这里你去:

    1. closures文件共享。
    2. 安装CollabNet Subversion服务器(免费)。 这包括Apache,从现在开始您将如何访问SVN。
    3. 在Apache中安装mod_auth_sspi ,并将其设置在CollabNet Subversion服务器附带的httpd.conf中。

    我同时运行HTTPS和SVN,但个人更喜欢手动pipe理SASL帐户,所以我可以获得SVN协议的额外速度,这比HTTPS快一点。

    简而言之,将SVN仓库从networking共享切换到SVNServe或Apache / WebDAV不会改善客户的性能。 如果有的话,客户会看到更糟糕的performance。

    当然,上面假定你打算继续在当前托pipe的服务器上运行版本库。 如果您将SVN存储库移到更强大的服务器上,您可能会看到性能的提高。

    你有没有检查当前的服务器是否过载? 它也服务于很多非SVN客户端/文件吗? 如果是这样的话,那么通过将SVN存储库移动到专用服务器上,您可能会看到性能的提高。 如果您在一台服务器上有多个存储库,请考虑将其拆分到多台服务器上。 (如果需要,您可以将现有的单个存储库拆分为多个存储库,以帮助完成此操作。)

    真的,但是,你需要弄清楚为什么现有的performance很差。 首先分析当前服务器上的负载。 性能通常受限于某些系统资源的容量,主要是RAM,CPU,磁盘I / O速率,networkingI / O容量。 尝试回答这些问题:

    • 你的CPU挂100%,还是有很多空闲周期? CPU使用率可能会有所不同,但是如果平均达到或接近100%,则可能需要更多/更快的CPU。

    • 你有多less可用的RAM(占总数的百分比)? 你使用了多less交换空间(再次,占总数的百分比)? 如果您的可用RAM小于10%,则可能会耗尽内存,这会强制系统使用磁盘交换。 这会让所有的东西都慢下来,但是这对你来说更糟,因为交换与SVN活动竞争有限的磁盘I / O。

    • 你每秒钟从磁盘移动多less数据(批量传输)? 你的磁盘每秒有多less次search? 你的磁盘队列多久? 您的服务器的磁盘应评为批量数据传输和寻求价格。 (如果没有,您可以自己对它们进行基准testing。)如果您的平均传输率和search速率达到或接近最大值,则需要使用更快的磁盘。 如果您使用的是RAID,请以提高性能的方式添加更多磁盘。 如果您不使用RAID,请开始使用它。

    • 每秒要传输多less个networking数据到服务器? 如果该速率接近额定最大值(例如,10Mbit / s,100Mbit / s,1Gbit / s)的80-90%,则可能达到了networking链路的限制。 (请注意,价格更便宜的网卡或坏的驱动程序的最大值可能会大大降低 – 请确保您的链接基准确定。)尝试升级到更快的链接,或查看网卡驱动程序是否支持绑定(也称为“链接聚合”或“通道绑定” )以提高性能。

    给出针对您的环境的这些问题的答案,请尝试增加任何有限资源的容量。 这可能意味着服务器升级或更换,或者可能是networking升级。

    这不完全一样,但我有一个Linux服务器上的SVN回购。 服务器没有运行svnserve,但允许用户通过ssh使用svn。 由于Linux服务器是AD成员服务器,用户也来自AD,所以这是一个非常简单和安全的解决scheme。