之前我们搭建SVN服务器一直是在Windows服务器上面的,今天试着在Linux服务器上面搭建一下SVN服务器,整个过程很是简单,很容易操作。
一、服务器搭建
1、yum install subversion
直到显示Complete则表示SVN已经安装完成了。
2、输入rpm -ql subversion查看安装位置
我们知道svn在bin目录下生成了几个二进制文件。
输入svn --help可以查看svn的使用方法
3、创建svn版本库目录
mkdir -p /var/svn/svnrepos4、创建版本库
svnadmin create /var/svn/svnrepos执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件
目录用途说明:
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)
5、进入conf目录(该svn版本库配置文件)
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
6、设置帐号密码
vi passwd在[users]块中添加用户和密码,格式:帐号=密码,如dan=dan
7、设置权限
# vi authz[groups]
admin = jay,adolf
user = joe
[/]
@admin = rw
@user = r
* =
格式说明:
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
/ 表示对根目录(即/svn/project目录)下的所有子目录范围设置权限;
[/abc] 表示对资料库中abc项目设置权限;
创建一个admin组,组成员包括jay和adolf
创建一个user组,成员只有joe
admin组对目录有读写权限;
单个用户joe有读写权限;
*=表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,空权限表示禁止访问本目录,这很重要一定要加上。
注意:对权限配置文件的修改立即生效,不必重启svn。
8、修改svnserve.conf文件
vi svnserve.conf打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
9、启动svn版本库
svnserve -d -r /var/svn/svnrepos注意:不要使用系统提供的 /etc/init.d/svnserve start 来启动,因为系统默认的启动脚本中没有使用 –r /var/svn/svnrepos参数指定一个资源。这种情况下启动的svn服务,客户端连接会提示“svn: No repository found in 'svn://192.168.71.128/project' ”这样的错误。
默认svn服务器端口是3690。
杀死svn服务:
# ps -ef|grep svn
root 4642 1 0 16:08 ? 00:00:00 svnserve -d -r /var/svn/svnrepos
root 4692 3676 0 16:13 pts/2 00:00:00 grep svn
# kill -9 4642
若要使用/etc/init.d/svnserve 脚本,可以修改start()函数部分,如下:
start() {
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
daemon --pidfile=${pidfile} $exec $args -r /var/svn/svnrepos
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
完成
10、安装好的svn服务端,默认是不会开机自启动的,每次开机自己启动会很麻烦,我们可以把它设成开机启动
#!/bin/bash
/usr/bin/svnserve -d -r /var/svn/svnrepos
这里的svnserve路径保险起见,最好写绝对路径,因为启动的时候,环境变量也许没加载。
绝对路径怎么查?
which svnserve
然后修改该脚本的执行权限
chmod ug+x svn_startup.sh
或者万能的
chmod 777 svn_startup.sh
vi /etc/rc.d/rc.local
在末尾添加脚本的路径,如:
/root/svn_startup.sh
现在,你可以重启一下试试了。
ps -ef|grep svnserve
二、使用客户端连接
在URL中输入:
svn://192.168.71.128回车,提示输入用户名和口令
三、常见问题解决
解决:启动svn服务的时候没有使用-r /svn/project参数,没有指明资源库的具体路径。使用# svnserve -d -r /svn/project/ 命令来启动就可以了,不要使用/etc/init.d/svnserver脚本。
3.2 执行命令# svn co svn://192.168.71.128/project时提示“svn: Authorization failed”错误?
解决:一般这种授权失败的错误原因都来自conf/authz文件的配置
正确的配置如下:
[groups]
admin = jay,adolf
user = joe
[/]
@admin = rw
@user = rw
* =
保存
来源:CSDN
作者:Jay_1989
链接:https://blog.csdn.net/Jay_1989/article/details/53302364