SVN地址中的端口信息通常直接体现在URL里,格式为svn://IP:端口号/仓库路径,如果没有显式端口则默认使用3690端口,通过在客户端查看URL、服务端检查配置文件就能准确定位。
为什么很多人在SVN地址端口上栽跟头
连接SVN报错时,界面上那一串地址看着眼熟,却不知道问题出在哪里,大多数人只知道把地址复制进TortoiseSVN,点了确定没反应,才开始怀疑是不是端口配置有误,这就是典型的svn地址怎么看端口没搞明白的表现。
SVN地址的构成比想象中要简单,拆开来就三部分:协议头、服务器地址、端口号。svn://192.168.1.100:3690/repos 这串字符里,svn://是协议标识,168.1.100是服务器IP,3690就是端口号,repos是仓库名称,很多人在服务器上明明配好了SVN,可客户端死活连不上,罪魁祸首往往是端口没对上路。
svn地址怎么看端口:客户端三个位置给你答案
从TortoiseSVN的URL输入框直接读
最直接的方法,打开TortoiseSVN的Checkout对话框,看URL那一栏,如果地址是 svn://192.168.1.100:3690/project 这种写法,端口就藏在IP后面的冒号之后,3690就是端口号,有些时候地址写成这样 svn://192.168.1.100/svn/project,看不到端口号,这种情况说明用的是默认端口3690。
TortoiseSVN也提供了仓库浏览功能,右键点击文件夹,选择“SVN Checkout”或者打开“Repo-browser”,地址栏里同样能直接看到完整的URL,这个操作本质上就是在确认svn服务器端口怎么查,而且是最直观的一条路径。
项目右键属性里的精简信息
已经拉取过代码的项目,右键点开“Properties”,切到“Subversion”选项卡,这里会显示URL、Repository Root等信息,如果当初是用标准端口连接的,这里只显示主机名加路径;如果用了自定义端口,URL里会明确标注出来。
需要注意一点,SVN的URL分为几种协议类型,svn://走的是svnserve服务,http://或https://走的是Apache模块服务,file:///则是本地路径访问,不同协议对应的端口完全不一样,svnserve默认3690,Apache默认80或443,看端口前先弄清楚协议是什么,否则容易白忙活。
命令行工具svn info查得最干净
安装过SVN命令行工具的话,直接在终端跑一句 svn info,返回的URL字段就是完整地址,端口号一目了然,这个方法在Linux服务器上排查问题的时候特别好用,不需要打开图形界面就能拿到关键信息。
svn服务器端口怎么查:服务器端三处配置逐一说清
svnserve.conf文件里的默认端口
对于svnserve方式部署的SVN服务,端口配置集中在 svnserve.conf 文件里,这个文件在 conf 目录下,里面有一行配置写的是 port = 3690,如果要改端口,把3690换成其他数字就行,但要注意改完后必须重启svnserve服务才能生效,具体操作是:找到配置文件位置,编辑port行,保存退出,然后执行 killall svnserve 再重新启动 svnserve -d -r /path/to/repos。
命令行启动时指定端口
另一种情况是启动svnserve时手动指定了端口,比如这样启动的:svnserve -d -r /var/svn --listen-port 3390,如果服务器管理员当初是用这个方式启动的,svnserve.conf文件里的port配置反而会被忽略,遇到这种情况,直接查看启动脚本、crontab或者systemd服务文件就能拿到真实端口。
用netstat或lsof确认实际监听端口
配置和启动参数都看过之后,最稳妥的办法是直接看系统端口监听情况,执行 netstat -anp | grep svnserve 或者 lsof -i:3690,输出里会显示svnserve进程正在监听哪个端口,这个命令比什么都靠谱,管你配置写的是什么,真实监听哪个端口一查便知。
本地无法连接时,先用telnet验证端口通不通
telnet一步定位网络层故障
服务端端口查清楚了,客户端连接还是失败,问题可能出在网络层,打开cmd窗口,输入 telnet 192.168.1.100 3690,如果屏幕上出现黑屏或弹出成功提示,说明端口是通的;如果直接报“无法打开连接”,那基本能断定是防火墙拦截或者服务器根本没监听这个端口。
这个操作在排查svn地址端口相关的报错时价值极高,能把问题从“SVN配置错误”快速缩小到“网络不通”或“防火墙拦截”这两个方向。
防火墙规则对端口的影响
Linux服务器上如果开了firewalld,执行 firewall-cmd --list-ports 查看当前放行的端口列表,svn服务使用的3690端口如果不在列表里,用 firewall-cmd --add-port=3690/tcp --permanent 加上再reload就行,云服务器的话,还要去安全组里看入方向规则是否放通了对应端口,这些排查步骤本质上都是在回答svn服务器端口怎么查这个问题,只是换了一个排查视角。
多个版本仓库共存时的端口分配策略
单IP跑多个svnserve实例
单台服务器上跑多个SVN仓库,常见做法是起多个svnserve进程,每个进程监听不同端口,比如仓库A监听3690,仓库B监听3691,这样客户端连接时就靠端口来区分不同的仓库群,这种场景下,svn地址怎么看端口就变得更加关键记错一个数字,连的就是另一个仓库。
通过Apache虚拟主机实现多路径
另一种方式是用Apache的mod_dav_svn模块,这时候URL长这样:http://192.168.1.100/svn/projectA 和 http://192.168.1.100/svn/projectB,它们用的是同一个端口(80或443),靠路径作区分,不再用端口区分,这样一来,svn需要打开端口就只有80或443,防火墙策略简单得多。
常见端口理解误区与报错对照
- 端口号写成IP的一部分:
svn://192.168.1.100.3690/repos,点号代替了冒号,这属于典型的格式错误。 - 改了svnserve.conf忘了重启:配置不会热加载,必须重启进程。
- 防火墙放行了但只放了TCP:有的环境需要同时放行UDP,虽然SVN主要走TCP。
- 看到SIGSEGV就以为是端口问题:端口不对通常报的是“Connection refused”或“No route to host”,而不是段错误。
Q&A:svn地址端口相关问题集中解答
svn的默认端口是3690吗?为什么有的服务器不是这个端口?
是,SVN的默认端口是3690,这是svnserve服务注册的固定端口,但并不是所有服务器都会保持默认值,管理员出于安全考虑会修改端口,比如改成3390或者4430这种不常见数字,客户端连接时,必须使用服务器实际配置的端口,否则无法连接,判断方法是查看服务端的svnserve.conf或启动参数。
svn地址里找不到端口号怎么办?
如果URL中没有显式端口号,说明用的是默认端口,svn协议默认走3690,http协议默认走80,https协议默认走443,确认服务器端没有修改过端口配置后,直接按默认端口连接即可,如果不放心,可以用netstat查看服务器的实际监听端口来确认,服务器端配置文件里找port关键字,能直接看出端口设定情况。
修改SVN端口后原有客户端地址会失效吗?
会,SVN地址中的端口号是连接的必要信息,服务器改成新端口后,所有客户端必须更新URL中的端口号,否则连接会失败,建议修改端口后,通知团队统一更新客户端地址,避免多人连接报错,同时需要同步修改防火墙规则,继续放行新端口,这是个多环节联动的操作。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/772062.html


