凌峰创科服务平台

linux 创建svn服务器

在Linux系统中创建Subversion(SVN)服务器是一个常见的需求,主要用于版本控制和团队协作,以下是详细的步骤和说明,帮助您完成SVN服务器的搭建。

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

安装SVN服务

需要在Linux服务器上安装SVN服务,以CentOS系统为例,可以使用yum命令进行安装,执行以下命令:

sudo yum install subversion -y

安装完成后,可以通过以下命令检查SVN版本,确认安装是否成功:

svnserve --version

如果显示版本信息,则表示安装成功,对于Ubuntu或Debian系统,可以使用apt-get命令安装:

sudo apt-get update
sudo apt-get install subversion -y

创建SVN仓库

SVN仓库是存储版本控制数据的地方,建议在/opt或/home目录下创建一个名为svn的目录,用于存放所有仓库,执行以下命令:

linux 创建svn服务器-图2
(图片来源网络,侵删)
sudo mkdir -p /opt/svn

然后使用svnadmin命令创建一个新的仓库,例如创建一个名为project1的仓库:

sudo svnadmin create /opt/svn/project1

创建完成后,进入仓库目录,可以看到以下文件和文件夹:

  • conf:存放配置文件的目录。
  • db:存放仓库数据的目录。
  • hooks:存放钩子脚本的目录。
  • locks:存放锁定信息的目录。
  • format:仓库格式文件。

配置仓库访问权限

进入仓库的conf目录,可以看到三个配置文件:svnserve.conf、passwd和authz,这些文件分别用于配置SVN服务、用户密码和权限控制。

配置svnserve.conf

编辑svnserve.conf文件,取消以下行的注释并修改:

sudo vim /opt/svn/project1/conf/svnserve.conf
```如下:

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

注意:配置文件中的每个节和键值对前不能有空格,否则可能导致配置无效。
#### 2. 配置passwd
编辑passwd文件,添加或修改用户及其密码:
```bash
sudo vim /opt/svn/project1/conf/passwd
```如下:

[users] user1 = password1 user2 = password2

这里添加了两个用户:user1和user2,密码分别为password1和password2。
#### 3. 配置authz
编辑authz文件,设置用户和组的访问权限:
```bash
sudo vim /opt/svn/project1/conf/authz
```如下:

[groups] admin = user1 developer = user1,user2

[/] @admin = rw

  • = r

[/project1/trunk] @developer = rw

说明:
- [groups]:定义用户组,admin组包含user1,developer组包含user1和user2。
- [/]:仓库根目录的权限,admin组有读写权限,其他用户只有读权限。
- [/project1/trunk]:trunk目录的权限,developer组有读写权限。
### 启动SVN服务
配置完成后,需要启动SVN服务,可以使用svnserve命令,指定仓库根目录、监听端口和认证域:
```bash
sudo svnserve -d -r /opt/svn --listen-port 3690

参数说明:

  • -d:以守护进程模式运行。
  • -r:指定仓库根目录,客户端访问时不需要输入完整路径。
  • --listen-port:指定监听端口,默认为3690。

启动后,可以通过以下命令检查SVN服务是否运行:

ps aux | grep svnserve

如果显示svnserve进程,则表示服务启动成功。

防火墙配置

如果服务器开启了防火墙,需要开放SVN服务的端口(默认为3690),以CentOS为例,执行以下命令:

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

对于Ubuntu系统,可以使用ufw命令:

sudo ufw allow 3690/tcp

客户端连接测试

在客户端机器上,可以使用TortoiseSVN(Windows)或svn命令(Linux)连接SVN服务器,以svn命令为例,执行以下命令:

svn co svn://服务器IP:3690/project1

输入用户名和密码后,如果成功下载仓库内容,则表示SVN服务器搭建成功。

多仓库配置

如果需要创建多个仓库,可以重复上述“创建SVN仓库”和“配置仓库访问权限”的步骤,启动SVN服务时,仍然使用相同的命令,因为-r参数已经指定了仓库根目录,所有仓库都会被自动加载。

服务开机自启动

为了确保SVN服务在服务器重启后自动启动,可以创建一个systemd服务文件,执行以下命令:

sudo vim /etc/systemd/system/svnserve.service
```如下:

[Unit] Description=Subversion protocol daemon After=network.target

[Service] Type=forking User=root Group=root ExecStart=/usr/bin/svnserve -d -r /opt/svn --listen-port 3690

[Install] WantedBy=multi-user.target

然后执行以下命令启用并启动服务:
```bash
sudo systemctl daemon-reload
sudo systemctl enable svnserve
sudo systemctl start svnserve

常见问题及解决方法

  1. 问题:客户端连接时提示“Could not connect to the server”。 解决:检查SVN服务是否启动,防火墙是否开放3690端口,以及服务器IP是否正确。

  2. 问题:客户端连接时提示“Authorization failed”。 解决:检查svnserve.conf、passwd和authz文件的配置是否正确,特别是用户名和密码是否匹配,权限设置是否正确。

相关问答FAQs

问题1:如何修改SVN仓库的密码?
解答:进入仓库的conf目录,编辑passwd文件,找到对应用户,修改其密码即可,修改user1的密码为newpassword,将passwd文件中的行改为user1 = newpassword,保存文件后,新密码即可生效。

问题2:如何备份SVN仓库?
解答:可以使用svnadmin hotcopy命令创建仓库的热备份,确保数据一致性,备份project1仓库到/opt/svn_backup/project1,执行以下命令:

sudo svnadmin hotcopy /opt/svn/project1 /opt/svn_backup/project1

还可以定期使用svnadmin dump命令创建仓库的转储文件,用于长期备份:

sudo svnadmin dump /opt/svn/project1 > /opt/svn_backup/project1.dump
分享:
扫描分享到社交APP
上一篇
下一篇