凌峰创科服务平台

linux svn服务器 端口

默认端口

SVN 服务器主要有两种运行模式,它们使用的默认端口是不同的:

linux svn服务器 端口-图1
(图片来源网络,侵删)

a) Subversion (SVN) 协议 (通过 svnserve)

这是 SVN 原生的、也是最简单的协议。

  • 默认端口:3690
  • 协议类型: 自定义的 TCP 协议,通常直接写作 svn://
  • 示例: svn://your-server-ip/svn/project_repo

这是最常被问到和使用的默认端口。

b) Apache HTTP Server (通过 mod_dav_svn)

这种模式将 SVN 作为 Apache 的一个模块来运行,可以利用 Apache 的所有功能,如 HTTPS、认证、URL 重写等。

  • 默认端口:80 (HTTP) 或 443 (HTTPS)
  • 协议类型: HTTP/HTTPS,URL 通常以 http://https:// 开头。
  • 示例:
    • http://your-server-ip/svn/project_repo
    • https://your-server-domain.com/svn/project_repo

在这种模式下,SVN 服务本身并不直接监听一个独立的端口,而是由 Apache 服务器在标准的 HTTP/HTTPS 端口上来处理 SVN 请求。

linux svn服务器 端口-图2
(图片来源网络,侵删)

如何修改 SVN 服务器端口?

修改端口的方法取决于你使用的是哪种运行模式。

a) 修改 svnserve 的端口 (原生协议)

svnserve 通常作为系统服务(通过 systemdinit.d)或独立进程运行。

通过配置文件 (/etc/sysconfig/svnserve)

这是在 CentOS/RHEL 等发行版上推荐的方法。

linux svn服务器 端口-图3
(图片来源网络,侵删)
  1. 打开配置文件:

    sudo vi /etc/sysconfig/svnserve
  2. 找到 OPTIONS 这一行,修改或添加 --listen-port 参数,将端口改为 4890

    # 原始内容
    # OPTIONS="-r /var/svn"
    # 修改后
    OPTIONS="-r /var/svn --listen-port 4890"
  3. 保存并退出文件。

  4. 重启 svnserve 服务使新配置生效:

    sudo systemctl restart svnserve
    # 或者
    sudo service svnserve restart

直接启动 svnserve (非服务方式)

如果你是手动在后台启动 svnserve,可以在命令行中直接指定端口:

svnserve -d -r /path/to/repos --listen-port 4890
  • -d: 后台守护进程模式。
  • -r: 指定仓库的根目录。
  • --listen-port 4890: 指定监听端口为 4890

通过 systemd 服务文件

如果你的系统使用 systemdsvnserve 是通过 systemctl 安装的,你可能需要修改其服务单元文件。

  1. 编辑服务文件:
    sudo systemctl edit svnserve.service
  2. [Service] 段落下添加 Environment 变量:
    [Service]
    Environment="SVNSERVE_PORT=4890"
  3. 保存并退出,然后重新加载并重启服务:
    sudo systemctl daemon-reload
    sudo systemctl restart svnserve

    (注意:这种方式需要 svnserve 程序能够识别这个环境变量,通常官方的 svnserve 不支持,所以第一种方法更通用。)


b) 修改 Apache 的端口 (HTTP/HTTPS 协议)

Apache 的端口配置在主配置文件或站点配置文件中,通常位于 /etc/httpd/conf/httpd.conf/etc/apache2/sites-enabled/ 目录下。

  1. 修改 HTTP 端口 (80): 找到 Listen 指令并修改它。

    # 默认
    Listen 80
    # 修改为 8080
    Listen 8080
  2. 修改 HTTPS 端口 (443): 找到 Listen 443 指令并修改。

    # 默认
    Listen 443
    # 修改为 8443
    Listen 8443
  3. 重启 Apache 服务:

    # 对于 CentOS/RHEL 7+
    sudo systemctl restart httpd
    # 对于 Debian/Ubuntu
    sudo systemctl restart apache2

重要提示: 修改了 Apache 的端口后,客户端访问 SVN 仓库时也需要使用新的端口号,http://your-server-ip:8080/svn/project_repo


如何检查 SVN 服务器端口状态?

你可以使用 netstatss 命令来检查 SVN 服务是否在预期的端口上监听。

使用 ss 命令 (推荐,更快)

# 查看所有监听的 TCP 端口,并显示进程ID和名称
sudo ss -tulpn | grep -E 'svn|3690|80|443'
  • -t: TCP 端口
  • -u: UDP 端口
  • -l: 只显示监听的端口
  • -p: 显示进程ID和名称
  • -n: 以数字形式显示地址和端口,不进行DNS解析

输出示例分析:

  • 如果使用 svnserve 在默认端口 3690

    LISTEN 0      5            0.0.0.0:3690        0.0.0.0:*    users:(("svnserve",pid=1234,fd=3))

    这表示 svnserve 进程正在监听所有网络接口的 3690 端口。

  • 如果使用 Apache 在默认端口 80

    LISTEN 0      128          0.0.0.0:80          0.0.0.0:*    users:(("httpd",pid=5678,fd=4))

    这表示 httpd (Apache) 进程正在监听所有网络接口的 80 端口。

使用 netstat 命令 (较老)

sudo netstat -tulpn | grep -E 'svn|3690|80|443'

防火墙配置

无论你使用哪个端口,都必须确保服务器的防火墙允许该端口的入站流量。

使用 firewalld (CentOS/RHEL 7+)

# 允许 svnserve 的默认端口 3690
sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload
# 如果你的 svnserve 使用了自定义端口 4890
sudo firewall-cmd --permanent --add-port=4890/tcp
sudo firewall-cmd --reload
# 如果你的 Apache 使用了自定义端口 8080
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

使用 ufw (Debian/Ubuntu)

# 允许 svnserve 的默认端口 3690
sudo ufw allow 3690/tcp
# 如果你的 svnserve 使用了自定义端口 4890
sudo ufw allow 4890/tcp
# 如果你的 Apache 使用了自定义端口 8080
sudo ufw allow 8080/tcp

运行模式 默认端口 协议 如何修改
svnserve 3690 svn:// 编辑 /etc/sysconfig/svnserve 文件,在 OPTIONS 中添加 --listen-port <新端口>,然后重启服务。
Apache 80/443 http/https:// 编辑 Apache 的主配置文件,修改 Listen 指令,然后重启 Apache 服务。

关键步骤:

  1. 确定你的 SVN 服务器运行模式。
  2. 根据模式找到正确的配置文件。
  3. 修改端口配置。
  4. 重启服务使配置生效。
  5. 检查防火墙设置,确保新端口已开放。
  6. 使用 ssnetstat 命令验证端口是否正在监听。
分享:
扫描分享到社交APP
上一篇
下一篇