带有VisualSVN Server的WebSVN,有人可以通过身份验证了吗?
我在Windows服务器上安装了VisualSVN服务器,并提供多个存储库。
由于VisualSVN服务器中内置的Web查看器是一种简约的Subversion浏览器,因此我想在我的存储库顶部安装WebSVN。
但是,问题在于我似乎无法使身份验证正常工作。理想情况下,我希望VisualSVN中指定的当前存储库身份验证可以与WebSVN一起使用,因此,尽管我看到了WebSVN中的所有存储库名称,但是如果没有正确的凭据,我实际上无法浏览到它们。
通过访问此Google查询上最顶部链接的缓存副本,我们可以看到到目前为止我发现的东西看起来很有希望。
(主要博客页面似乎已被破坏,我要指向的最顶层页面的域是the-wizzard.de)
在那里,我发现了一些我可以添加到WebSVN中的php文件之一的php函数。我在那里进行了修改,但是我成功完成的工作就是让WebSVN要求我输入用户名和密码,无论我输入什么内容,都不会让我进入。
不幸的是,php和apache在我看来主要是黑魔法。
那么,有没有人成功地将WebSVN与VisualSVN托管存储库集成在一起?
解决方案
回答
我正在使用VisualSVN Server,并且刚完成Trac的安装。我的目标是要获得一个更好的基于Web的存储库浏览器,而Trac绝对是我在Subversion上见过的更好的浏览器之一。转到http://www.visualsvn.com/server/trac/,安装过程非常简单。是的,Trac具有票证跟踪和Wiki系统,我们可能不需要这些系统,但是存储库和日志浏览器会为我出售。
现在,我发现可以通过简单地添加Trac来禁用Wiki和票证跟踪系统
[components] trac.ticket.* = disabled trac.wiki.* = disabled
到trac.ini配置文件的末尾。这会导致Wiki的起始页抛出一个错误,即找不到Wiki模块,因此我们必须在启动时通过再次编辑trac.ini来设置Trac以使用时间轴(日志视图)或者资源库浏览器打开在trac标题下:
默认的日志时间线
default_handler = TimelineModule
用于存储库浏览器(默认)
default_handler = BrowserModule
回答
我是我们提到的文章的作者。我发布的信息仅适用于在IIS上运行的WebSVN。据我了解,当我们在Apache上使用PHP时,该软件应该"正常运行",尽管我从未在该环境中进行过设置。我们是否尝试过进行一些" echo"调试(由于缺少更好的术语),以查看身份验证确切地失败了?
回答
我获得了与VisualSVN服务器一起使用的WebSVN身份验证,尽管我自己进行了许多黑客/试验错误定制。
这是我的操作方式:
- 如果尚未安装PHP,请下载zip文件并按照在线php手动安装说明进行操作,以手动安装PHP。我将PHP安装到C:\ PHP
- 将websvn文件夹解压缩到C:\ Program Files \ VisualSVN Server \ htdocs \
- 完成配置websvn目录的步骤,即将configdist.php重命名为config等。我的存储库位于C:\ SVNRepositories,因此要配置身份验证文件,我将config.php行设置为:$ config-> useAuthenticationFile('C:/ SVNRepositories / authz'); //全局访问文件
- 将以下内容添加到C:\ Program Files \ VisualSVN Server \ conf \ httpd-custom.conf中:
# For PHP 5 do something like this: LoadModule php5_module "c:/php/php5apache2_2.dll" AddType application/x-httpd-php .php # configure the path to php.ini PHPIniDir "C:/php" <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> <Location /websvn/> Options FollowSymLinks AuthType Basic AuthName "Subversion Repository" Require valid-user AuthUserFile "C:/SVNRepositories/htpasswd" AuthzSVNAccessFile "C:/SVNRepositories/authz" SVNListParentPath on SVNParentPath "C:/SVNRepositories/" </Location>
这对我有用,并且websvn将仅显示为给定用户授权的那些目录。请注意,为了使其正常工作,我们必须向所有人提供"主级别"访问权限,然后为某些用户禁用对某些子目录的访问。例如,我有一个用户没有主级别访问权限,但确实具有对子级别的访问权限。不幸的是,即使该人直接链接到filedetails.php以获取他有权查看的文件,也无法在websvn中看到任何内容。就我而言,这并不重要,因为我无论如何都不希望他访问websvn,但这是我们要知道的。
另外,这会将服务器设置为ssl连接,因此,一旦设置好,地址将为和https://地址,而不是常规的http://。
回答
我将其与Windows身份验证一起使用(实际上是AuthType VisualSVN)技巧是注释掉svn auth并将其替换为在主配置文件中找到的相同种类的auth文本。感谢Anthony Johnson提出所有其他细节。
# For PHP 5 do something like this: LoadModule php5_module "F:/wamp/bin/php/php5.3.0/php5apache2_2.dll" AddType application/x-httpd-php .php # configure the path to php.ini PHPIniDir "f:/wamp/bin/php/php5.3.0/" <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> #Alias /websvn/ "F:/Program Files/VisualSVN Server/htdocs/websvn-2.3.1/" <Location /websvn-2.3.1/> Options FollowSymLinks AuthName "Subversion Repositories" AuthType VisualSVN AuthzVisualSVNAccessFile "F:/Repositories/authz-windows" AuthnVisualSVNBasic on AuthnVisualSVNIntegrated off AuthnVisualSVNUPN Off Require valid-user SVNListParentPath on SVNParentPath "f:/Repositories/" </Location>