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 | wget -c http://www.sqlite.org/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 | rpm -ivh scons-2.3.1-1.noarch.rpm |
6.进入subversion源码包目录,编译、安装
1 | ./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 |
启动或安装时报错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 | PATH=/usr/local/webserver/subversion/lib:/usr/local/webserver/subversion/bin:$PATH |
此时使用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 | [/foo] |
其中*代表所有人,=后不写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 | [groups] |
编辑Apache配置文件httpd.conf,去掉LoadModule dav_module modules/mod_dav.so前的#,启用该组件。并在文末添加如下内容:
1 | <Location /svn> |
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/