安装 Apache+Subversion+ViewVC 学习笔记
原创手记
很长一段时间没有动笔了,今天写点关于工作中的备望录,古人语:“好记性不如个烂笔头”,以备将来遗忘。首先简单介绍各软件的背景,在安装使用过程中需要注意的一些细节,给正准备选择安装使用Apache+Subversion+ViewVC 的朋友一些参考帮助,或已使用过的朋友找回一此回顾,有不足之处,请留言或者评论,万分感谢各位朋友光临!
Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。相传阿帕奇是一个武士,他英勇善战,且战无不胜,被印第安人奉为勇敢和胜利的代表,因此后人便用他的名字为印第安部落命名,而阿帕奇族在印第安史上也以强悍著称。Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。
CVS 在开源软件世界,并行版本系统(CVS)一直是版本控制长久以来的唯一选择。事实证明,这是个正确的选择。CVS本身是自由软件,不加限制的处事风格,对网络化操作的支持(众多身处不同地方的程序员可以共享他们的工作),都非常符合开源世界的协作精神。CVS和它半混乱状态的开发模型已成为开源文化的基石。但是,和其它许多工具一样,CVS开始显露出衰老的迹象。而Subversion,正是以CVS继任者的面目出现的新型版本控制系统。Subversion的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持构建开源软件版本控制系统的方式(以及视觉和感觉上)与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到Subversion不需要作出重大的变革,Subversion确实是非常强大、非常有用和非常灵活的工具。
ViewVC 是一个浏览器接口为CVS 和Subversion颠覆版本管理贮藏库。它引起templatized HTML 提出可航行的目录、修正, 和变动日志目录。它可能显示文件的具体版本并且diffs 在那些版本之间。基本上, ViewVC 比平均原文命令线提供大多数报告象您更加俏丽期望在您的版本管理工具外面的功能。
下面开始详细讲解如何安装的整个集成过程:
在所有的Subversion服务器配置方式中,基于Apache的是最灵活的。虽然配置起来有一点点复杂,但是它提供了其它方式所没有的好处:
安装过程:
安装Apache前,你要有一台运行Windows2000、Windows XP + sp2或Windows2003的电脑。警告:请注意,没安装Service Pack 2的Windows XP将导致错误的网络数据从而破坏你的版本库!
从http://httpd.apache.org/download.cgi最新版本的Apache Web服务器。确保你下载的版本大于2.0.54。2.0.54版本的Apache将不能与Subversion 1.3.xx及以上的版本配合工作。而且,小于2.0.54的Apache也因为在windows上的编译存在一个bug而导致不能与subversion1.2配合使用。
一旦你已经有了Apache的安装程序,你可以双击它,它将引导你完成整个安装过程。路径为自己的个人喜好选择进行安装D:\Apache Group\Apache2。请确保你输入正确的服务器URL(如果你的服务器没有DNS名称,你可以直接输入IP地址)。我建议你将Apache安装成 for all Users,on Port 80,as a service。注意:如果你已经有一个IIS或者其它的程序使用80端口,安装可能会失败。如果是这样,你可以到程序目录下的Apache Group\Apache2\conf目录中找到文件httpd.conf,将其中的Listen 80改成一个不用的或者你非常喜欢的端口,比如Listen 18080。然后重新运行这个安装程序,这次应该不会再有问题了。
安装Apache过程中需要设置以下参数:
Network Domain: 10.83.2.194
Server name: 10.83.2.194
Administrator's Emai Address: yin@mic.com.tw[/email]
配置好之后将完成Apache的安装过程,现在你可以在你的浏览器中键入 http://loccalhost,如果呈现了一个已经配置好的网站,那么祝贺你,你的第一步Apache就安装成功了。
接着安装Subversion:
安装Subversion从这里下载 http://www.iusesvn.com/bbs/download/svn-win32-1.4.0.zip。运行Subversion安装程序,如果安装程序能够识别你已经安装了Apache,那么你的安装基本上就OK了。如果它不能,那么你要做一些额外的手动配置步骤。
注:如果你先安装Apache,再安装Subversion,正常情况下下面的工作Subversion安装程序已经帮你完成了,进入Sibversion的安装目录(通常为你的安装路径,我选择D:\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,将它们拷贝到Apache的modules目录(为你选择安装的路径D:\apache group\apache2\modules)。
从Subversion的安装目录拷贝文件libdb43.dll到Apache的modules目录。
使用如记事本之类的文本编辑器编辑Apache的配置文件(通常为D:\apache group\apache2\conf\httd.conf),修改以下内容:
去掉以下行的注释(将开头的#删除):
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
在LoadModule节的最后添加以下两行,注:如果你先安装Apache,再安装Subversion,正常情况下会自动配置好下面的步骤,如果没有自动配置好,就要手动去添加如下两行设置:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
接着需要建立SVN所需的Repository(保存文档各个版本的数据库)
在服务器端建立一个空目录,比如“E:\SVNProjects\Project1”。建立Repository的具体方式是:在subversion安装目录下的\bin子目录下有一个svnadmin.exe文件,在DOS窗口下进入该\bin目录,并执行“svnadmin create --fs-type bdb E:\SVNProjects\Project1”。之后你会发现原本是空目录的“E:\SVNProjects\Project1”下多出了几个目录和几个文件。这些目录和文件就是用来存储文档各个版本的数据库。
***除了用命令行方式建立Repository外,还可以用TortoiseSVN建立,不过这要求在服务器端也安装TortoiseSVN。建立Repository的具体方式是:在“E:\SVNProjects\Project1”目录上右击鼠标,TortoiseSVN->Create Repository here....,然后弹出一个对话框选择Berkeley Database(BDB),然后点OK按钮。
需要配置Repository才能正常的运行,建立Repository后,还应该对Repository进行配置,主要的目的是控制访问权限和添加Repository的用户。“E:\SVNProjects\Project1\conf\svnserve.conf”文件就是该Repository的配置文件。它是一个典型的INI文件,虽然该文件并不是以INI作为扩展名。用文本编辑器打开它后,可以看见一些文本,该文件以“#”开始的行都是注释行。
将“#[general]”行的“#”删掉,“#anon-access = none”“#auth-access = write”“#password-db = passwd”行也删掉“#”,注意,只是删掉“#”字符,不要把整行都删了。“anon-access = none”是指不允许匿名访问Repository,不管是读操作还是写操作。“auth-access = write”表示认证的访问允许写操作,当然读操作就更允许了。“password-db = passwd”表示用户名及用户密码存在一个叫passwd的文件里,这个文件也在“E:\SVNProjects\Project1\conf”目录下,用文本编辑器打开后,将“# [users]”的“#”字符删掉,然后在文件的最后添加一个新行,在该行写上用户名和密码,格式为“xxxx = yyyy”其中“xxxx”表示用户名,“yyyy”表示密码,一行只能设定一个用户,要设定多个用户,请再起新行。
启动Subversion服务器
Subversion提供了三种服务器模式,这里介绍其中的一种,它是subversion自带的一种轻量级的服务器,该服务器启动后,在服务器端的3690端口监听客户端的连接请求(这是默认情况下,如果你有其他程序占用了3690端口,可以用“--listen-port”参数指定服务器监听端口)。服务器的具体启动方式是:在subversion安装目录下的\bin子目录下有一个svnserve.exe文件,该文件运行时可带参数,常用的参数有两个一个是“-d”,该参数表明服务器作为一个精灵进程一直运行,直到手动结束该程序。另一个参数就是“-r”,该参数指定服务器进程寻找Repository的根路径。在DOS窗口下进入\bin目录,并执行:
“svnserve.exe -d -r E:\SVNProjects”。服务器这时就启动了。“-r E:\SVNProjects”参数的作用是:当在客户端用“svn://xxx/project1”(xxx可以是服务器端主机名,也可以是服务器端的ip地址)访问服务器的Repository时,服务器会知道你要访问的Repository路径是“E:\SVNProjects\Project1”。如果当我有两个完全不相干的项目要进行版本控制时,可以再建立一个空目录 “E:\SVNProjects\Project2”,并在其中再建立一个Repository,此时客户端就可以用“svn://xxx/project2”访问“E:\SVNProjects\Project2”下的Repository。至此,恭喜你SVN服务器端配置也就完毕了。
接下来是三软件安装集成过程:
现在,你已经安装了Apache和Subversion,但是Apache还不知道如果处理像TortoiseSVN一样的Subversion客户端。要让Apache知道哪个URL将被Subversion使用,你要像下面这样编辑Apache的配置文件(通常在D:\apache group\apache2\conf\httpd.conf):
在配置文件的最后添加下面这些行:
<Location /svn>
DAV svn
SVNParentPath D:\SVN
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:\passwd
#AuthzSVNAccessFile D:\svnaccessfile
Require valid-user
</Location>
这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。
要创建passwd文件,可以打开命令行(DOS窗口),将当前目录切换到apache2目录(通常为D:\apache group\apache2),然后打入以下命令以创建文件:
bin\htpasswd -c passwd <username>
此命令执行bin目录下的htpasswd.exe来创建一个密码文件,重启Apache服务。
将你的浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你之前创建的Subversion版本库)。如果一切正常,你将被提示输入用户名密码,输入正确的用户名密码后你就可以看到版本库中的内容了。
对你刚刚输入的apache配置作一些简短的说明:
<Location /svn>
意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库
DAV svn
告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块
SVNListParentPath on
在Subversion 1.4及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库
SVNParentPath D:\SVN
告诉Subversion在目录D:\SVN下寻找版本库
AuthType Basic
启用基本的验证,比如用户名/密码对
AuthName "Subversion repositories"
当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
AuthUserFile D:\passwd
指定D:\passwd用为密码文件用来验证用户的用户名及密码
AuthzSVNAccessFile D:\svnaccessfile
指定D:\svnaccessfile来限定各个用户或组在版本库中目录的访问权限
Require valid-user
限定用户只有输入正确的用户名及密码后才能访问这个路径
如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:
#AuthzSVNAccessFile D:\svnaccessfile
然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:
# 为所有库指定默认访问规则
# 所有人可以读,管理员可以写,危险分子没有任何权限
以上介绍的配置为Apache多库方式,即一个location可以同时为多个版本库服务,
假设你的ip为127.0.0.1,在D:\SVN目录下建了两个版本库,proj1和proj2
可以分别用下面两个url来访问你的版本库
http://127.0.0.1/svn/proj1 |