/ 中存储网

通过Apache服务器来访问SVN服务的配置过程

2013-09-14 13:57:34 来源:itjs.cn
之前在linux下用subversion搭建过svn服务器,相对比较容易,只要apt-get subversion,然后svnadmin create资源库,修改一下conf文件,svnserve跑起来就可以了,根据网上的教程来就可以。稍微灵活一些的地方是改配置文件,具体如下:

在svn create之后,比如创建了一个myproject项目,myproject目录下会生成许多文件,配置文件位于myproject/conf下。需要改的地方有svnserve.conf, passwd, authz。

首先,svnserve.conf把以下行的注释去掉。

anon-access = read  (匿名用户只读,也可以设成none,不可访问)

    auth-access = write

    password-db = passwd  (svn密码文件,如果有多个项目,建议将该文件放到公共位置)

    authz-db = authz   (目录权限文件,建议同上)

    real = My First Repository    (认证域,相同认证域下的项目使用相同的passwd和authz,暂时不用理会)

 接下来,passwd文件中添加明文的用户名/密码。authz文件中设置别名和用户组,并针对不同目录对不同的用户或组分配权限(r,w,rw)。设置权限时,用户组前面要加@,别名前面要加&。

这样配置好后,就可以通过svn://来访问了。

如果要想通过Apache来访问svn,还需要进行下面的配置。  

  假定Apache服务器已经安装好。

1. 创建一个svn用户组,将www-data(apache的默认用户名)加入到svn组中。

2. 将资源库的owner设成www-data,group设成svn。下面三条用于修改权限

sudo chown -R www-data myproject

    sudo chgrp -R svn myproject

    sudo chmod -R g+rwx myproject 这条命令允许用户对版本库进行读写操作,即可以更新,可以提交

3. 确认libapache2-svn已经安装,/etc/apache2/mods-enabled下面有dav.load,dav_svn.load和dav_svn.conf三个文件。

4. 修改dav_svn.conf文件。去掉下面行的注释。

<Location /svn>   (apache下的位置)

      DAV svn 

      SVNPath /home/svn/myproject   (指明资源库的路径)

      或

      SVNParentPath /home/svn   (如果有多个库,使用该选项)

      SVNListParentPath on     (打开这个选项可以列出ParentPath下面的所有库)

AuthType Basic   (认证类型为基本认证 )

      AuthName "Subversion Repository"    (认证名称,将在IE界面弹出一个对话框,其标题)

      AuthUserFile /etc/apache2/dav_svn.passwd    (认证密码文件)

      # AuthzSVNAcessFile /etc/apache2/dav_svn.authz     (目录权限文件)

Require valid-user    (要求验证用户,即不能匿名访问)

    </Location>

5. 通过sudo htpasswd -c /etc/apache2/dav_svn.passwd abc创建用户abc并按照提示设置密码,网页认证的时候使用该用户名和密码登录。后面再添加用户的时候去掉-c选项。

配好以后就可以通过Http页面来访问SVN了。