Windows平台Apache和Subversion集成安装与配置

Subversion (SVN) 相关介绍请 Google & Baidu
一、下载
1,apache_2.0.63-win32-x86-no_ssl.msi
下载:http://apache.mirror.phpchina.com/httpd/binaries/win32/apache_2.0.63-win32-x86-no_ssl.msi
2,svn-1.4.5-setup.exe
下载地址:http://subversion.tigris.org/files/documents/15/39559/svn-1.4.5-setup.exe
好了,准备的两个软件都下载下来以后,就可以开始安装了.
二、安装
Subversion提供了5种访问版本库的方式:
1)直接版本库访问。客户端使用file:///打头的URL访问存储在本地磁盘上的版本库。这种情况下几乎不需要其它的配置即可访问,缺陷是版本库必须在本地磁盘上,而且没有用户授权管理。
2)svnserve。在Subversion的手册中介绍:这是一个轻型的服务器,可以同客户端通过在TCP/IP基础上的自定义有状态协议通信。它默认使用3690端口并采用自定义的协议来提供服务,客户端使用svn://打头的URL访问服务器上的资源。
3)Apache+mod_dav_svn。这种方式更灵活(例如无须开放额外的端口),但它的配置会复杂一些。Subversion通过Apache使用WebDAV协议来提供服务,客户端使用标准的http://打头的URL访问服务器上的资源。
4)svnserve+SSH。在第二种方式的基础上增加了SSH封装以提高安全性,客户端使用svn+ssh://打头的URL访问服务器资源。
5)Apache+mod_dav_svn+SSL。在第三种方式的基础上增加了SSL加密,客户端使用https://打头的URL访问服务器上的资源。
关于各种访问方式更详细的信息请查阅Subversion的手册,本文暂时只第三种方式
1.Apache的安装:
首先安装apache,一般来说直接点下一步就可以了,在设置domain以及host的时候,设置为localhost就可以了,Email你可以填你自己的Email,也可以随便填一个.安装apache要注意的是,你的电脑上80端口不能被占用,否则你的http服务是启动不起来的。装好apache以后,你可以在浏览器的地址栏输入http://localhost看看,是否安装成功,如果安装成功的话,这个时候浏览器里面应该是可以看到一个页面的.
2.安装SVN
安装svn-1.4.5-setup.exe,也很简单,一步一步点下步就可以了,在安装的过程中,它会默认选中一些选项,其中就有一个是是否对apache的HTTP服务器提供支持的选项,这个默认是勾上的,不要去反选它,其它的你可以反选掉.然后svn就宣布安装成功了.你可以到CMD下面去试一下svn这个命令,如果有输出,则说明安装成功了,如果提示svn 不是内部或外部命令,也不是可运行的程序或批处理文件。那就说明没有装好.或者没有把这个命令加入到path中,所以最好的办法是到svn的安装目录下的bin里面去看一下.
两者都装好了以后,就开始配置。
三、配置
1.首先要建立一个数据仓库,我们假设建在E盘,数据仓库最好不要建在C盘,因为C盘重装系统以后就格了.我们先在E盘下面建立一个目录叫svn,然后在E:\svn下面再建立一个我们专门放我们工程的目录,比如叫MyProject.于是我们在E盘下面就有了这个一个文件夹:E:\svn\MyProject,然后我们用svnadmin的命令,使这个文件夹变成我们的数据仓库,命令如下:
svnadmin create E:\svn\MyProject

如果运行成功的话,什么也没有输出。
下面数据仓库目录的结构
E:\svn\MyProject
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks
其中conf下面有三个文件:
authz
passwd
svnserve.conf
其中的“svnserve.conf”是这个版本库的配置文件,svnserve.conf中提供了5个选项:
anon-access 指定匿名用户对版本库的访问权限,可以是read,write或none
auth-access 指定授权用户对版本库的访问权限,可以是read,write或none
password-db 保存用户名与密码的文件,默认为同目录里的passwd。注意该文件是明文的
authz-db 保存版本库的目录授权信息的文件,默认为同目录里的authz。
realm 为版本库指定一个用于验证的域名。如果不同的版本库使用了相同的验证域名,则它们的passwd文件应该是一样的,反之亦然
默认情况下以上选项均被注释掉了,在使用前需要去掉行首的#号,并进行适当的配置。如果打算仅允许客户端通过http:(或file:)+URL的方式访问,该文件不起作用,可以不理睬。
我们使用“svnserve.conf”同目录的passwd和authz,其中的password-db指定了用户密码文件,authz-db是我们的授权文件
2.我们打开conf文件夹,然后再打开svnserve.conf文件,找到如下行
#password-db = passwd
然后把它前面的#去掉,表示MyProject是需要密码验证的.但是我们密码设在哪里呢,这个时候我们再打开conf文件夹下面的passwd文件,用文本编辑器打开,在[users]下面加上我们需要启动的人员的用户和密码,比如
[users]
admin=admin
root=toor
这样的话我们就启动了两个用户,一个叫admin,密码是admin,一个叫root,密码是toor.然后我们保存passwd文件.
3.我们再建一个文件,叫access.auth,这个文件是设置访问权限的,里面内容如下:
[MyProject:/]
root = rw
[MyProject:/module1]
admin=rw
root=rw
这表示,MyProject下面的所有子目录root都是有权限读写的,但是admin只有权限读写此项目下面的module1目录,这个各自的访问权限就分的更细致了。
4.现在我们就来生成users.auth文件.
进入apache的安装目录的bin文件夹,输入如下命令:
D:\Program Files\Apache Group\Apache2\bin>htpasswd -cb users.auth root toor
Automatically using MD5 format.
Adding password for user hadeslee
D:\Program Files\Apache Group\Apache2\bin>
我们就会发现在bin目录生成了users.auth,我们可以看到,root用户名已经被添加进去了,密码是用MD5加密过的.然后我们还要增加用户呢?
可以用如下方法:
D:\Program Files\Apache Group\Apache2\bin>htpasswd -b users.auth admin admin
Automatically using MD5 format.
Adding password for user tom
D:\Program Files\Apache Group\Apache2\bin>
只是在生成密码的时候,小了一个c的参数,因为c表示重新生成一个这样的文件,我们第一次的时候是要加的,后面我们要添加用户的时候,就不用这个c了.然后打开users.auth,会发现两个用户都已经在里面了。我们把users.auth移到E:/svn/MyProject/conf/里面去,使我们上面的设置生效.
5.我们现在开始设置apache,使它能和subvertion一起工作.
首先来到Subersion的安装目录,进入它的bin目录,找到如下两个文件:
mod_authz_svn.so
mod_dav_svn.so
我们把这两个文件复制一下,粘帖到apache的安装目录下的modules文件中,然后我们再打开apache安装目录下的conf文件夹,打开httpd.conf文件.增加如下两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
注意:由于dav_svn需要dav_module的支持,所以要确保下面这一行没有被注释,并且保证在dav_svn之前加载:
LoadModule dav_module modules/mod_dav.so
模块的设置就完成了,下面我们要设置SVN的目录,以使我们的apache能知道访问不同的URL的时候,它去哪里寻找这个URL所对应的SVN目录.
在httpd.conf文件中,再增加如下内容:

DAV svn
SVNPath E:/svn/MyProject
AuthzSVNAccessFile E:/svn/MyProject/conf/access.auth
Satisfy Any
Require valid-user
AuthType Basic
AuthName “Subversion repositories”
AuthUserFile E:/svn/MyProject/conf/users.auth
Require valid-user

每个选项的含义:

要求Apache将路径中以/svn/开头的部分交给该段中定义的代理处理
DAV svn 要求Apache将指定的路径交给指定的DAV提供者(此处为svn)处理
SVNParentPath 指定存放Subversion版本库的完整目录。如果只使用应该版本库,可以用SVNPath选项而不是本选项
AuthType 指定系统使用的认证类型。
AuthType Basic使用基本的用户名+密码的认证方式。保存用户名和密码的文件由AuthUserFile选项指定AuthName 指定系统请求用户认证时显示给客户端的说明信息
AuthUserFile 保存系统中允许的用户名及其密码。该文件通常用Apache的htpasswd工具维护
AuthzSVNAccessFile 保存版本库的访问权限定义。
Require valid-user 要求访问版本库时必须提供合法的用户名和密码,禁止匿名访问
6。我们的设置就完成了.重新启动Apache 和 svnservice ,在浏览器中打开http://localhost/svn/MyProject
查看是否成功了
7。我们还可以给SVN创建服务
sc create SVNservice binpath= “D:\Subversion\bin\svnserve.exe –service -r D:\svn” displayname= “SVNService” depend= Tcpip
D:\Subversion\bin\ SVN目录
D:\svn 版本库目
可以增加”start= auto”选项
另外,如果路径中包括空格,一定要用“\”处理“””号,例如上面的例子中如果svnserve.exe在“C:\program files\subversion\”中,则命令应该写为“binpath= “\”C:\program files\subversion\bin\svnserve.exe\””(“”中的内容),整个命令如下:
sc create SVNservice binpath= “\”C:\program files\subversion\bin\svnserve.exe –service -r D:\svn” displayname= “SVNService” depend= Tcpip
其次,sc对选项的格式还有要求,例如“depend= Tcpip”不能写为“depend = Tcpip”或“depend=Tcpip”,也就是“=”前不能有空各,而后面必须有空格。
PS:
如果以后我们还要加入其它的项目,可以有两种解决方式
1)把以后的项目也导入到我们的MyProject的仓库中,这个的话,就不用改什么配置了
2)新建一个数据仓库,然后只要按上面的步骤,把新的设置放到httpd.conf里面就可以了.
当然,验证文件,访问权限文件,还有访问SVN的密码都要自己按上面的方法再设一遍.
3)如果要删除SVN服务 sc delete SVNService
4)版本库的备份请查看官方指南
svnadmin hotcopy
svnadmin dump
svnsync
5)推荐使用图形化的SVN客户端TortoiseSVN
官方网站为http://tortoisesvn.tigris.org/ 注意选择与SVN服务器配套的版本

声明: 本站遵循 知识共享署名-非商业协议CC2.5 共享协议. 转载请注明转自 杰趣网志
保存本页为PDF文档

没有评论 您有什么意见?

欢迎您在本站发表您的意见或见解!求提高!