过去几天,我一直在尝试在我的Ubuntu 10.04服务器(Natty Narwhal Server)上设置Subversion SVN服务器。我遵循了许多不同的教程。我在官方文档中查看过,但我无法让SVN服务器与龟一起工作。
我上次尝试时做了最简单的设置: - sudo apt-get install subversion libapache2-svn - 设置一个仓库('svnadmin create / path / to / repo') - 配置apache2 virtal hosts文件
<Location /svn>
DAV svn
SVNParentPath /path/to/repo
SVNListParentPath on
</Location>
我没有在系统上设置任何帐户,我没有设置任何apache2授权,我还没有为该主机设置SSL。我试着设置这些东西,但结果同样的问题。我也尝试过玩游戏。
现在发生了什么: 设置上面的简单配置后,我可以连接到主机本身的repo(文件:///),我可以提交en可以checkout。我也可以用firefox和chrome浏览回购。
编辑我正在使用SSH在我自己的局域网中的机器上安装subversion。我在笔记本电脑上使用路由器(192.168.1.100)上的IP进行了测试。这应该取消连接/前端麻烦,我叮叮当当。
但我无法使用Tortoise或Subclipse等工具浏览回购。 为什么在互联网浏览器和svn工具中浏览回购有什么不同? 我可以做些什么来使我的SVN在svn工具中工作?
编辑2 在Lazy Badger的建议之后,我尝试使用http协议提交svn机器并得到一个更有趣的错误: svn:服务器发送意外返回值(403 Forbidden)以响应OPTIONS请求“http://192.168.1.100/svn/testrepo”
编辑3 我在apache2的日志文件中找到以下行:
[Sun Jan 01 14:41:45 2012] [错误] [client 192.168.1.1](20014)内部错误:无法打开文件'/ mnt / webserver / svn / testrepo / format':没有这样的文件或目录
[Sun Jan 01 14:41:45 2012] [error] [client 192.168.1.1]无法获取资源信息。 [500,#0]
[Sun Jan 01 14:41:45 2012] [错误] [client 192.168.1.1]无法打开请求的SVN文件系统[500,#2]
[Sun Jan 01 14:41:45 2012] [错误] [client 192.168.1.1]无法打开请求的SVN文件系统[500,#2]
和
[Mon Jan 02 07:20:40 2012] [错误] [client 192.168.1.109]无法获取资源信息。 [301,#0]
[Mon Jan 02 07:20:40 2012] [error] [client 192.168.1.109]对集合的请求必须在URI上有一个尾部斜杠。 [301,#0]
将Subversion SVN更新为版本1.7.2
通过使用以下线程,我已成功将我的Subversion SVN更新为1.7.2版: http://ubuntuforums.org/showthread.php?t=1876156
Subversion服务器返回版本1.7.2
libapache2-svn还返回版本1.7.2
但它仍然有同样的问题:(来自apache2 access.log)url和ip被编辑。
84.198.xxx.xxx - - [03 / Jan / 2012:16:47:10 +0100]“GET / svn / testrepo / HTTP / 1.1”200 551“http://link.hidden.by.author:8080/svn/”“Mozilla /5.0(Windows NT 6.1; WOW64; rv:8.0)Gecko / 20 $
127.0.0.1 - - [03 / Jan / 2012:16:47:29 +0100]“OPTIONS / svn / testrepo HTTP / 1.1”403 504“ - ”“SVN / 1.7.2 neon / 0.29 0.5"
84.198.xxx.xxx - - [03 / Jan / 2012:16:52:49 +0100]“OPTIONS / svn / testrepo HTTP / 1.1”403 510“ - ”“SVN / 1.7.2 / TortoiseSVN-1.7.3.22386 neon / 0.29.6“
我自己没有更改任何文件。仍然有一个我缺少的配置......
我通过禁用apache2 RewriteEngine解决了问题
总结一下这个解决方案:
我将Subversion SVN更新为1.7.2版本,并将libapache2-svn模块更新。
我以root身份创建了一个repo
我向www-data表示了这个回复:www-data(apache用户和组)
您还可以创建新用户和组(例如:svn),但需要将apache2用户(www-data)添加到该svn组以使webDAV正常工作。
我已将组权限设置为全部(chmod 775)
我已设置SSL并将此块添加到apache中的虚拟主机文件
的/ etc / apache2的/ /默认启用SSL站点-:
<Location /svn>
DAV svn
SVNParentPath /mnt/webserver/svn
SVNListParentPath on
AuthType Basic
AuthName "Narwhal SVN"
AuthUserFile /etc/apache2/svn_passwd
RewriteEngine off
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
我在https://serverfault.com/questions/20169/webdav-on-centos-getting-403-error-when-attempt-to-upload
找到了这个提示谢谢大家,特别是Lazy Badger,感谢您的帮助。
编辑解决方案:在发布上述解决方案后,我遇到了一个新问题。我设法在几分钟内解决了。
如果在尝试执行POST命令时收到有关无效XML格式的错误,则可能需要在dav_svn.conf或apache2虚拟主机文件中进行设置。只需将其添加到指令:
http://svnbook.red-bean.com/en/1.7/svn.ref.mod_dav_svn.conf.html
SVNAdvertiseV2Protocol On|Off New to Subversion 1.7, this toggles whether mod_dav_svn advertises its support for the new version of its HTTP protocol also introduced in that version. Most admins will not wish to use this directive (which is On by default), choosing instead to enjoy the performance benefits that the new protocol offers. However, whena configuring a server as a write-through proxy to another server which does not support the new protocol, set this directive's value to Off.
答案 0 :(得分:0)
当您将浏览器指向http://servername/svn时,您看到了什么?
有一件事,SVNParentPath应该指向您的存储库的父文件夹,例如/ path / to / repo
然后创建像
这样的存储库svnadmin create /path/to/repo/repo1
svnadmin create /path/to/repo/repo2
现在,您可以访问网址
http://servername/svn/repo1 http://服务器/ SVN / repo2
只需要做一件事,确保apache正在监听0.0.0.0以使用HTTP从主机外部进行访问,并且没有运行iptables(或为其创建规则)。
感谢。
答案 1 :(得分:0)
file:///是纯本地访问方法 - 没有任何安全检查,也没有使用Apache DAV。
尝试svn co http://...
并检查结果
>svn co http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk/
A trunk\Hello.en.txt
A trunk\Hello.fr.txt
A trunk\Hello.de.txt
U trunk
Checked out revision 32.
我使用匿名读取访问权限的工作test-repo结帐