CentOS 搭建 SVN

本文详细介绍如何在Linux环境下安装Subversion(SVN),包括版本库的创建与管理、配置文件的编辑、服务启动与访问等关键步骤,为用户提供完整的SVN搭建教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装 SVN

1. 通过 yum 下载并安装

yum install subversion

[root@izbp11tfz245ne0doug99kz ~]# yum install subversion

2. 查看 SVN 版本

svnserve --version

[root@izbp11tfz245ne0doug99kz ~]# svnserve --version

3. 查看 SVN 安装目录

rpm -ql subversion

[root@izbp11tfz245ne0doug99kz ~]# rpm -ql subversion

二、SVN 版本库

1. 创建版本库目录

mkdir /var/svnrepos

为后面创建版本库提供存放位置。

[root@izbp11tfz245ne0doug99kz ~]# mkdir /var/svnrepos

2. 创建版本库

svnadmin create --fs-type fsfs /var/svnrepos/svn0

指定版本库存放的文件结构,有 fsfs 和 dbd,推荐使用 fsfs。

[root@izbp11tfz245ne0doug99kz ~]# svnadmin create --fs-type fsfs /var/svnrepos/svn0

3. 复制版本库配置文件到根目录

(1) 复制用户账户权限管理配置文件

cp /var/svnrepos/svn0/conf/authz /var/svnrepos/conf/

[root@izbp11tfz245ne0doug99kz ~]# cp /var/svnrepos/svn0/conf/authz /var/svnrepos/conf/
(2) 复制用户账号密码管理配置文件

cp /var/svnrepos/svn0/conf/passwd /var/svnrepos/conf/

[root@izbp11tfz245ne0doug99kz ~]# cp /var/svnrepos/svn0/conf/passwd /var/svnrepos/conf/

三、编辑版本库管理及配置文件

1. /var/svnrepos/conf/authz

用户账号权限管理。

修改内容:
[/]
USER1 = rw
USER2 = rw
完整配置文件内容:

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
###  - a single user,
###  - a group of users defined in a special [groups] section,
###  - an alias defined in a special [aliases] section,
###  - all authenticated users, using the '$authenticated' token,
###  - only anonymous users, using the '$anonymous' token,
###  - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

[/]
USER1 = rw
USER2 = rw

2. /var/svnrepos/conf/passwd

用户账号密码管理。

修改内容:
USER1 = PASSWORD1
USER2 = PASSWORD2
完整配置文件内容:

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
# harry = harryssecret
# sally = sallyssecret
USER1 = PASSWORD1
USER2 = PASSWORD2

3. /var/svnrepos/svn0/conf/svnserve.conf

配置文件。

修改内容:
anon-access = none

禁止匿名用户访问。

auth-access = write

授权用户拥有读写权限。

password-db = ../../conf/passwd

以相对路径指定用户账号密码管理文件。

authz-db = ../../conf/authz

以相对路径指定用户账号权限管理文件。

realm = My First Repository

指定认证域,默认为/var/svnrepos目录。

完整配置文件内容:

### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository.  (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)

### Visit http://subversion.apache.org/ for more information.

[general]
### The anon-access and auth-access options control access to the
### repository for unauthenticated (a.k.a. anonymous) users and
### authenticated users, respectively.
### Valid values are "write", "read", and "none".
### Setting the value to "none" prohibits both reading and writing;
### "read" allows read-only access, and "write" allows complete
### read/write access to the repository.
### The sample settings below are the defaults and specify that anonymous
### users have read-only access to the repository, while authenticated
### users have read and write access to the repository.
# anon-access = read
anon-access = none
auth-access = write
### The password-db option controls the location of the password
### database file.  Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
# password-db = passwd
password-db = ../../conf/passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control.  Unless you specify a path
### starting with a /, the file's location is relative to the the
### directory containing this file.  If you don't specify an
### authz-db, no path-based access control is done.
### Uncomment the line below to use the default authorization file.
# authz-db = authz
authz-db = ../../conf/authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa.  The default realm
### is repository's uuid.
# realm = My First Repository
### The force-username-case option causes svnserve to case-normalize
### usernames before comparing them against the authorization rules in the
### authz-db file configured above.  Valid values are "upper" (to upper-
### case the usernames), "lower" (to lowercase the usernames), and
### "none" (to compare usernames as-is without case conversion, which
### is the default behavior).
# force-username-case = none

[sasl]
### This option specifies whether you want to use the Cyrus SASL
### library for authentication. Default is false.
### This section will be ignored if svnserve is not built with Cyrus
### SASL support; to check, run 'svnserve --version' and look for a line
### reading 'Cyrus SASL authentication is available.'
# use-sasl = true
### These options specify the desired strength of the security layer
### that you want SASL to provide. 0 means no encryption, 1 means
### integrity-checking only, values larger than 1 are correlated
### to the effective key length for encryption (e.g. 128 means 128-bit
### encryption). The values below are the defaults.
# min-encryption = 0
# max-encryption = 256

四、启动 SVN

方法2选1:

1. 使用 systemctl 命令启动

(1) 修改启动相关文件

/etc/sysconfig/svnserve
修改内容:
# OPTIONS="-r /var/svn"
OPTIONS="-r /var/svnrepos"

/var/svn 为默认 SVN 版本库根目录,如果不修改,使用 systemctl start svnserve.service 命令,系统将判断根目录不存在,无法启动。

完整配置文件内容:

# OPTIONS is used to pass command-line arguments to svnserve.
#
# Specify the repository location in -r parameter:
# OPTIONS="-r /var/svn"
OPTIONS="-r /var/svnrepos"
(2) 手动启动

systemctl start svnserve.service

[root@izbp11tfz245ne0doug99kz ~]# systemctl start svnserve.service
(3) 设置开机自启动

systemctl enable svnserve.service

[root@izbp11tfz245ne0doug99kz ~]# systemctl enable svnserve.service
Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service.

2. 使用 svnserve 命令启动

(1) 手工启动

svnserve -d -r /var/svnrepos/

可以带上 --listen-port 参数指定端口号,默认为 3690。

[root@izbp11tfz245ne0doug99kz ~]# svnserve -d -r /var/svnrepos/
(2) 修改开机自启动文件

/etc/rc.local
修改内容:
svnserve -d -r /var/svnrepos/
完整配置文件内容:

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

svnserve -d -r /var/svnrepos/

赋予 /etc/rc.d/rc.local 执行权限
chmod +x /etc/rc.d/rc.local

[root@izbp11tfz245ne0doug99kz ~]# chmod +x /etc/rc.d/rc.local

3. 查看进程状态

ps -aux | grep 'svnserve'

[root@izbp11tfz245ne0doug99kz ~]# ps -aux | grep 'svnserve'
root     13681  0.0  0.0 162196   436 ?        Ss   21:00   0:00 svnserve -d -r                                                                                       /var/svnrepos/
root     13695  0.0  0.1 112656  2312 pts/2    S+   21:01   0:00 grep --color=a                                                                                      uto svnserve

4. 查看进程端口

netstat -ln | grep 3690

[root@izbp11tfz245ne0doug99kz ~]# netstat -ln | grep 3690
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN

五、访问 SVN

1. 下载客户端和中文语言包

SVN官网下载

2. 安装客户端

(1) 欢迎界面
12805592-99496c4870c1083a.png
点击Next进入下一步
(2) 许可界面
12805592-16c6db0fb55f2d7e.png
点击Next进入下一步
(3) 功能路径界面
12805592-f5f08e8fbfb1e7ab.png
点击command line client tools,选择Will be installed on local hard drive

12805592-947ea322a09ba62d.png
修改路径后点击Next进入下一步
(4) 安装前确认
12805592-52d58c3b79cb6dfb.png
点击Next进入下一步
(5) 安装完毕
12805592-a7a2147df2dcd31a.png
点击Finish完成

3. 安装中文语言包

(1) 欢迎界面
12805592-89815c3fa138defe.png
点击下一步后自动安装
(2) 安装完毕
12805592-086d39e420723bc5.png
点击完成
(3) 设置中文语言
12805592-c180a01ab3bb0761.png
Language选择中文(简体)(中文),然后点应用和确定

2. 访问

12805592-fdee99cba5ba1249.png
svn://IP地址:端口号/版本库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值