首页  >> 配置管理  >> CVS/SVN
安装Apache+Subversion+ViewVC学习笔记
作者 yjg021   查看 5772   发表时间 2007/8/2 17:51  【论坛浏览】

安装 Apache+Subversion+ViewVC 学习笔记qbrkjy

qbrkjy
qbrkjy
原创手记qbrkjy
qbrkjy
很长一段时间没有动笔了,今天写点关于工作中的备望录,古人语:“好记性不如个烂笔头”,以备将来遗忘。首先简单介绍各软件的背景,在安装使用过程中需要注意的一些细节,给正准备选择安装使用Apache+Subversion+ViewVC 的朋友一些参考帮助,或已使用过的朋友找回一此回顾,有不足之处,请留言或者评论,万分感谢各位朋友光临!qbrkjy
qbrkjy
Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。相传阿帕奇是一个武士,他英勇善战,且战无不胜,被印第安人奉为勇敢和胜利的代表,因此后人便用他的名字为印第安部落命名,而阿帕奇族在印第安史上也以强悍著称。Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。qbrkjy
qbrkjy
CVS 在开源软件世界,并行版本系统(CVS)一直是版本控制长久以来的唯一选择。事实证明,这是个正确的选择。CVS本身是自由软件,不加限制的处事风格,对网络化操作的支持(众多身处不同地方的程序员可以共享他们的工作),都非常符合开源世界的协作精神。CVS和它半混乱状态的开发模型已成为开源文化的基石。但是,和其它许多工具一样,CVS开始显露出衰老的迹象。而Subversion,正是以CVS继任者的面目出现的新型版本控制系统。Subversion的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持构建开源软件版本控制系统的方式(以及视觉和感觉上)与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到Subversion不需要作出重大的变革,Subversion确实是非常强大、非常有用和非常灵活的工具。qbrkjy
qbrkjy
ViewVC 是一个浏览器接口为CVS 和Subversion颠覆版本管理贮藏库。它引起templatized HTML 提出可航行的目录、修正, 和变动日志目录。它可能显示文件的具体版本并且diffs 在那些版本之间。基本上, ViewVC 比平均原文命令线提供大多数报告象您更加俏丽期望在您的版本管理工具外面的功能。qbrkjy
qbrkjy
qbrkjy
******************************************************************************************qbrkjy
qbrkjy
下面开始详细讲解如何安装的整个集成过程:qbrkjy
qbrkjy
在所有的Subversion服务器配置方式中,基于Apache的是最灵活的。虽然配置起来有一点点复杂,但是它提供了其它方式所没有的好处:qbrkjy
qbrkjy
安装过程:qbrkjy
安装Apache前,你要有一台运行Windows2000、Windows XP + sp2或Windows2003的电脑。警告:请注意,没安装Service Pack 2的Windows XP将导致错误的网络数据从而破坏你的版本库!qbrkjy
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配合使用。qbrkjy
qbrkjy
一旦你已经有了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。然后重新运行这个安装程序,这次应该不会再有问题了。qbrkjy
qbrkjy
安装Apache过程中需要设置以下参数:qbrkjy
Network Domain: 10.83.2.194qbrkjy
Server name: 10.83.2.194qbrkjy
Administrator's Emai Address: bill.yin@mic.com.twqbrkjy
qbrkjy
配置好之后将完成Apache的安装过程,现在你可以在你的浏览器中键入 http://loccalhost,如果呈现了一个已经配置好的网站,那么祝贺你,你的第一步Apache就安装成功了。qbrkjy
qbrkjy
qbrkjy
接着安装Subversion:qbrkjy
qbrkjy
安装Subversion从这里下载 http://www.iusesvn.com/bbs/download/svn-win32-1.4.0.zip。运行Subversion安装程序,如果安装程序能够识别你已经安装了Apache,那么你的安装基本上就OK了。如果它不能,那么你要做一些额外的手动配置步骤。qbrkjy
注:如果你先安装Apache,再安装Subversion,正常情况下下面的工作Subversion安装程序已经帮你完成了,进入Sibversion的安装目录(通常为你的安装路径,我选择D:\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,将它们拷贝到Apache的modules目录(为你选择安装的路径D:\apache group\apache2\modules)。qbrkjy
qbrkjy
从Subversion的安装目录拷贝文件libdb43.dll到Apache的modules目录。qbrkjy
使用如记事本之类的文本编辑器编辑Apache的配置文件(通常为D:\apache group\apache2\conf\httd.conf),修改以下内容:qbrkjy
qbrkjy
去掉以下行的注释(将开头的#删除):qbrkjy
#LoadModule dav_fs_module modules/mod_dav_fs.so qbrkjy
#LoadModule dav_module modules/mod_dav.soqbrkjy
qbrkjy
qbrkjy
在LoadModule节的最后添加以下两行,注:如果你先安装Apache,再安装Subversion,正常情况下会自动配置好下面的步骤,如果没有自动配置好,就要手动去添加如下两行设置:qbrkjy
qbrkjy
qbrkjy
LoadModule dav_svn_module modules/mod_dav_svn.so qbrkjy
LoadModule authz_svn_module modules/mod_authz_svn.soqbrkjy
qbrkjy
接着需要建立SVN所需的Repository(保存文档各个版本的数据库) qbrkjy
在服务器端建立一个空目录,比如“E:\SVNProjects\Project1”。建立Repository的具体方式是:在subversion安装目录下的\bin子目录下有一个svnadmin.exe文件,在DOS窗口下进入该\bin目录,并执行“svnadmin create --fs-type bdb E:\SVNProjects\Project1”。之后你会发现原本是空目录的“E:\SVNProjects\Project1”下多出了几个目录和几个文件。这些目录和文件就是用来存储文档各个版本的数据库。 qbrkjy
***除了用命令行方式建立Repository外,还可以用TortoiseSVN建立,不过这要求在服务器端也安装TortoiseSVN。建立Repository的具体方式是:在“E:\SVNProjects\Project1”目录上右击鼠标,TortoiseSVN->Create Repository here....,然后弹出一个对话框选择Berkeley Database(BDB),然后点OK按钮。qbrkjy
qbrkjy
需要配置Repository才能正常的运行,建立Repository后,还应该对Repository进行配置,主要的目的是控制访问权限和添加Repository的用户。“E:\SVNProjects\Project1\conf\svnserve.conf”文件就是该Repository的配置文件。它是一个典型的INI文件,虽然该文件并不是以INI作为扩展名。用文本编辑器打开它后,可以看见一些文本,该文件以“#”开始的行都是注释行。qbrkjy
qbrkjy
将“#[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”表示密码,一行只能设定一个用户,要设定多个用户,请再起新行。qbrkjy
qbrkjy
启动Subversion服务器 qbrkjy
Subversion提供了三种服务器模式,这里介绍其中的一种,它是subversion自带的一种轻量级的服务器,该服务器启动后,在服务器端的3690端口监听客户端的连接请求(这是默认情况下,如果你有其他程序占用了3690端口,可以用“--listen-port”参数指定服务器监听端口)。服务器的具体启动方式是:在subversion安装目录下的\bin子目录下有一个svnserve.exe文件,该文件运行时可带参数,常用的参数有两个一个是“-d”,该参数表明服务器作为一个精灵进程一直运行,直到手动结束该程序。另一个参数就是“-r”,该参数指定服务器进程寻找Repository的根路径。在DOS窗口下进入\bin目录,并执行: qbrkjy
“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服务器端配置也就完毕了。qbrkjy
qbrkjy
接下来是三软件安装集成过程:qbrkjy
现在,你已经安装了Apache和Subversion,但是Apache还不知道如果处理像TortoiseSVN一样的Subversion客户端。要让Apache知道哪个URL将被Subversion使用,你要像下面这样编辑Apache的配置文件(通常在D:\apache group\apache2\conf\httpd.conf):qbrkjy
qbrkjy
在配置文件的最后添加下面这些行:qbrkjy
qbrkjy
qbrkjy
qbrkjy
DAV svnqbrkjy
SVNParentPath D:\SVN qbrkjy
AuthType Basic qbrkjy
AuthName "Subversion repositories" qbrkjy
AuthUserFile D:\passwd qbrkjy
#AuthzSVNAccessFile D:\svnaccessfile qbrkjy
Require valid-user qbrkjy
qbrkjy
qbrkjy
这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。qbrkjy
要创建passwd文件,可以打开命令行(DOS窗口),将当前目录切换到apache2目录(通常为D:\apache group\apache2),然后打入以下命令以创建文件:qbrkjy
qbrkjy
qbrkjy
bin\htpasswd -c passwd qbrkjy
qbrkjy
此命令执行bin目录下的htpasswd.exe来创建一个密码文件,重启Apache服务。qbrkjy
qbrkjy
将你的浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你之前创建的Subversion版本库)。如果一切正常,你将被提示输入用户名密码,输入正确的用户名密码后你就可以看到版本库中的内容了。qbrkjy
qbrkjy
对你刚刚输入的apache配置作一些简短的说明:qbrkjy
qbrkjy
qbrkjy
意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库qbrkjy
DAV svnqbrkjy
告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块qbrkjy
SVNListParentPath onqbrkjy
在Subversion 1.4及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库qbrkjy
SVNParentPath D:\SVNqbrkjy
告诉Subversion在目录D:\SVN下寻找版本库qbrkjy
AuthType Basicqbrkjy
启用基本的验证,比如用户名/密码对qbrkjy
AuthName "Subversion repositories"qbrkjy
当一个验证对话框弹出时,告诉用户这个验证是用来做什么的qbrkjy
AuthUserFile D:\passwdqbrkjy
指定D:\passwd用为密码文件用来验证用户的用户名及密码qbrkjy
AuthzSVNAccessFile D:\svnaccessfileqbrkjy
指定D:\svnaccessfile来限定各个用户或组在版本库中目录的访问权限qbrkjy
Require valid-userqbrkjy
限定用户只有输入正确的用户名及密码后才能访问这个路径qbrkjy
qbrkjy
如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:qbrkjy
qbrkjy
qbrkjy
#AuthzSVNAccessFile D:\svnaccessfileqbrkjy
qbrkjy
然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:qbrkjy
qbrkjy
qbrkjy
[groups]qbrkjy
admin = john, kateqbrkjy
devteam1 = john, rachel, sallyqbrkjy
devteam2 = kate, peter, markqbrkjy
docs = bob, jane, mikeqbrkjy
training = zakqbrkjy
qbrkjy
# 为所有库指定默认访问规则qbrkjy
# 所有人可以读,管理员可以写,危险分子没有任何权限qbrkjy
[/]qbrkjy
* = rqbrkjy
@admin = rwqbrkjy
dangerman =qbrkjy
qbrkjy
# 允许开发人员可以完全访问他们的项目版本库qbrkjy
[proj1:/]qbrkjy
@devteam1 = rwqbrkjy
[proj2:/]qbrkjy
@devteam2 = rwqbrkjy
[bigproj:/]qbrkjy
@devteam1 = rwqbrkjy
@devteam2 = rwqbrkjy
trevor = rwqbrkjy
qbrkjy
# 文档编写人员对所有的docs目录有写权限qbrkjy
[/trunk/doc]qbrkjy
@docs = rwqbrkjy
qbrkjy
# 培训人员可以完全访问培训版本库qbrkjy
[TrainingRepos:/]qbrkjy
@training = rwqbrkjy
qbrkjy
以上介绍的配置为Apache多库方式,即一个location可以同时为多个版本库服务,qbrkjy
假设你的ip为127.0.0.1,在D:\SVN目录下建了两个版本库,proj1和proj2qbrkjy
可以分别用下面两个url来访问你的版本库qbrkjy
http://127.0.0.1/svn/proj1qbrkjy
qbrkjy
qbrkjy
接着在安装ViewVC:qbrkjy
1. 既然装了Subversion,那就学以致用,直接从http://viewvc.tigris.org/svn/viewvc/trunk/检出个最新的版本下来就行,或者到http://www.viewvc.org/nightly/下载个打包的版本;qbrkjy
2. 如果你有阅读Readme的习惯,那恭喜你,基本上完成基本的安装配置是没有问题啦;当然,你一定要看完整个REQUIREMENTS这一节再决定下载安装Python的什么版本,很不幸,Subervsion现在提供的Python包(Python bindings)只支持Pythong 2.3,所以,如果你一开始下载安装的是Python 2.4,就得重新下载安装了:):qbrkjy
Subversion Python Bindings: http://subversion.tigris.org/ser ... entList?folderID=91qbrkjy
Python 2.3: http://www.python.org/ftp/python/2.3.5/Python-2.3.5.exeqbrkjy
pywin32: http://prdownloads.sourceforge.n ... -py2.2.exe?downloadqbrkjy
3. 安装好这些后,将Python的安装目录添加到系统路径中;qbrkjy
4. 在刚才下载的ViewVC目录下执行:python viewvc-install,第一个提示后指定ViewVC的安装目录,第二个提示直接回车就行。qbrkjy
qbrkjy
ViewVC基本配置qbrkjy
qbrkjy
由于ViewVC自带服务程序,因此,最好是先启动ViewVC服务程序,如果ViewVC自己运行正常的话,那就不用考虑ViewVC的配置问题了,想当初俺就没有充分利用这一点,而在IIS和ViewVC之间反复修改参数,都不知道是怎么死的。qbrkjy
1. ViewVC最简单配置qbrkjy
打开viewvc.conf,修改下面几行:qbrkjy
将cvs_roots = cvs: /home/cvsroot注释掉;qbrkjy
#svn_roots = svn: /home/svnrepos 改成类似于 svn_roots = mytest: C:\svn_repos\mytest,其中mytest是你指定的仓库名,冒号后面跟的是仓库所在的路径;qbrkjy
default_root = cvs注释掉,这样你至少可以看到仓库列表。qbrkjy
2. 双击ViewVC\bin下的standalone.py,就可以启动ViewVC自带的Web服务,然后在IE中输入http://localhost:7467/viewvc就应该可以看到仓库列表了,到这一步为止,我没有碰到什么障碍,所以,没什么可以提示的了;qbrkjy
3. 点击任何一个仓库,就应该可以看到仓库中的目录或文件了,但是,如果你在IE中看到如下的提示:qbrkjy
ImportError: No module named svn 那说明你没有安装Subversion的Python包,或者将其放到了Subversion的目录下了;qbrkjy
'module' object has no attribute 'SubversionRepository' 那说明你将Subversion的Python包复制到了viewvc的vclib下,并且覆盖掉了viewvc自己的文件;那么,要怎样安装这个包呢,ok,将其复制到ViewVC或者Python的lib目录下吧,唉,当初整这个也费了我不少周折,惭愧,谁叫我是个Python盲呢:qbrkjy
qbrkjy
[ 本帖最后由 yjg021 于 2007-8-3 11:14 编辑 ]

序号 评论者 共有评论 29   【论坛浏览】  【发表评论】 评论时间
1 懂你 写的非常详细,可见楼主下了不少功夫,已设为精华帖子。

希望楼主继续努力。
2007/8/2 18:27
2 PCplayer 写得不错,楼主参考了http://www.iusesvn.com/bbs/thread-158-1-1.html
希望能注明参考的文章,谢谢

[ 本帖最后由 PCplayer 于 2007-8-2 21:18 编辑 ]
2007/8/2 21:16
3 yjg021 回复 #3 PCplayer 的帖子
:4:: 在动手安装之前做了很多的功课,参考了很多的文献,但讲得不很全面,不能把重点细节讲清楚,在安装过程中就会遇到很多问题,所以本人就动手实践安装的整个过程,希望给更多的朋友一些帮助,才写下的备望录,希望各位点评指正!
2007/8/3 11:06
4 jwslsa 真的很有帮助啊,感谢了 2007/8/10 14:47
5 Alice_Zhou 很有帮助,谢谢楼主了 2007/8/13 15:55
6 zjnbshifox 感谢你的帖子,对我帮助非常大,最近在看svn和cc准备选择一个 2007/8/17 21:36
7 caxia 好样的。
很难得实用文章。
2007/8/28 16:41
8 yunyun123 Subversion Python Bindings: http://subversion.tigris.org/ser ... entList?folderID=91
Python 2.3: http://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe

pywin32: http://prdownloads.sourceforge.n ... -py2.2.exe?download


我培植的时候有个问题,第二个软件python2.3.5版本是不能支持第三个软件 pywin32的,请问楼主怎么解决的??
2007/8/29 14:14
9 yunyun123 更正为:http://sourceforge.net/project/d ... -py2.3.exe&85417601

这个pywin32应该可以!!!!!
2007/8/29 14:20
10 yunyun123 安装完后能看到库,但是点击库出现:
Traceback (most recent call last):
File "d:\viewvc\lib\viewvc.py", line 3960, in main
request.run_viewvc()
File "d:\viewvc\lib\viewvc.py", line 294, in run_viewvc
self.auth = setup_authorizer(cfg, self.username, self.repos)
File "d:\viewvc\lib\viewvc.py", line 807, in setup_authorizer
params = cfg.get_authorizer_params(cfg.options.authorizer, rootname)
File "d:\viewvc\lib\config.py", line 177, in get_authorizer_params
params.update(self.parser.items(section))
AttributeError: keys

这样的错误
2007/8/29 14:37
 共有评论数 29  每页显示 10
页码 1/3  |<  <<   1 2 3   >>  >|