Apache2+SVN

Posted on 19th April 2006 by Nio in DiggMore, 程序人生

由于 binzy 无法在公司 check out DiggMore 的 CVS,所以下午的时候商量在我的机器上装一个 Subversion,而且这个 Subversion 中的仓库必须可以通过 HTTP 方式操作,晚上回来之后开始折腾,现记录如下。

先安装 Apache2,之前的还是 Apache 1.3.x:

# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc --enable-so --enable-rewrite --enable-dav --enable-dav-fs
# make
# make install

安装 Apache2 的同时还连累了 PHP,只好也一起重新编译。

然后安装 Subversion:

# ./configure --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install

修改 httpd.conf,加入:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

这两个 module 是安装 SVN 时带的。

创建 SVN 仓库:

svnadmin create /path/to/diggmore

注意:需要把仓库的属主、权限设置成 apache 中的 User/Group 可读写访问。

利用 apache 自带的 htpasswd 生成可访问用户的列表文件,这个文件中包含了用户名及其 MD5 之后的密码:

# htpasswd -cm /etc/svn-auth-file nio
New password: *****
Re-type new password: *****
Adding password for user nio

如果还需要添加新的用户,继续使用:

# htpasswd -m /etc/svn-auth-file binzy

注意,这一次不再使用 -c 参数,这个参数是用来新建文件的,所以第二个用户开始就不需要这个参数了,否则会重新创建文件,把第一个用户给去掉了。

接下来做一个简单的配置,使得任何人都可以有读的权限,但只有 diggmore 开发成员可以写,这需要创建一个访问控制文件,假设为 /etc/svn-access-file。文件内容大概如下:

[/]
* = r

[groups]
diggmore = nio, binzy, easy, vicki, freeman, rainx

[diggmore:/]
@diggmore = rw

第一、二行表示任何人都可以读 SVN 仓库,[groups] 用来定义组,我这里定义了一个 diggmore 组,组成员包括 nio, binzy, ….,[diggmore:/] 部分表示 diggmore 仓库中的权限定义,组 diggmore 拥有这个仓库的读写权限。OK,就是这么简单。

现在,回到 httpd.conf,我们还要加一些配置:

<Location /diggmore>
  DAV svn
  # 指定仓库路径
  SVNPath /path/to/diggmore
  # 指定使用的访问控制文件
  AuthzSVNAccessFile /etc/svn-access-file
  # 首先尝试匿名访问,只在有需要的时候才使用基本验证方式验证用户权限
  Satisfy Any
  Require valid-user
  # 使用基本验证
  AuthType Basic
  AuthName "Nio's SVN"
  # 验证使用的用户列表文件
  AuthUserFile /etc/svn-auth-file
</Location>

好了,就这些了,最后别忘了重启 apache 服务。现在你可以通过 http://…./diggmore 的方式访问 SVN 了,当然我的配置有细微差别,所以访问 diggmore 的 SVN,使用这个地址:

http://www.infor96.com/svn/diggmore/

客户端亦相同。现在看着还比较简单,有时间装一个 Trac 或其它,就可以方便地通过浏览器进行代码浏览了。

4 Comments »

  1. 一个字,非常牛B

    Comment by Lcs — April 19, 2006 @ 10:34 am

  2. lcs 好久不见了,哈 :)

    Comment by Nio — April 20, 2006 @ 11:05 am

  3. Nio:

    写的很详细。谢谢了。大A介绍我来看你的blog。 我是PHPchina.cn的管理员hosander。

    Comment by hosander — April 30, 2006 @ 4:44 pm

  4. :) 原来是大A介绍来的,你好,呵呵。

    Comment by Nio — April 30, 2006 @ 8:08 pm

Leave a comment