我在家里设置了一台 Subversion 服务器。我可以使用 svn:\mydomain.com 从与服务器处于同一网络和不处于同一网络的计算机中签出文件
当我尝试从工作地点连接时,问题出现了,他们封锁了端口 3690,所以我无法检出文件。但是我可以从端口 80 检出其他 subversion 存储库(例如 codeplex 和 collab.net)。
如何让我的家庭服务器允许我使用http://我的域名.com并签出文件,甚至是 svn.mydomain.com??
值得注意的是,该服务器也是一个 Web 服务器,因此 IIS 正在使用端口 80。我更喜欢不涉及 Apache 的选项,但如果没有其他选择,我会尝试它。
答案1
如果你想使用http://我的域名.com或 svn.mydomain.com 来检出文件,那么您将需要与 Web 服务器集成,这通常涉及端口 80(但不一定)。
如果您可以设法在另一个端口上运行 IIS,或者通过非 80 端口上的 Web 访问您的 Subversion,您可能需要查看 VisualSVN。它是一款免费、最新、一体化的 SVN 解决方案,专为 Windows 服务器设计。我已经使用它很长时间了,我很喜欢它。它具有开箱即用的 Web 访问功能。我相信它确实使用 Apache,但他们已经为您设置好了。
我的 svn 服务器可供内部和外部使用https://svn.mydomain.com:8443/
如果这在您的严格限制下无法帮助您,我们深感抱歉。
如果您可以获得第二个 IP 地址,那会有所帮助。或者,如果您可以在 Web 服务器(例如 ISA 服务器)前面放置一个应用程序感知路由器,您可以根据域名路由请求,并让多个具有不同内部 IP 的 Web 服务器通过同一个外部 IP 进行访问(我就是这么做的)。
更新:替代方案
您看过 HTTPort 或类似的程序吗?我在一家大公司工作时用过它,它允许我连接到任意互联网端口。您要做的如下:
- 在您的工作机器上安装 HTTPort。
- 将工作机器上的本地端口映射到互联网 IP 地址和端口。假设您将端口 5000 指向 1.2.3.4:3690(您的家用电脑)
- 将你工作的 svn 客户端指向 localhost:5000
- HTTPort 将其路由至您的家用计算机。
答案2
如果您家里有防火墙(我希望您有),您可以放入一个端口转发规则,将防火墙上允许离开工作网络的端口转发到 SVN 服务器上的 3690。
在我的工作单位,他们封锁了除 80 和 443 之外的所有端口,因此我将防火墙上的 443 转发到桌面上的端口 22 (ssh)。现在我可以在家庭网络上 ssh 到 443,然后连接到 22 上的 ssh。
由于您正在运行 Web 服务器,因此您可能已在使用 443。但是,他们可能允许 22 或 25 (SMTP) 或 110 (pop3)。您必须确定您的工作网络上允许哪些端口,并使用其中一个端口(您未在 svn/web 服务器上使用的端口)转发到您的 SVN 端口。
或者,如果您可以访问互联网上的另一台机器,则可以在该机器上放置代理。然后,您将连接到该机器,例如 80,该机器会将 80 转发到您家庭网络上的 3690。
另一种方法是在您的 SVN 服务器上安装 Apache,并在不同的端口 9(例如 8080)上运行它。然后,使用 URL 重写规则,创建一些转发到 Apache 的神奇 URL。例如,您可以将 www.mysite.com/svn 重写为 www.mysite.com:8080/svn。