1:查看是否安装旧版SVN
rpm -qa subversion
2:没有安装svn则 通过yum 安装
yum install subversion -y
3:创建svn项目所在根目录
mkdir -p /home/svn
4:创建svn项目要存放的位置
svnadmin create /home/svn/code
5:创建成功后 /home/svn/code包含conf、db、 format、 hooks、 locks、 README.txt目录或文件
6:配置文件说明
进入 /home/svn/code/conf 目录
- authz:权限控制文件
- passwd:账号密码文件
- svnserver.conf:SVN 配置文件
7:编辑passwd文件,设置可以访问这个远程仓库的账户密码
vim /home/svn/code/conf/passwd
在【users】节点下添加用户名密码,用户名密码可随意填写,编辑完成后保存退出。
### 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] admin = admin
8:编辑authz文件,设置权限控制
vim /home/svn/code/conf/authz
在[groups] 节点下添加组和组成员, “=” 左边是组名,右边是组成员。组内有多个成员时用逗号隔开,例如 group_1 = user1,user2,user3
[groups] admin_group = admin [algorithm:/] @admin_group = rw
9:编辑svnserve.conf文件
vi svnserve.conf
去掉如下几行注释
anon-access=none #匿名用户不可访问 auth-access=write #授权用户可写 password-db=passwd #使用那个文件作为账号文件 authz-db=authz #使用那个文件作为权限文件 realm=/home/svn/code #认证空间名,版本库所在目录
10:svn启动与停止
#启动
svnserve -d -r /home/svn
#停止
killall svnserve
11 启动svn 后便可以使用svn://ip/code 访问code版本库 ,省略svn这个根目录。至此已经使用svn协议访问版本库。
12:配置http协议访问
- 查看httpd是否已经安装svn模块
ls /etc/httpd/modules/ | grep svn ls: cannot access /etc/httpd/modules/: No such file or directory
- 如果没有安装,使用yum安装
yum install mod_dav_svn -y
- 查看mod_dav_svn是否安装成功
ls /etc/httpd/modules/ | grep svn mod_authz_svn.so mod_dav_svn.so
- 在/etc/httpd/conf.d/文件下创建subversion.conf文件并编辑
<Location /code> DAV svn SVNPath /home/svn/code/ AuthType Basic AuthName "Subversion repos" AuthUserFile /home/svn/code/conf/accesspwd AuthzSVNAccessFile /home/svn/code/conf/authz Require valid-user </Location>
AuthUserFile这个是http协议的访问账户密码文件,后面使用htpasswd命令创建
AuthzSVNAccessFile 权限认证文件,这个跟上面配置svn时候配置的权限设置一样
Require 需要认证用户才可以访问
如果不配置 SVNpath 就要是配置的SVNParentPath 两种配置方式都可以,选择一种即可
第二种配置具体如下所示,只是配置的SVNParentPath的同时要添加SVNListParentPath on, 否则前端会报权限不足,Apache日志会显示“The URI does not contain the name of a repository. [403, #190001]”
<Location /code> DAV svn SVNParentPath /home/svn/ SVNListParentPath on AuthType Basic AuthName "Subversion repos" AuthUserFile /home/svn/code/conf/accesspwd AuthzSVNAccessFile /home/svn/code/conf/authz Require valid-user </Location>
13:htpasswd创建账户密码
htpasswd -c -m /home/svn/code/conf/accesspwd username
-c是创建新文件,只有第一次创建账户密码时使用
-m是强制使用MD5加密密码(默认)
accesspwd 是创建的文件名。
username你要创建的可访问用户的名字(如我想创建一个asd用户访问这个svn项目仓库,这个username就是asd)
按提示输入两次密码,我们就创建了一个可访问用户名和密码。
如果想要新增加用户username2(第二次添加用户)
不需要使用-c参数,如果使用的会覆盖原来的accesspwd文件
htpasswd -m /home/svn/code/conf/accesspwd abc
14:重启httpd服务,并使用http协议访问版本库
systemctl restart httpd.service
现在就可以通过 “http://ip/ProjectName” 来访问svn的版本库了