无法连接到 Wordpress SVN 服务器来更新存储库

问题描述:

好的,今天早上由于某种原因,我无法连接到 Wordpress SVN 存储库并执行基本的 svn 命令(例如 checkoutupdate).

Okay, for some reason this morning, I am unable to connect to the Wordpress SVN repository and execute basic svn commands (e.g. checkout, update).

以下是正在发生的事情的示例:

Here's an example of what's happening:

$ 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)上执行这些相同的命令时,它工作正常.

Yet, when I perform these same commands on a development server I have (a Linode VPS) it works fine.

我在谷歌上搜索了很多,发现了如下页面:

I've google around about this quite a bit, and found pages like these:

很多这些文章都说了一些影响,这是您的代理服务器.好吧,我不是在代理服务器后面:

A lot of these articles say something to effect of, it's your proxy server. Well, I'm not behind a proxy 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

只是一个普通的旧康卡斯特家庭互联网连接.

Just a regular old Comcast home internet connection.

另外,我可以通过浏览器很好地浏览 wordpress SVN 存储库.

Also, I can browse the wordpress SVN repository just fine via my browser.

无论如何,我在这里陷入了死胡同,我想我想知道是否有人对如何解决问题或解决问题有任何建议?我尝试在该开发服务器上运行的 Apache 安装上设置转发代理服务器,然后更新我的 ~/.subversion/server 文件,但这不起作用或我配置了错误.

Anyhow, I'm sort of at a dead end here, and I guess I'm wondering if anyone has any suggestions as to how to either solve the issue or work around it? I tried setting up an forward proxy server on the Apache installation I have running on that dev server and then updating my ~/.subversion/server file, but that didn't work or I configured something wrong.

好吧,如果有人有任何绝妙的想法或解释,我很想听听...

Well, if anyone has any brilliant ideas or explanations, I'd love to hear them...

更新

我有一位同事在他的家庭连接上对此进行了测试 - 他也使用 Comcast.他和我一样犯了相同的错误.因此,这似乎是特定于 Wordpress svn 存储库的一些与 Comcast 相关的问题.我能够通过 http(例如来自 Google Code)检查其他公共存储库.

I had a co-worker test this out on his home connection -- he uses Comcast as well. He got the same error as I did. So it appears to be some Comcast-related issue specific to the Wordpress svn repository. I was able to checkout other public repositories via http (e.g. from Google Code) just fine.

我运行了一系列测试,但在我和存储库之间找不到任何隐藏的代理或缓存服务器.

I ran a series of tests and I could not find any hidden proxies or cache servers between me and the repository.

我确实按照 Lazy Badgers 的建议运行了 traceroute,结果如下:

I did run traceroute per Lazy Badgers suggestion, and here's what I got:

$ 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 行带有 * * *.

I don't know if that's unusual or anything. I tried the same on my dev sever and the result looked mostly similar, save for line 2 with the * * *.

我在我的开发服务器上成功配置了一个转发代理,所以我现在已经破解了一个解决方案,但我仍然不太明白发生了什么......

I successfully configured a forward proxy on my dev server so I've hacked together a solution for now, but I still don't quite understand what is afoot...

更新 2

在回答一个问题时,以下是我如何配置事物以暂时使用我的开发服务器作为代理.

In response to a question, here's how I configured things to use my dev server as a proxy for the time being.

首先,我在我的开发服务器上配置了 apache 作为代理运行.确保这些指令位于 Apache 配置文件链(httpd.conf、vhosts.d 目录等)中的某个位置:

First, I configured apache on my dev server to run as a proxy. Make sure these directives are somewhere in your Apache configuration file chain (httpd.conf, vhosts.d directory, etc.):

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>

这假设您在安装了 mod_proxy 的某个开发服务器上设置了一个工作 Apache(我绝对不会在生产服务器上使用它).端口 8080 是任意的.基本上,对于不匹配的虚拟主机(即与您设置的其他主机不匹配的任何请求),它将打开代理并代理请求.将xxx.xxx.xxx.xxx"更改为您自己的IP地址.

This assumes you have a working Apache set up on a development server somewhere (I would definitely not use this on a production server) with mod_proxy installed. Port 8080 is arbitrary. Basically for an unmatched virtual host (i.e. any request that doesn't match your other hosts you have set up) it will turn proxy on and proxy the request through. Change "xxx.xxx.xxx.xxx" to your own IP address.

现在您必须更改 subversion 配置文件中的服务器设置.

Now you have to change the server setting in your subversion config file.

在这个文件中:

~/.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-hosthttp-proxy-port.对于主机,请使用您已映射到开发服务器的备用域名,或者您可能只使用您的服务器 IP.然后将端口设置为 8080 或您使用的任何端口.

Uncomment out http-proxy-host and http-proxy-port. For host use a spare domain name you have mapped to your development server or presumably you could just use your server IP. Then set the port to 8080 or whatever you used.

这应该通过您刚刚设置的代理路由所有 subversion http 请求.它不影响 svn 或 svn+ssh 请求.

This should route all subversion http requests via your proxy you just set up. It doesn't affect svn or svn+ssh requests.

这是我的快速黑客,您的里程可能会有所不同,这可能完全不安全或已损坏等.

This was my quick hack, your mileage may vary, this might be totally insecure or broken, etc.

我的家庭办公室和家庭办公室都有 Comcast 业务.公司办公室.

I have Comcast business both at my home office & the corporate office.

两者都无法连接到 COMCAST 上的 REPO.

但是,如果我通过 Windstream T1 或通过我们在多个主干上的实时服务器连接,我永远不会遇到问题.

However, I never have a problem if I go over the Windstream T1 or connect via our live server on multiple backbones.

康卡斯特似乎在调整流量"和/或监控商务舱流量并破坏互联网!

干得好康卡斯特!

如果您没有备用连接,他们可能需要使用代理服务,然后向 Comcast 发送一封关于他们网络过滤的讨厌电子邮件.

If you don't have an alternate connection they you may need to use a proxy service and then send Comcast a nasty email about their network filtering.