本配置适用于ubuntu (6.06 dapper)
1.首先安装软件,这里需要两个软件包
sudo apt-get install subversion
sudo apt-get install libapache2-svn
2.然后在本机建立一个仓库
subversion的仓库相当于一个保存文件的数据库。假如我们需要把仓库放在/svn则可以执行以下操作:
sudo mkdir -p /svn
sudo svnadmin create /svn #建立仓库
sudo chown -R www-data:www-data /svn #转移目录所有权,允许apache服务器所使用的用户/组(www-data)读写该目录
3.添加apache web服务器的“虚拟目录”
sudo gedit /etc/apache2/apache2.conf
添加如下一节:
<Location /svn>
DAV svn
SVNPath /svn
AuthType Basic
AuthName "Documentation Team Repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
然后重启服务器
sudo /etc/init.d/apache2 reload (或者 sudo /etc/init.d/apache2 restart )
4.添加帐户
htpasswd2 -c /etc/subversion/passwd [username]
[username]填写你需要的用户名,如果不是第一次添加帐号,则不需要-c参数!此命令会询问你所需要的密码,填入即可。
5.测试
用浏览器浏览http://sever/svn/,看是否可以成功访问。
6. 增加权限
有时候我们需要限制某些用户对目录的访问,比如说我们允许匿名读取目录/svn/a,但是只允许robinvane写它。或者禁止匿名访问目录/svn/b,只允许mpi-developers读写它等等。这个时候我们先修改apache2.conf
sudo gedit /etc/apache2/apache2.conf
<Location /svn>
DAV svn
SVNPath /svn
AuthType Basic
AuthName "Documentation Team Repository"
AuthUserFile /etc/subversion/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Satisfy Any #先尝试匿名访问
Require valid-user #然后使用用户验证登录访问
#</LimitExcept>
AuthzSVNAccessFile /svn/conf/svn-access-file #访问控制文件,在此文件指定访问控制信息
</Location>
然后建立访问控制文件
touch
[svn:/] #指定名称为svn的仓库的访问权限
@mpi-developers=r #允许组mpi-developers读取所有文件
[svn:/parallel_programming_in_c_with_mpi_example] #指定名称为svn的仓库下的parallel_programming_in_c_with_mpi_example目录的访问权限
@mpi-developers=rw #允许组mpi-developers读写所有文件
*=r #允许匿名读取文件
[svn:/robinvane]
robinvane=rw
[svn:/chenxl]
chenxl=rw
[groups] #指定组
mpi-developers=robinvane,chenxl,ysq,solo #建立一个含有robinvane,chenxl,ysq,solo的组
注意,[svn:/parallel_programming_in_c_with_mpi_example] 不能写成 [svn:/parallel_programming_in_c_with_mpi_example/](最后不要多一个/),否则不行。
修改完成之后使用
sudo /etc/init.d/apache2 restart
重启apache服务器即可
7.修改apache2服务器监听端口
校外是无法访问校内的80和21端口的,所以如果我们想校外也可以访问svn版本库,则需要修改apache2服务器的监听端口,方法是把监听端口放入文件/etc/apache2/ports.conf :
sudo vi /etc/apache2/ports.conf ,默认情况下,这是一个空文件,直接加入一行:
Listen 81
保存,然后重启apache2服务器
sudo /etc/init.d/apache2 restart
即可在81端口上监听服务。
此时,如果在修改服务监听端口之前使用过svn co http://address/resproot 获得过工作目录,则需要修改该工作目录所绑定的版本库地址(可以用svn info查看当前版本库的信息),可以使用以下命令:
svn switch --relocate http://xiao/svn http://xiao:81/svn
第一个地址是原来的版本库地址(用svn info可以看到),后面的是新的版本库地址。