准备
公司内部需要配置局域网SVN,需要在在内部虚拟机服务器搭建,搭建过程做个记录,供参考。
注:如果条件允许,尽量在windows下搭建svn服务器,很省事,尤其是权限配置非常方便又易懂,效果相同
首先需要搭建SVN服务器
如果确认没有svn可以直接进入安装步骤
安装准备
保证当前系统没有安装svn
使用命令,尝试查看是否已经安装了svn
rpm -qa subversion
或者,我们直接在全部文件中查找svn文件夹就可以,使用如下命令查找,任意文件目录下输入
find / -name svn
如果发现svn文件夹首先要确认是否为svn的文件夹,有些软件内置svn文件夹及相关服务,注意不要看错了。
如:
下面几行的svn是在redmine下的svn所以它是不需要进行处理的,若存在svn,则进行删除或者卸载。
如果是压缩包安装只许删除所有相关文件
rm -rf [目标文件夹]
如果使用的是yum安装则:
yum remove subversion
出现确认输入y 即可,直至卸载完成
使用命令
rpm -qa subversion
没有出现svn版本说明卸载成功
SVN安装
分别执行如下命令(安装必须在联网情况下完成)安装svn和相关依赖包
yum install subversion
yum install mod_dav_svn
yum install httpd httpd-devel subversion mod_dav_svn
mod_auth_mysql
安装完成后进行确认是否安装成功,根目录下输入
cd /etc/httpd/modules
执行
ls | grep svn
出现如下内容即可
mod_authz_svn.so
mod_dav_svn.so
到此为止svn服务器基本安装完成
SVN配置
创建代码库
新建一个目录用于版本库,存放版本库信息(这一步可以省略)
mkdir -p /usr/local/svn/repo
创建一个版本库
svnadmin create /usr/local/svn/repo
上面的位置就是版本库的位置,文件内存放该版本库的相关信息
用户配置以及配置文件的修改
进入配置文件目录
cd /usr/local/svn/repo/conf
修改svnserve.conf 去掉下面几列的注释
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
分别解释一下上面四行的意思
- anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值为read
- auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:write
- password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:passwd
- authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz
修改passwd 文件,这个文件是存储所有账号和密码的
打开文件添加账户信息
[user]
admin = 123456
root = root
admin为登陆的用户名,123456是密码,使用回车分割用户
修改authz文件 ,该文件是进行用户分组和权限配置的
在[/]下添加
[/]
admin = rw
root = rw
* = r
解释一下啊上面的配置
admin用户具有根目录下所有文件的rw(read,write)读写 权限,其他用户用*代替,其他用户只有读的权限
至此svn服务器的基本配置和用户配置已经完成
可以在svn客户端访问地址
svn://ip
注意我们使用的是svn协议来完成svn库的访问
分组和文件夹权限的配置
实际开发中会使用不同的分组来分类svn账号,进而实现权限控制
对用户进行分组,authz文件中的[groups]下添加,多个组员之间用 “,” 隔开
[groups]
group1 = admin
group2 = root
上面就是把amdin分到group1组,root分到group2组
在[/]下添加
[/]
@group1= rw
@group2 = rw
* = r
可以批量对组的权限进行控制
文件夹权限配置
假设我们在版本库根目录下有两个文件夹分别为 user 和 project文件夹
现在设置user文件夹只有group1组的人员可以进行读写,其他用户组只可读,project文件夹只有group2组可以读写,group1组只有读权限,并且其他用户不可见(注意最后一行)
我们可以在authz文件中添加如下配置
[/user]
@group1 = rw
* = r
[/project]
@group2 = rw
@group1 = r
* =
注意:对文件夹权限进行配置的时候,仓库里有多少个文件夹, 就得为每一个文件夹都分配权限,不然不起作用
完~