使用SVN可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节,同时也可以支持多人协同修改同一个文件
在很多人的印象中,SVN是程序员的专用工具,其实不然,对于技术人员来说,其实也有很大的用途。如果我们对技术文档有备份或者需要分享的话,有时候对文档中部分类容修改后,没有及时替换原有文件,时间久了,就不知道那个文档才是最终文档,或许有人说,我可以查看最后修改时间,这也是一种办法,但是,如果有时候需改了内容也保存了,但是又觉得可以不用修改,然后就将修改后的内容删掉,然后又保存了,其实内容并没有变,但是文件的最后修改时间却变了;还有一个问题,就是无法做协同修改。如果使用SVN的话,以上问题都能得到很好的解决
1、系统环境
OS:CentOS Linux release 8.4.2105
SVN:subversion 1.10.2
2、安装subversion
# 使用yum安装 subversion
[root@localhost ~]# yum install subversion -y
# 产看是否安装成功
[root@localhost ~]# svnserve --version
svnserve,版本 1.10.2 (r1835932)
3、创建版本库
-
创建SVN数据目录
[root@localhost ~]# mkdir -p /svn/files
-
创建版本库
[root@localhost ~]# svnadmin create /svn/files/my_repos
-
删除版本库
如果需要删除版本库,可使用
rm -fr
删除版本库文件[root@localhost ~]# svnadmin rm -fr /svn/files/my_repos
-
配置svn配置文件
每个版本库创建之后,都会在/svn/files/<versionDB_name>/conf/下生成以下四个文件
-
authz:SVN服务器授权文件
# 用户组配置 [groups] 组名=用户1,用户2,用户3,... # 根目录访问权限配置 [/] 用户1 = rw 用户2 = r @用户组1 = rw * = # 子目录访问权限配置 [my_repos:/dir] @用户组1 = rw * = r
-
passwd:用户配置文件
[users] 用户1 = 密码 用户2 = 密码
-
svnserve.conf:svnserve守护进程配置文件
[general] # 匿名用户权限 anon-access = read # 认证用户权限 auth-access = write # 用户认证文件 password-db = passwd # 用户权限配置文件 authz-db = authz # 在登陆时提示的认证域名称 realm = my_repos # 使svnserve在将用户名与上面配置的authz-db文件中的授权规则进行比较之前,对用户名进行大小写规范化 force-username-case = none
-
-
启动/停止SVN服务
# 启动SVN服务 ## -d:以后台运行模式启动SVN服务 ## -r:指定SVN服务根目录 ## --listen-port:监听端口,默认端口3690 [root@localhost ~]# svnserve -d -r /svn/files/my_repos --listen-port=3690 # 查看服务是否启动 [root@localhost ~]# ps aux | grep svnserve root 2618 0.0 0.0 98964 880 ? Ss 14:07 0:00 svnserve -d -r /svn/files/my_repos --listen-port=3690 # 停止SVN服务 ## 首先查看服务运行情况,找到服务的PID号,然后使用 kill 命令结束进程 [root@localhost ~]# kill 2618 # 添加开机启动 ## 创建一个启动脚本 [root@localhost ~]# vi svn_start.sh #!/usr/bin/bash svnserve -d -r /svn/files/my_repos/ --listen-port=3690 ## 将启动脚本添加到 /etc/profile.d/ 中 [root@localhost ~]# cp /root/svn_start.sh /etc/profile.d/ # 在防火墙中开放端口,此处使用firewalld防火墙 ## 首先确认防火墙谁否开启 [root@localhost ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2021-12-07 16:54:52 CST; 9s ago ## 添加需要开放的端口 [root@localhost ~]# firewall-cmd --add-port=3690/tcp --permanent success [root@localhost ~]# firewall-cmd --reload success ## 关闭SELINUX [root@localhost ~]# vi /etc/selinux/config SELINUX=disabled
4、访问SVN服务器
服务器搭建好以后,我们就该测试服务器了。在Windows下,我们使用TortoiseSVN来访问SVN服务器,软件的安装这里就不再阐述。
在资源管理器中输入:svn://svn_serverIP:port 如果服务器配置成功,那么就会出现以下对话框
输入用户名和密码后,即可进入SVN仓库,如下图
5、简单故障处理
由于是第一次搭建SVN服务器,在配置方面难免会遇到各种问题,有两个问题新手很容易遇到,而且不容易观察到
-
认证失败
产生该故障的原因是因为在 “/svn/files/test/conf/passwd” 中,用户名前面有空格所导致,只需要将用户名前面的空格删除即可
-
认证配置无效
产生该故障的原因是,由于在 “ /svn/files/test/conf/svnserve.conf” 中开启了 “groups-db = groups” 选项,但是在配置文件夹中 groups 配置文件不存在所导致。处理该问题的方法有两种,一种是如果不需要设置组的话,可以在配置文件中,将该选项关闭;另一种方法是在 “/svn/files/test/conf/” 目录下创建一个 “groups” 文件即可