建立 Subversion 服务器 - part3
在 Apache 中部署 Subversion 实际上并不比用 svnserve 难多少,它的难点在于一般人没有修改 Apache 配置的权限,如果你有相应的修改权限,那么搭建一个 svn 服务器不是一件难事,我们来看看应该怎么配置。
准备工作
首先确定 Apache 正确安装,mod_dav 和 mov_dav_svn 这两个模块也被启用,在 Debian 系的 Linux 上可以这么安装:
sudo apt-get install apache2 subversion libapache2-svn
在 Windows 平台上,可以下载一个 XAMPP,Apache MySQL PHP 什么的就都有了。
确定 mod_dav 和 mod_dav_svn 被打开:
a2enmod dav dav_svn
基本设置
以上的准备工作做完后,就正式开始了,还是拿 part2 的机器网络环境,同样的例子。
我准备让 repo 的网络访问地址成为 http://192.168.0.1/svnprojects/projectX,
修改 /etc/apache2/conf 下的 httpd.conf,加入如下代码:
<Location /svnprojects>
DAV svn
SVNParentPath /path/to/svnprojects
</Location>
更多详细的<Location>命令用法请参见 Apache 手册,下同。SVNParentPath 命令用来把网络访问地址和 repo 的实际地址对应起来。
这样就设置完了,如果你把 repo 建立好了,现在就已经可以 checkout 了,输入:
svn checkout http://192.168.0.1/svnprojects/project1
设定用户的权限和验证
但这样肯定是不够的,因为还没有设定相应的用户权限,现在不管谁都可以往 repo 里塞东西,为了更好的控制,我们还需要设定访问权限,比如让指定的用户可以 commit,其他的只能 checkout。
因为我们在 Apache 上,所以访问权限的控制就可以直接借用 Apache 的,首先为你的用户设定用户名和密码:
htpasswd -cmb /path/to/passwdfile/passwords user1 test1
这样就把用户名和密码储存在 passwords 中了,加密方式为 MD5。如果需要添加新的用户,
htpasswd -mb /path/to/passwdfile/passwords user2 test2
以此类推。
然后回到我们在 httpd.conf 中添加的代码,修改一下:
<Location>
DAV svn
SVNParentPath /path/to/svnprojects
AuthType Basic
AuthName "Test Repository"
AuthUserFile /path/to/passwdfile/passwords
<LimitExcept GET PROPFIND OPTION REPORT>
Require valid-user
</LimitExcept>
</Location>
在这段代码的控制下,任何人都可以对 repo 进行 checkout,但只有 user1 和 user2 才可以 commit,<LimitExcept> 的作用是控制 HTTP 请求,如果 HTTP 请求是 GET PROPFIND OPTION REPORT 中的一种,则不需要去验证用户。
最后,你需要把 repo 所在的目录和文件的所有权都改成系统中操作 Apache 的用户,这样在 commit 的时候才会被 Apache 认可。在 Ubuntu 中,这个用户叫 www-data:
sudo chown -R www-data /path/to/repo
如果你用其它系统或是用 Windows,可以在 Apache 的配置文件中找到 User 这个命令来知道应该把目录的所有权交给谁。
以上就是一个初步的 Subversion 服务器的搭建,这一篇考虑到实际上用的人可能不多,要用的人估计肯定会自己配置,因此我写的不够细致,比如说没有说到基于 SSL 的设置步骤。如果你确实需要了解,可以联系我,我们一起探讨。
目录
建立 Subversion 服务器 - intro
建立 Subversion 服务器 - part1
建立 Subversion 服务器 - part2
0 Comment(s)
2 Pingback/Trackback(s)
建立 Subversion 服务器 - intro | 巧克力工厂 (Beta5)
June 19th, 2007 at 11:20 pm
1[...] 在 Apache 下建立 subversion 服务器 server, subversion, 教程 [...]
links for 2007-06-20 at catch the digital flow
June 20th, 2007 at 10:31 am
2[...] 建立 Subversion 服务器 - part3 Michael的SVN教程(三) (tags: SVN) 喜欢本文吗?订阅 catch the digital flow,精彩文章一网打尽。 var tabPane1 = new WebFXTabPane( document.getElementById( “tab-pane-1″ ) ); [...]
RSS feed for comments on this post · TrackBack URI
Leave a reply