Subversion安装配置

安装之前先which svn,查找系统中是否有svn命令。若找不到该命令,则欢迎往下看。

首先是最简单的svn安装方式,即yum安装

1
yum install svn -y

但通过此方式安装,获得的版本比较低。

其次便是通过编译源码完成安装

1.下载最新的subversion源码(截止2014/05/19,最新版为1.8.9)

1
wget -c http://mirrors.hust.edu.cn/apache/subversion/subversion-1.8.9.tar.gz

2.解压subversion

1
tar xzf subversion-1.8.9.tar.gz

3.下载sqlite并解压

1
2
wget -c http://www.sqlite.org/sqlite-amalgamation-3071501.zip
unzip sqlite-amalgamation-3071501.zip

4.将sqlite-amalgamation-3071501中的所有文件复制到subversion-1.8.9/sqlite-amalgamation文件夹(sqlite-amalgamation为手动新建)

5.下载scons并安装,然后通过scons安装serf以使svn支持http、https协议(Subversion no longer supports the neon http library with 1.8 and has moved exclusively to using the serf http library)

scons官网:http://www.scons.org/

serf官网:https://code.google.com/p/serf/

1
2
3
4
5
6
rpm -ivh scons-2.3.1-1.noarch.rpm
(注:若使用的是ubuntu系统,则在scons官网下载scons-local package的prior stable包,并直接使用文件路径安装)
#进入serf源码包目录
scons PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util
#/tmp/scons/scons.py PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-utile
scons install

6.进入subversion源码包目录,编译、安装

1
2
./configure --prefix=/usr/local/webserver/subversion --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-zlib --with-apxs=/usr/local/webserver/apache2/bin/apxs --enable-maintainer-mode --enable-mod-activation --with-serf=/usr/local/serf
make && make install

启动或安装时报错svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or directory,则cp /usr/local/serf/lib/libserf-1.so.1 /usr/local/webserver/subversion/lib并重新安装

安装完毕,查看httpd.conf中是否有dav_svn_module以及authz_svn_module拓展,并且可以使用命令svn –version查看svn版本信息。

若使用svn –version提示无此命令,可以编辑profile文件添加变量环境

1
vim /etc/profile

在文末添加svn安装位置

1
2
3
PATH=/usr/local/webserver/subversion/lib:/usr/local/webserver/subversion/bin:$PATH
export PATH
source /etc/profile //使环境立即生效

此时使用svn –version应该能看到想过信息了,如下图(我当初安装的是1.8.8):


 

补充:配置svn使用svn协议和HTTP协议访问(2014/11/10)

svn协议访问:

新建一个文件夹存放项目库,比如mkdir -p /data/svndata

使用命令创建新项目test:

1
svnadmin create /data/svndata/test

编辑test/conf/文件夹下svnserve.conf、passwd、authz文件

清除svnserve.conf中anon-access = read、auth-access = write、password-db = passwd、authz-db = authz前面的#和空格符。尤其是空格符,因为svn不识别配置文件中的空格符。

passwd文件中在文末添加svn用户,格式为用户=密码

authz文件中[groups]标签下可以自定义svn用户各属于哪些组,格式为“组名=用户名,用户名,用户名…,用户名”。文末新增类似于这样的[/]标签,并在该标签下设置各组的权限,格式为 @组名=rw等,其中/代表项目库的根目录。若某些文件夹只允许某个组读写,可新建标签,并编辑权限,如下

1
2
3
[/foo]
@程序=rw
*=

其中*代表所有人,=后不写rw代表没有读写权限

三大金刚编辑完毕,便可以使用命令启动svn服务。

1
svnserve -d -r /data/svndata

启动完毕可以在windows上使用TortoiseSVN的repo-browser检测连通性,连接地址为svn://ipaddress/test。若防火墙运行中且没有对svn的端口放行,记得编辑防火墙文件。
 

HTTP协议访问:

添加svn验证文件svn-auth.conf,该文件可以指定至任何位置,如/home/svnprofile,该文件与上面的passwd类似,不过使用Apache组件htpasswd命令生成用户的加密密码,命令如下

1
../apache2/bin/htpasswd -cm /home/svnprofile/svn-auth.conf admin

根据提示便可以新建admin用户,若需要新增用户,则上面的命令中,需要去掉c选项,否则会覆盖原文件,如

1
../apache2/bin/htpasswd -m /home/svnprofile/svn-auth.conf test

新增一个test用户

添加svn权限控制文件svn-access.conf,该文件同样可以指定任意位置。并且内容格式与上面的authz类似,主要包括如下内容:

1
2
3
4
[groups]
admin = admin
[/]
@admin=rw

编辑Apache配置文件httpd.conf,去掉LoadModule dav_module modules/mod_dav.so前的#,启用该组件。并在文末添加如下内容:

1
2
3
4
5
6
7
8
9
10
<Location /svn>
DAV svn
SVNParentPath /data/svndata
AuthType Basic
AuthName "SVN server"
AuthUserFile /home/svnprofile/svn-auth.conf
Require valid-user
AuthzSVNAccessFile /home/svnprofile/svn-access.conf
</Location>
CustomLog logs/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION --该行主要是开启日志记录客户端做了哪些高级操作

CustomLog解释详见:

http://www.subversion.org.cn/svnbook/1.4/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz

运行或重启Apache使更改的配置文件生效,并运行svnserve启动svn服务器。运行成功后可以在浏览器输入连接http://ipaddress/svn/test测试是否可以访问。

这里可以看出,使用HTTP协议和svn协议时,连接地址有些许区别,http连接中,需要在项目库前添加svn/