一、检查SVN是否安装

rpm -qa subversion

如果没有则通过yum安装

yum install subversion -y

二、检查已安装版本

svnserve --version

三、创建SVN版本库(也就是项目要存放的仓库)

1、创建所有项目的根目录

mkdir -p /home/svn

2、创建项目要存放的位置(必须要在/home/svn根目录下创建)

svnadmin create是创建单个项目的版本库,ProjectName(cloud-platform)是项目的名字

svnadmin create testDemo

image-1679819112592.png

四、配置代码库

db目录:就是所有版本控制的数据存放文件。
hooks目录:放置hook脚本文件的目录。
locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端。
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。
进入/home/svn/testDemo/conf文件夹下

authz:权限控制文件
passwd:帐号密码文件
svnserve.conf :SVN服务配置文件

image-1679819270800.png

1、设置可以访问这个远程仓库的人的帐号密码

 vi passwd

在[users]下面进行用户名密码的设置
image-1679819427539.png
这里设置的用户名密码是用于svn://协议访问代码仓库使用的。
这与http协议使用的帐号密码不是使用相同的帐号密码文件。

2、设置权限控制

vi authz

在[groups]中设置组,和组员。
在下面分别为设计组design和开发组dev设计组,需要有对ProjectName项目中的doc文件有读写权限,而开发组只能拥有读的权限。
[/doc]对这个文件夹有设置权限
开发组需要对ProjectName项目中的testDemo文件有读写权限。其他人员不能进行写操作。
所以分别设置/doc和/testDemo文件的权限
为了测试方便,加一个[/]仓库根目录的访问权限,任意用户都可以读取内容
不直接对特定用户设置权限,而是对组进行授权,将用户加入该组。
1679879478494-1679879545462.png

3、修改svnserve.conf文件

 vi svnserve.conf

anon-access=none #匿名用户不可访问
auth-access=write #授权用户可写
password-db=passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /home/svn/testDemo #认证空间名,版本库所在目录
image-1679820107923.png

五、启动svn与停止

#让svn以deamon守护进程方式 以root用户启动运行。
#注意,这路径不能到ProjectName
#否则在访问时候会报svn: E170000: URL 'svn://虚拟机ip地址/ProjectName' doesn't exist
svnserve -d -r /home/svn
#查看SVN进程
ps aux | grep svn
#监听SVN端口,svn默认端口是3690
netstat -tunlp | grep 3690
chkconfig svnserve on  #开机自启

关闭SVN

 kill -9 PID
 或  killall svnserve

六、配置Apache的http协议访问

为什么采用http方式登录,因为上述在
/home/svn/testDemo/conf 中的passwd文件中,用户名和密码都是明文的的方式。

1、查看httpd是否已经安装的svn模块

方式一:
ls /etc/httpd/modules/ | grep svn
#如果没安装,使用yum安装
yum install mod_dav_svn -y
#查看mod_dav_svn是否安装成功
ls /etc/httpd/modules/ | grep svn
方式二:
1  安装Apache
         yum install httpd
         设置开机启动
         chkcofing httpd on
         启动Apache
         service httpd start
         查看Apache版本
         httpd -version
2 安装Apache支持服务
         yum install mod_dav_svn mod_auth_mysql

2、创建相应的http授权目录

用来存放用户信息和密码passwd,权限控制是authz。

1.创建用户信息文件用htpasswd方式

  • -c:创建一个加密文件;只有第一次创建账户密码时使用
  • -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
  • -m:默认采用MD5算法对密码进行加密;
  • -d:采用CRYPT算法对密码进行加密;
  • -p:不对密码进行进行加密,即明文密码;
  • -s:采用SHA算法对密码进行加密;
  • -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
  • -D:删除指定的用户
cd /home/svn/testDemo/conf/
mkdir http-auth
cd http-auth/
htpasswd -c /home/svn/testDemo/conf/http-auth/passwd test
# htpasswd -mb /home/svn/testDemo/conf/http-auth/passwd username password

2.设置相应用户权限控制权限

vim  authz

1679822496786.png

3.设置Apache配置关于svn认证的文件

vim /etc/httpd/conf/httpd.conf

#在最下面添加如下内容
<Location /svn>
DAV svn
SVNParentPath /data/svndata/
#SVNPath /data/svndata/
AuthType Basic
AuthName "svn 1.7.14"
AuthUserFile /home/svn/testDemo/conf/http-auth/passwd
AuthzSVNAccessFile /home/svn/testDemo/conf/http-auth/authz
Require valid-user
</Location>

说明:DAV为svn支持文件,svnpath为svn版本库目录,只有一个版本库时使用svnpath;
如果有多个版本时使用 svnparentpath和svnlistparentpath配合使用;
AuthaSVNAccessFile为权限文件目录,跟svn协议共同使用一个 权限文件即可;
AuthUserFile为用户认证文件,填入第3步配置的认证文件目录;
Require为用户是否需要验证。
image-1679822812078.png
修改svn权限配置文件的目录

为Apache设置数据仓库的所有者权限

chown -R apache:apache /home/svn/
或
chcon -R -t httpd_sys_content_rw_t /home/svn

最后重启apache 和 重启svn

service httpd restart
#查看错误日志
tail -f /var/log/httpd/error_log

httpd服务程序的配置信息被写到 /etc/httpd/conf.d/xxx.conf 这样的文件中,其实也就等于写在主配置文件 /etc/httpd/conf/httpd.conf里。
image-1679823498112.png