Apache2+SVN
由于 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 或其它,就可以方便地通过浏览器进行代码浏览了。

一个字,非常牛B
Comment by Lcs — April 19, 2006 @ 10:34 am
lcs 好久不见了,哈
Comment by Nio — April 20, 2006 @ 11:05 am
Nio:
写的很详细。谢谢了。大A介绍我来看你的blog。 我是PHPchina.cn的管理员hosander。
Comment by hosander — April 30, 2006 @ 4:44 pm
Comment by Nio — April 30, 2006 @ 8:08 pm