前两天给公司安subversion,总是出问题,今天总结一下整个过程,以备将来遗忘.下边是我对在网上的一些文章的添加和补充基础上写的.
我是安装windows版本的subversion,所以先把linux下的简介一下:
1.下载httpd-2.0.*.tar.gz(http://www.apache.org)源代码包
2.下载Subversion-1.0.*.tar.gz(http://subversion.tigris.org/)的源代码包
3.编译安装httpd
# tar xvzf httpd-2.0.*.tar.gz
# cd httpd-2.0.*
# ./configure --enable-dav --enable-so --prefix=/path/to/apache
# make
# make install
# /path/to/apache/bin/apachectl start &
* 注意:以上的前两个参数是必须要加的,你还可以根据您的需要添加其他的参数。后面的参数制定你要把apache安装哪里
打开浏览器http://localhost/,如果有测试页出现则证明已经安装成功(Y)
4.下面安装Subversion
# tar xvzf Subversion-1.0.*.tar.gz
# cd Subversion-1.0.*
# ./configure --with-apxs=/path/to/apache/bin/apxs --prefix=/path/to/subversion
# make
# make install
# mkdir /path/to/repository 创建库文件所在的目录
# cd /path/to/subversion/bin
# ./svnadmin create /path/to/repository/test 创建仓库
去/path/to/repository/test看看是不是多了些文件,如果是则说明Subversion安装成功了
下边是windows版本的安装过程和配置过程,linux下的基本过程差不多!
一. 安装subversion
首先安装subversion1.2.3和图形化客户端TortoiseSVN-1.2.4.4479(该版本的TortoiseSVN针对subversion1.2.3)。subversion在服务器端和客户端都需要安装,TortoiseSVN只要在客户端安装就行。
二 下载并安装apache服务器,一路next.只是在输入domain的时候,如果你没有正式的domain,输入你机子的ip即可.
三 .建立Repository(保存文档各个版本的数据库)
在服务器端建立一个空目录,比如“C:\SVNProjects\Project1”。建立Repository的具体方式是:在subversion安装目录下的\bin子目录下有一个svnadmin.exe文件,在DOS窗口下进入该\bin目录,并执行“svnadmin create --fs-type bdb C:\SVNProjects\Project1”。之后你会发现原本是空目录的“C:\SVNProjects\Project1”下多出了几个目录和几个文件。这些目录和文件就是用来存储文档各个版本的数据库。
***除了用命令行方式建立Repository外,还可以用TortoiseSVN建立,不过这要求在服务器端也安装TortoiseSVN。建立Repository的具体方式是:在“C:\SVNProjects\Project1”目录上右击鼠标,TortoiseSVN->Create Repository here....,然后弹出一个对话框选择Berkeley Database(BDB),然后点OK按钮。
四 .配置Repository
建立Repository后,还应该对Repository进行配置,主要的目的是控制访问权限和添加Repository的用户。“C:\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的文件里,这个文件也在“C:\SVNProjects\Project1\conf”目录下,用文本编辑器打开后,将“# [users]”的“#”字符删掉,然后在文件的最后添加一个新行,在该行写上用户名和密码,格式为“xxxx = yyyy”其中“xxxx”表示用户名,“yyyy”表示密码,一行只能设定一个用户,要设定多个用户,请再起新行。
注意的是如果你不想加身份认证,一样要去掉#[general}前边的#号,我就是没去,结果老是报错说服务器主动拒绝连接,整了两天才发现问题在这.
五 .启动subversion服务器
Subversion提供了三种服务器模式,这里介绍其中的一种,它是subversion自带的一种轻量级的服务器,该服务器启动后,在服务器端的3690端口监听客户端的连接请求(这是默认情况下,如果你有其他程序占用了3690端口,可以用“--listen-port”参数指定服务器监听端口)。服务器的具体启动方式是:在subversion安装目录下的\bin子目录下有一个svnserve.exe文件,该文件运行时可带参数,常用的参数有两个一个是“-d”,该参数表明服务器作为一个精灵进程一直运行,直到手动结束该程序。另一个参数就是“-r”,该参数指定服务器进程寻找Repository的根路径。在DOS窗口下进入\bin目录,并执行:
“svnserve.exe -d -r C:\SVNProjects”。服务器这时就启动了。“-r C:\SVNProjects”参数的作用是:当在客户端用“svn://xxx/project1”(xxx可以是服务器端主机名,也可以是服务器端的ip地址)访问服务器的Repository时,服务器会知道你要访问的Repository路径是“C:\SVNProjects\Project1”。如果当我有两个完全不相干的项目要进行版本控制时,可以再建立一个空目录 “C:\SVNProjects\Project2”,并在其中再建立一个Repository,此时客户端就可以用“svn://xxx/project2”访问“C:\SVNProjects\Project2”下的Repository。至此,服务器端就配置完毕了。
六 下面来修改apache让subversion和apache一起工作
复制subversion"httpd"下的*.so到apache 的安装目录的modules目录中,然后复制subversion"bin"目录中*.dll文件到apache"bin"目录中。
编辑httpd.conf(apache/conf下)去掉
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
前面的";"号并添加下面几行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
修改"/path/to/apache/conf/httpd.conf" 在最下面添加
LoadModule dav_svn_module modules/mod_dav_svn.so(如果已经加载,就注释掉)
<Location /svn>
DAV svn
SVNParentPath /absolute/path/to/repository
</Location>
如果不想让任何人都看到,要在location块内添加如下的代码
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /path/to/svnpasswd.file
Require valid-user
其中svnpasswd.file是通过"htpasswd -cb /path/to/svnpasswd.file username password"来创建的
"Require valid-user"告诉apache在svnpasswd.file中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问