Ubuntu 10.04下搭建SVN+Apache服务

九月 5th, 2010 发表评论 阅读评论

    之前在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+rws 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了。

    关于设置目录权限,更详细的英文说明见http://svnbook.red-bean.com/en/1.1/ch06s04.html

分类: 标签: Ubuntu  SVN  Apache