Linux-CentOS6.9下svn安装
一、安装svn
svn安装
cd /data0/software/
wget http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.12.tar.gz
tar xfvz subversion-1.6.12.tar.gz
tar xfvz subversion-deps-1.6.12.tar.gz
cd subversion-1.6.12
./configure --prefix=/usr/local/svn --without-berkeley-db --with-zlib
make clean
make
make install
cd ../
设置环境变量使svn的几个命令方便调用,也可以不设置,使用全路径
vi /etc/profile 在/etc/profile最后加入
PATH=$PATH:/usr/local/svn/bin
export PATH
svn测试
/usr/local/svn/bin/svn --version
/usr/local/svn/bin/svnserve --version
如果显示如下,svn安装成功:
svnserve,版本 1.6.12 (r955767)
编译于…
二、创建svn仓库及svn配置
创建svn仓库目录 所有的svn仓库都放此目录下
mkdir -p /data0/svndata/data
创建svn配置目录 为了方便统一管理 所有仓库的用户配置都放一起
mkdir -p /data0/svndata/conf
创建两个svn仓库
mkdir -p /data0/svndata/data/repos1
mkdir -p /data0/svndata/data/repos2
/usr/local/svn/bin/svnadmin create /data0/svndata/data/repos1
/usr/local/svn/bin/svnadmin create /data0/svndata/data/repos2
修改svn仓库配置文件
仓库1
vi /data0/svndata/data/repos1/conf/svnserve.conf
内容修改为
[general]
anon-access = none
auth-access = write
password-db = /data0/svndata/conf/pwd.conf
authz-db = /data0/svndata/conf/authz.conf
realm = repos1
仓库2
vi /data0/svndata/data/repos2/conf/svnserve.conf
内容修改为
[general]
anon-access = none
auth-access = write
password-db = /data0/svndata/conf/pwd.conf
authz-db = /data0/svndata/conf/authz.conf
realm = repos2
即除realm = repos2外,其他与版本库1配置文件完全相同。如果有更多的版本库,依此类推。
配置允许访问的svn用户
vi /data0/svndata/conf/pwd.conf
为了简化配置,两个仓库共用1个用户配置文件。如有必要,也可以分开。
注意:对用户配置文件的修改立即生效,不必重启svn。
文件格式如下:
[users]
<用户1> = <密码1>
<用户2> = <密码2>
其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:
[users]
cuber = 12345678
svn1 = 12345678
svn2 = 12345678
配置svn用户访问权限
vi /data0/svndata/conf/authz.conf
为了简化配置,两个仓库共用1个权限配置文件。如有必要,也可以分开。文件中定义用户组和版本库目录权限。
注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/data0/svndata/data。这样,/就是表示对全部版本库设置权限。
repos1:/,表示对版本库1设置权限
repos2:/abc, ,表示对版本库2中的abc项目设置权限
repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限
权限主体可以是用户组、用户或,用户组在前面加@,表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = cuber
[/]
@admin = rw
[repos1:/abc/aaa]
svn1 = rw
[repos2:/pass]
svn2 =
[groups]
admin = cuner,svn1
groupr = svn2
[/]
@admin = rw
@groupr = r
svn配置完毕,删除无用文件
rm -rf /data0/svndata/data/repos1/conf/authz
rm -rf /data0/svndata/data/repos1/conf/passwd
rm -rf /data0/svndata/data/repos2/conf/authz
rm -rf /data0/svndata/data/repos2/conf/passwd
三、启动svn服务
chmod -R 777 /data0/svndata/data/ # 权限
/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /data0/svndata/data/ # 启动
其中
-d # 表示以daemon方式(后台运行)运行
–listen-port 9999 # 表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限
-r /data0/svndata/data/ # 仓库根目录
检查
ps -ef|grep svnserve
# 如果显示如下,即为启动成功:
root 29250 1 0 14:45 ? 00:00:00 /usr/local/svn/bin/svnserve -d --listen-port 9999 -r /data0/svndata/data/
配置开机自动启动
vi /etc/rc.local
在末尾增加以下内容
/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /data0/svndata/data/
修改防火墙配置,增加一行 放22下面
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9999 -j ACCEPT
重启防火墙
service iptables restart
四、问题解决
configure可能存在的问题及解决方法
1. configure: error: could not find library containing RSA_new
o yum install openssl-devel
2. configure: error: no XML parser was found: expat or libxml 2.x required
o yum install expat-devel
3. configure: error: –with-zlib requires an argument.
o 去掉此选项
svn 使用时可能遇到的错误
svn 403错误
1 大小写问题
2 tortoisesvn clear up也没用
3 权限问题 检查vi /data0/svndata/conf/authz.conf 权限配置文件
chmod -R 777 /data0/svndata/data/