凌峰创科服务平台

Linux启动SVN服务器具体步骤是什么?

在Linux系统中启动SVN(Subversion)服务器通常涉及安装SVN软件、创建仓库、配置访问权限以及通过服务或命令启动svnserve进程,以下是详细步骤和注意事项,帮助您完成SVN服务器的部署与启动。

Linux启动SVN服务器具体步骤是什么?-图1
(图片来源网络,侵删)

安装SVN软件

首先需要确保系统已安装SVN服务端软件,以常见的CentOS和Ubuntu系统为例,可通过以下命令安装:

  • CentOS/RHEL系统
    sudo yum install subversion -y  # 使用yum包管理器
  • Ubuntu/Debian系统
    sudo apt update && sudo apt install subversion -y  # 更新包列表后安装

    安装完成后,可通过svnserve --version命令验证是否安装成功,若显示版本信息则表示安装成功。

创建SVN仓库

SVN仓库用于存储版本控制的数据,建议在/var/svn目录下创建,执行以下命令:

sudo mkdir -p /var/svn  # 创建仓库主目录
sudo svnadmin create /var/svn/project1  # 创建名为project1的仓库

创建后,仓库目录会包含confdbhookslocks等子目录,其中conf目录下的配置文件是关键:

Linux启动SVN服务器具体步骤是什么?-图2
(图片来源网络,侵删)
  • svnserve.conf:SVN服务主配置文件。
  • passwd:用户密码文件。
  • authz:权限控制文件。

配置SVN仓库

编辑svnserve.conf

进入仓库的conf目录,修改svnserve.conf文件:

sudo vim /var/svn/project1/conf/svnserve.conf

确保以下配置项未被注释且值正确:

[general]
anon-access = none        # 禁止匿名访问
auth-access = write       # 允许认证用户读写
password-db = passwd      # 密码文件路径
authz-db = authz         # 权限文件路径
realm = My SVN Repository # 认证领域名称(自定义)

注意:配置文件中的行首不能有空格,且两侧需有空格。

创建用户账号

编辑passwd文件,添加用户及其密码:

sudo vim /var/svn/project1/conf/passwd

格式为用户名 = 密码

[users]
user1 = password1
user2 = password2

设置访问权限

编辑authz文件,配置用户或用户组的访问权限:

sudo vim /var/svn/project1/conf/authz

示例配置:

[groups]
admin = user1
developers = user2
[/]           # 根目录权限
@admin = rw    # admin组读写权限
* = r         # 其他用户只读
[/project1/trunk]
developers = rw # developers组对trunk目录有读写权限

启动SVN服务器

通过命令行启动

使用svnserve命令直接启动,需指定监听端口(默认3690)、仓库路径及配置文件目录:

sudo svnserve -d -r /var/svn --listen-port 3690

参数说明:

  • -d:以守护进程模式运行。
  • -r:指定仓库根目录,访问时需使用svn://IP地址/仓库名
  • --listen-port:自定义端口(可选,默认3690)。

通过系统服务启动(推荐)

为方便管理,可将SVN服务添加为系统服务,创建服务文件:

sudo vim /etc/systemd/system/svnserve.service
```如下:
```ini
[Unit]
Description=Subversion Protocol Daemon
After=network.target
[Service]
Type=forking
User=svn
Group=svn
ExecStart=/usr/bin/svnserve -d -r /var/svn
Restart=on-failure
[Install]
WantedBy=multi-user.target

创建svn用户并设置权限:

sudo useradd -r -s /bin/false svn
sudo chown -R svn:svn /var/svn

启动并设置开机自启:

sudo systemctl daemon-reload
sudo systemctl start svnserve
sudo systemctl enable svnserve

检查服务状态:

sudo systemctl status svnserve

防火墙与SELinux配置

防火墙设置

若系统启用了防火墙,需开放SVN端口(3690):

sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload

SELinux配置(CentOS系统)

若SELinux为 enforcing 模式,需调整策略:

sudo setsebool -P httpd_can_network_connect_db on  # 允许网络连接
sudo semanage port -a -t svn_port_t -p tcp 3690    # 添加端口到SELinux策略

客户端测试

使用SVN客户端连接服务器,验证配置是否正确:

svn co svn://服务器IP地址/project1

输入用户名和密码后,若成功检出仓库内容,则表示服务器启动成功。

常见问题排查

  1. 连接被拒绝:检查防火墙是否开放端口,svnserve进程是否运行(ps aux | grep svnserve)。
  2. 权限错误:确认authz文件中的路径格式是否正确(如[/]表示根目录),用户是否属于对应组。

相关问答FAQs

问题1:如何修改SVN服务器的默认端口?
解答:通过svnserve命令的--listen-port参数指定端口,例如svnserve -d -r /var/svn --listen-port 8080,若通过系统服务启动,需修改svnserve.service文件中的ExecStart命令,添加--listen-port 8080,并重启服务(sudo systemctl restart svnserve),同时确保防火墙开放新端口。

问题2:如何为多个SVN仓库配置独立权限?
解答:在svnserve.conf中,将authz-db指向统一的权限文件(如/var/svn/authz),然后在authz文件中按仓库路径分别配置。

[/project1]
user1 = rw
[/project2]
user2 = r

访问时使用svn://IP/project1svn://IP/project2,系统会根据路径匹配对应权限规则。

分享:
扫描分享到社交APP
上一篇
下一篇