【发布时间】:2011-12-15 17:28:32
【问题描述】:
好的,今天早上由于某种原因,我无法连接到 Wordpress SVN 存储库并执行基本的 svn 命令(例如checkout、update)。
这是一个正在发生的事情的例子:
$ svn co http://svn.automattic.com/wordpress/tags/3.3/
# Adds a bunch of files...
svn: warning: Error handling externals definition for '3.3/wp-content/plugins/akismet':
svn: warning: PROPFIND of '/!svn/vcc/default': could not connect to server (http://plugins.svn.wordpress.org)
Checked out revision 19597.
$ cd 3.3
$ svn update
svn: OPTIONS of 'http://svn.automattic.com/wordpress/tags/3.3': could not connect to server (http://svn.automattic.com)
然而,当我在我拥有的开发服务器(Linode VPS)上执行这些相同的命令时,它工作正常。
我在谷歌上搜索了很多,发现了这样的页面:
- http://vsingleton.blogspot.com/2008/04/svn-propfind-request-failed-on.html
- http://wordpress.org/support/topic/cant-connect-to-the-pluginssvnwordpress-server
很多这些文章都说明了一些影响,它是您的代理服务器。好吧,我不在代理服务器后面:
http://whatismyipaddress.com/proxy-check
Proxy server not detected.
IP 24.21.xxxx.xxx
rDNS FALSE
WIMIA Test FALSE
TOR Test FALSE
Loc Test FALSE
Header Test FALSE
DNSBL Test FALSE
只是一个普通的老式康卡斯特家庭互联网连接。
另外,我可以通过浏览器浏览 wordpress SVN 存储库。
无论如何,我在这里有点死胡同,我想我想知道是否有人对如何解决问题或解决问题有任何建议?我尝试在该开发服务器上运行的 Apache 安装上设置转发代理服务器,然后更新我的 ~/.subversion/server 文件,但这不起作用或我配置错误。
好吧,如果有人有任何绝妙的想法或解释,我很想听听他们......
更新
我让一位同事在他的家庭网络上对此进行了测试——他也使用 Comcast。他和我一样得到了相同的错误。所以它似乎是一些特定于 Wordpress svn 存储库的康卡斯特相关问题。我可以通过 http(例如来自 Google Code)签出其他公共存储库。
我进行了一系列测试,但在我和存储库之间找不到任何隐藏的代理或缓存服务器。
我确实按照 Lazy Badgers 的建议运行了 traceroute,这就是我得到的:
$ traceroute svn.automattic.com
traceroute to svn.automattic.com (72.233.56.196), 64 hops max, 52 byte packets
1 192.168.1.1 (192.168.1.1) 0.659 ms 0.292 ms 0.185 ms
2 * * *
3 te-5-7-ur01.hollywood.or.bverton.comcast.net (68.85.150.225) 8.792 ms 8.309 ms 9.054 ms
4 xe-3-1-0-0-ar03.beaverton.or.bverton.comcast.net (68.87.216.33) 14.354 ms 24.859 ms 8.753 ms
5 pos-3-8-0-0-cr01.sacramento.ca.ibone.comcast.net (68.86.95.117) 21.869 ms
pos-3-1-0-0-cr01.sacramento.ca.ibone.comcast.net (68.86.95.113) 21.791 ms
pos-3-0-0-0-cr01.sacramento.ca.ibone.comcast.net (68.86.95.109) 22.983 ms
6 pos-0-7-0-0-cr01.sanjose.ca.ibone.comcast.net (68.86.85.46) 23.682 ms 25.043 ms 24.675 ms
7 xe-10-3-0.edge1.sanjose1.level3.net (4.71.118.5) 61.048 ms 23.986 ms 24.221 ms
8 vlan80.csw3.sanjose1.level3.net (4.69.152.190) 25.257 ms 25.648 ms
vlan90.csw4.sanjose1.level3.net (4.69.152.254) 24.310 ms
9 ae-82-82.ebr2.sanjose1.level3.net (4.69.153.25) 24.870 ms
ae-92-92.ebr2.sanjose1.level3.net (4.69.153.29) 25.371 ms
ae-91-91.ebr1.sanjose1.level3.net (4.69.153.13) 24.744 ms
10 ae-34-34.ebr4.sanjose1.level3.net (4.69.153.34) 36.011 ms 25.975 ms 36.053 ms
11 ae-5-5.ebr2.sanjose5.level3.net (4.69.148.141) 25.236 ms 25.307 ms 25.305 ms
12 ae-6-6.ebr2.losangeles1.level3.net (4.69.148.201) 31.299 ms 34.076 ms 33.401 ms
13 ae-3-3.ebr3.dallas1.level3.net (4.69.132.78) 59.012 ms 58.604 ms 60.576 ms
14 ae-83-83.csw3.dallas1.level3.net (4.69.151.157) 59.708 ms 65.724 ms
ae-73-73.csw2.dallas1.level3.net (4.69.151.145) 60.383 ms
15 ae-42-90.car2.dallas1.level3.net (4.69.145.196) 60.636 ms
ae-22-70.car2.dallas1.level3.net (4.69.145.68) 59.572 ms 59.758 ms
16 databank-ho.car2.dallas1.level3.net (4.71.170.2) 58.711 ms 59.994 ms 60.561 ms
我不知道这是否不寻常。我在我的开发服务器上尝试了相同的操作,结果看起来非常相似,除了带有 * * * 的第 2 行。
我成功地在我的开发服务器上配置了一个转发代理,所以我现在已经拼凑了一个解决方案,但我仍然不太明白正在发生什么......
更新 2
在回答一个问题时,以下是我如何配置事物以暂时使用我的开发服务器作为代理。
首先,我将开发服务器上的 apache 配置为作为代理运行。确保这些指令位于 Apache 配置文件链中的某个位置(httpd.conf、vhosts.d 目录等):
Listen 8080
<VirtualHost _default_:8080>
ProxyRequests On
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx
</Proxy>
</VirtualHost>
这假设您在某处的开发服务器上安装了一个工作的 Apache(我绝对不会在生产服务器上使用它)并安装了 mod_proxy。端口 8080 是任意的。基本上对于不匹配的虚拟主机(即任何与您设置的其他主机不匹配的请求),它将打开代理并通过代理请求。将“xxx.xxx.xxx.xxx”改成自己的IP地址。
现在你必须在你的 subversion 配置文件中更改服务器设置。
在这个文件中:
~/.subversion/servers
找到这个部分:
[global]
# http-proxy-exceptions = *.exception.com, www.internal-site.org
# http-proxy-host = proxy1.some-domain-name.com
# http-proxy-port = 80
# http-proxy-username = defaultusername
# http-proxy-password = defaultpassword
# http-compression = no
# http-auth-types = basic;digest;negotiate
# No http-timeout, so just use the builtin default.
# No neon-debug-mask, so neon debugging is disabled.
# ssl-authority-files = /path/to/CAcert.pem;/path/to/CAcert2.pem
取消注释掉 http-proxy-host 和 http-proxy-port。对于主机,请使用您已映射到开发服务器的备用域名,或者您可能只使用您的服务器 IP。然后将端口设置为 8080 或您使用的任何端口。
这应该通过您刚刚设置的代理路由所有 subversion http 请求。它不影响 svn 或 svn+ssh 请求。
这是我的快速破解,您的里程可能会有所不同,这可能完全不安全或损坏等。
【问题讨论】:
-
ping-traceroute 到 plugins.svn.wordpress.org + svn.automattic.com 的结果?您是否尝试过手动从外部定义结帐?
-
@LazyBadger 我用 traceroute 更新了我的答案。我尝试从主存储库以及插件存储库中的各种插件签出。在我的本地机器上没有一个成功。
-
svn.automattic.com 的跟踪显示 4.71.170.2 作为端点,但它必须是另一个主机。您是否尝试过在外部定义的任何临时 URL 中结帐(if 跟踪正常)?
16 177 ms 177 ms 176 ms wordpress.org [72.233.56.196]和18 178 ms 178 ms 181 ms wordpress.org [72.233.56.170]是我的(似乎一样好)结果 -
@jsdalton 有同样的问题。有没有像你一样拼凑解决方案的提示?
-
@two7s_clash 我用我的快速破解代理解决方案更新了我的答案。这一直对我有用,而我正在等待看康卡斯特的发展......