前期准备:

svn服务端:操作系统版本: CentOS Linux release 8.3.2011

什么是 TortoiseSVN?

TortoiseSVN 是一个 Windows 下的版本控制系统 Apache™ Subversion® 的客户端工具。就是说,TortoiseSVN 常年管理文件和目录。文件存储于一个中央版本库中。版本库就像一个常见的文件服务器,除了它保存你对文件和目录所有的改变。这一特性使得你可以恢复文件的旧版本并查看历史-谁在什么时间如何进行的修改。这就是为什么很多人认为 Subversion 和版本控制系统是一种“时间机器”。
某些版本控制系统也是软件配置管理(SCM)系统,这种系统经过精巧的设计,专门用来管理源代码树,并且具备许多与软件开发有关的特性 - 比如,对编程语言的支持,或者提供程序构建工具。不过 Subversion 并不是这样的系统;它是一个通用系统,可以管理任何类型的文件集,包括源代码。

一、安装subversion和mod_dav_svn

[root@centos8 ~]# yum install subversion -y
[root@centos8 ~]# yum install mod_dav_svn -y

二、创建几个目录作为版本库存放目录,本文创建两个目录,分别为repo1、repo2

[root@centos8 ~]# mkdir -p /home/svn/repo/repo1
[root@centos8 ~]# mkdir -p /home/svn/repo/repo2

三、将前面创建的两个目录设置成版本库

[root@centos8 ~]# svnadmin create /home/svn/repo/repo1
[root@centos8 ~]# svnadmin create /home/svn/repo/repo2
将目录设置为版本库之后,目录中会生成版本库相关文件和目录,其中conf目录下存放的是用户、权限等相关的配置文件

四、为了统一管理所有用户以及项目的权限,从生成的版本库中拷贝一份配置文件放置到SVN的根目录下面

[root@centos8 ~]# cp -r /home/svn/repo/repo1/conf /home/svn/repo/conf

五、创建用户权限与密码文件

[root@centos8 ~]# vim /home/svn/repo/conf/passwd
[users]
admin = admin
lixingyun = lixingyun123
zhangzifan= zhangzifan123
custom = custom123

六、配置用户的项目访问权限

[root@centos8 ~]# vim /home/svn/repo/conf/authz
# [groups]标签表示对人员进行分组,然后可以对整个分组进行权限配置
#格式为 分组名称=分组成员用户1,分组成员用户2,分组成员用户3
[groups]
admin = admin
repo1 = lixingyun,zhangzifan
#多个用户时用逗号分隔
custom = custom
#表示对svn根目录进行权限分配,权限分为:读写权限(rw),只读权限(r)
[/]
@admin = rw
#@admin表示给admin分组分配读写权限
#表示对项目repo1进行权限分配
[repo1:/]
@repo1 = rw
#@repo1表示给repo1分组分配读写权限
#表示对项目repo2进行权限分配
[repo2:/]
@custom = r
#@custom表示给custom分组分配只读权限

七:配置SVN启动时的默认根目录

[root@centos8 ~]# vim /etc/sysconfig/svnserve
修改下面内容
OPTIONS=”-r /home/svn/repo”
# 默认是OPTIONS=”-r /var/svn”

八、为svn开放防火墙端口,默认使用svn协议访问时使用的端口号是3690

[root@centos8 ~]# firewall-cmd —zone=public —add-port=3690/tcp —permanent

九、启动svn服务器

[root@centos8 ~]#svnserve -d -r /home/svn/repo/ —config-file=/home/svn/repo/conf/svnserve.conf
#其中参数意义:-d 守护进程启动,-r 指定版本库目录, —config-file 指定配置文件

十、SVN客户端链接测试,案例格式如下:

svn://ip:3690/repo1
svn://ip:3690/repo2
例如:
svn://192.168.13.164:3690/repo1
桌面新建svn文件夹 — 右键检出 - - 输入登录用户账号密码 - - 检出成功
image.png

Centos设置http访问设置

配置过程:

1、http访问使用的http服务器是Apache旗下的httpd,以及svn支持模块mod_dav_svn,
通过如下命令进行安装

[root@centos8 ~]#yum install -y httpd mod_dav_svn

2、检查Apache、mod_dav_svn是否安装成功

[root@centos8 ~]# httpd -v
[root@centos8 ~]# find / -name mod_dav_svn.so
[root@centos8 ~]# find / -name mod_authz_svn.so

3、修改httpd的配置文件

[root@centos8 ~]# vim /etc/httpd/conf/httpd.conf
释放 ServerName的注释,并配置为 ServerName localhost:80
修改:AllowOverride none 为AllowOverride ALL

4、创建httpd的账号密码认证,账号和密码与前文svn配置文件的passwd配置一致

[root@centos8 ~]# htpasswd -cbm /home/svn/repo/conf/http_passwd admin admin
[root@centos8 ~]# htpasswd -bm /home/svn/repo/conf/http_passwd lixingyun lixingyun123
[root@centos8 ~]# htpasswd -bm /home/svn/repo/conf/http_passwd zhangzifan zhangzifan123
[root@centos8 ~]# htpasswd -bm /home/svn/repo/conf/http_passwd custom custom123
htpasswd命令参数:
-c:创建一个加密文件;
-m:默认采用MD5算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
如果需要创建的用户数量比较多,建议使用脚本执行用户添加的操作

5、修改配置文件/etc/httpd/conf.d/subversion.conf(需要新建),內容为:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

DAV svn
SVNParentPath /home/svn/repo
AuthType Basic
AuthName “Authorization SVN”
AuthzSVNAccessFile /home/svn/repo/conf/authz
AuthUserFile /home/svn/repo/conf/http_passwd
Require valid-user

配置文件主要元素/参数含义
:这是httpd配置的位置映射标签,即通过http访问/svn这个路径时会被映射到标签内配置的路径中去。
SVNParentPath :此参数一般配置为svn的根目录,即为路径/svn的映射目标地址
AuthzSVNAccessFile:httpd的访问权限配置文件authz的路径,可以共用svn的权限配置文件
AuthUserFile:上文所生成的用户密码配置文件http_passwd的路径

6、配置apache对SVN目录权限

[root@centos8 ~]# chown -R apache:apache /home/svn/repo/

7、启动Apache的httpd,默认启用80端口(需要防火墙开放端口),

可以通过 /etc/httpd/conf/httpd.conf进行修改。

[root@centos8 ~]# vim /etc/httpd/conf/httpd.conf
[root@centos8 ~]# systemctl start httpd # 启动
[root@centos8 ~]# systemctl status httpd # 查看状态
[root@centos8 ~]# systemctl stop httpd # 停止
[root@centos8 ~]# systemctl enable httpd # 开机自启动

8、至关重要的一项配置,如果不进行配置,SVN 客户端访问会报错,客户端提示服务端内部错误,报500错误。

[root@centos8 ~]# chcon -R -t httpd_sys_content_rw_t /home/svn/repo/

9、通过SVN客户端进行checkout测试,地址为:

http://ip/svn/repo1
http://ip/svn/repo2
其中svn即为上文Location标签中的svn。

测试结果:
image.png
image.png

新用户使用http 方式访问svn 服务器的版本仓库流程

1、 进入版本仓库的配置文件所在目录

cd /home/svn/repo/conf

2、配置svn用户及密码,编辑修改passwd文件

vim /home/svn/repo/conf/passwd

格式为:用户名 = 用户密码

添加下面内容

[users]
admin = admin
lixingyun = lixingyun123
zhangzifan= zhangzifan123
custom = custom123

保存退出 :wq

3、配置用户的项目访问权限


vim /home/svn/repo/conf/authz

[groups]标签表示对人员进行分组,然后可以对整个分组进行权限配置
#格式为 分组名称=分组成员用户1,分组成员用户2,分组成员用户3
[groups]
admin = admin
repo1 = lixingyun,zhangzifan #多个用户时用逗号分隔
custom = custom

表示对svn根目录进行权限分配,权限分为:读写权限(rw),只读权限(r)
[/]
@admin = rw #@admin表示给admin分组分配读写权限

表示对项目repo1进行权限分配
[repo1:/]
@repo1 = rw #@repo1表示给repo1分组分配读写权限

表示对项目repo2进行权限分配
[repo2:/]
@custom = r #@custom表示给custom分组分配只读权限

4、创建httpd的账号密码认证,账号和密码与前文配置文件的passwd需配置一致

htpasswd -cbm /home/svn/repo/conf/http_passwd admin admin

htpasswd -bm /home/svn/repo/conf/http_passwd lixingyun lixingyun123

htpasswd -bm /home/svn/repo/conf/http_passwd zhangzifan zhangzifan123

htpasswd -bm /home/svn/repo/conf/http_passwd custom custom123

htpasswd命令参数:
-c:创建一个加密文件;
-m:默认采用MD5算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
如果需要创建的用户数量比较多,建议使用脚本执行用户添加的操作。

参考原教程:

1:https://blog.csdn.net/u013181021/article/details/99727369

Centos7之subversion(svn)的安装

2:https://blog.csdn.net/u013181021/article/details/99728158

Centos7之subversion支持http访问配置