自学SVN篇之Windows XP+apache+SVN配置及权限管理
在Windows XP下搭建Apache+SVN的服务器环境来进行版本控制。在此篇分两个部分配置和权限
配置Apache
1. 在windows下安装Apache http server(apache_2.0.55-win32-x86-no_ssl.msi)
运行Apache http server(apache_2.0.55-win32-x86-no_ssl.msi)安装程序,出现如下界面:
2. 出现Apache HTTP Server 2.0.55的安装向导界面,点“Next”继续:
3. 确认同意软件安装使用许可条例,选择“I accept the terms in the license agreement”,点“Next”继续:
4. 将Apache安装到Windows上的使用须知,请阅读完毕后,按“Next”继续
5. 设置系统信息,在Network Domain下填入您的域名(比如:goodwaiter.com),在Server Name下填入您的服务器名称(比如:www.goodwaiter.com,也就是主机名加上域名),在Administrator's Email Address下填入系统管理员的联系电子邮件地址(比如:yinpeng@xinhuanet.com),上述三条信息仅供参考,其中联系电子邮件地址会在当系统故障时提供给访问者,三条信息均可任意填写,无效的也行。下面有两个选择,图片上选择的是为系统所有用户安装,使用默认的80端口,并作为系统服务自动启动;另外一个是仅为当前用户安装,使用端口8080,手动启动。
我在此以自己的机器为服务器设置network Domain(127.0.0.1),Server Name(127.0.0.1),port选择第一项设置为80(注意:如果你装了IIS需要将IIS的端口设置成非80端口或者选择apache端口为8080端口)一般选择如图所示。按“Next”继续。
6. 选择安装类型,Typical为默认安装,Custom为用户自定义安装,我们这里选择Custom,有更多可选项。按“Next”继续
7. 出现选择安装选项界面,如图所示,左键点选“Apache HTTP Server 2.0.55”,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。点选“Change...”,手动指定安装目录。
我这里选择安装在“D:\Apache”,各位自行选取了,一般建议不要安装在操作系统所在盘,免得操作系统坏了之后,还原操作把Apache配置文件也清除了。选“OK”继续。
返回刚才的界面,选“Next”继续。
8. 确认安装选项无误,如果您认为要再检查一遍,可以点“Back”一步步返回检查。点“Install”开始按前面设定的安装选项安装。
9. 正在安装界面,请耐心等待,直到出现下面的画面。
10. 安装向导成功完成,这时右下角状态栏应该出现了下面的这个绿色图标,表示Apache服务已经开始运行,按“Finish”结束Apache的软件安装
11. 我们来熟悉一下这个图标,很方便的,在图标上左键单击,出现如下界面,有“Start(启动)”、“Stop(停止)”、“Restart(重启动)”三个选项,可以很方便的对安装的Apache服务器进行上述操作。
12. 好了现在我们来测试一下按默认配置运行的网站界面,在IE地址栏打“http://127.0.0.1”,点“转到”,就可以看到如下页面,表示Apache服务器已安装成功。
现在开始配置Apache服务器,使它更好的替我们服务,事实上,如果不配置,你的安装目录下的Apache2\htdocs文件夹就是网站的默认根目录,在里面放入文件就可以了。这里我们还是要配置一下,有什么问题或修改,配置始终是要会的,如图所示,“开始”、“所有程序”、“Apache HTTP Server 2.0.55”、“Configure Apache Server”、“Edit the Apache httpd conf Configuration file”,点击打开。
XP的记事本有了些小变化,很实用的一个功能就是可以看到文件内容的行、列位置,按下图所示,点“查看”,勾选“状态栏”,界面右下角就多了个标记,“Ln 78, Col 10”就表示“行 78,列 10”,这样可以迅速的在文件中定位,方便解说。当然,你也可以通过“编辑”,“查找”输入关键字来快速定位。每次配置文件的改变,保存后,必须在 Apache服务器重启动后生效,可以用前面讲的小图标方便的控制服务器随时“重启动”。
现在正式开始配置Apache服务器,“Ln 228”,或者查找关键字“DocumentRoot”(也就是网站根目录),找到如下图所示地方,然后将""内的地址改成你的网站根目录,地址格式请照图上的写,主要是一般文件地址的“\”在Apache里要改成“/”。
“Ln 253”,同样,你也可以通过查找“<DIRECTORY”来定位,以后不再说明,将""内的地址改成跟DOCUMENTROOT的一样。< P>
“Ln321”,DirectoryIndex(目录索引,也就是在仅指定目录的情况下,默认显示的文件名),可以添加很多,系统会根据从左至右的顺序来优先显示,以单个半角空格隔开,比如有些网站的首页是index.htm,就在光标那里加上“index.htm ”文件名是任意的,不一定非得“index.html”,比如“test.php”等,都可以。
这里有一个选择配置选项,以前可能要配置,现在好像修正过来了,不用配置了,就是强制所有输出文件的语言编码,html文件里有语言标记(,这个就是设定文档语言为gb2312)的也会强制转换。如果打开的网页出现乱码,请先检查网页内有没有上述 html语言标记,如果没有,添加上去就能正常显示了。把“# DefaultLanguage nl”前面的“# ”去掉,把“nl”改成你要强制输出的语言,中文是“zh-cn”,保存,关闭。
好了,简单的Apache配置就到此结束了,现在利用先前的小图标重启动,所有的配置就生效了,你的网站就成了一个网站服务器,如果你加载了防火墙,请打开80或8080端口,或者允许Apache程序访问网络,否则别人不能访问。如果你有公网IP(一般ADSL或电话拨号上网的都是),就可以邀请所有能上网的朋友访问使用http://你的IP地址(IP地址查询可访问http://www.goodwaiter.com,查询内容内即是)你的网站了;如果你没有公网IP,也可以把内网IP地址告诉局域网内的其它用户,让他们通过http://你的内网IP地址,访问你的网站。
配置Subversion
Subversion有两种运行方式,一种是基于Apache Http Server,另外一种是Subversion Standalone Server。下面我讲解的是基于Apache Http Server的Subversion,这样做几个好处:A.能使用WebDAV协议。B.能使用浏览器作为客户端工具浏览源码仓库。C.可以很容易的支持到SSPI(Windows域认证)和LDAP(AD?),这些都是Apache本身就支持的。D.能得到比较完善的Apache安全认证系统,比如SSL加密连接。
1. 安装Subversion(svn-1.2.3-setup.exe)安装路径为:D:\Subversion下
2. 检查d:\apache\apache2\modules下是不是已经有了mod_dav_svn.so和mod_authz_svn.so,libdb42.dll这3个文件,如果没有,从D:\Subversion\bin下复制这3个到d:\apache\apache2\modules。如图:
3. 搜索d:\apache\apache2\conf\httpd.conf配置文件中的
LoadModule dav_svn_module "d:/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "d:/Subversion/bin/mod_authz_svn.so"
LoadModule dav_fs_module modules/mod_dav_fs.so
把前面的注释#去掉,如图:
注意:
请先安装Apache,然后再安装Subversion,在安装Subversion过程中它会自动拷贝相应文件到相应目录中,并且修改http.conf文件,然后重新启动apache服务使修改生效。但是我发现现在这个版本的Subversion安装文件可能有个bug,apache的http.conf的配置文件中#LoadModule dav_fs_module modules/mod_dav_fs.so注释没有去掉,所以大家还是小心检查一下。如果你是先安装的Subversion,然后再安装的Apache的,那么上述的步骤一个也不能漏,都需要自己手动完成。
4. 打开d:\apache\apache2\conf\httpd.conf配置文件在末尾处加入以下参数:
<Location /svn>
DAV svn #指定以SVN访问
SVNPath d:\svndata\test #指定根目录位置,此时只要输入http://127.0.0.1/svn就可以直接访问
AuthType Basic
AuthName "Windy SVN"
AuthUserFile d:\svndata\test\passwd #指定用户认证的文件位置
AuthzSVNAccessFile d:\svndata\test\conf\authz #指定授权认真的文件位置
Require valid-user
</Location>
5. 建立仓库
打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
C:\Documents and Settings\administrator> d: //进入D盘(因为我们要在D盘下创建仓库)
D:\> md svndata //创建一个名叫svndata的目录
D:\> cd D:\Subversion\bin //进入subversion/bin目录
D:\Subversion\bin > svnadmin create d:\svndata\test //用svnadmin命令创建名为test的仓库(这条命令成功后,在test下会出现很多文件夹和文件)
D:\Subversion\bin >cd\ //退出到D盘根目录
D:\> cd D:\Apache\Apache2\bin //进入apache\bin目录
创建用户
l 使用MD5加密,创建用户和passwd文件(passwd由apache中的htpasswd创建)
D:\ \Apache\Apache2\bin > htpasswd -cm d:\svndata\test\passwd user1 //用htpasswd命令创建第一个用户(user1),同时生成密码认证文件,c参数为create,m参数为MD5加密方式
New password: ******
Re-type new password: ******
Adding password for user user1 //加入用户成功
C:\Program Files\Apache Group\Apache2\bin> htpasswd -m d:\svndata\test\passwd user2 //用htpasswd命令创建第二个用户(user2),注意如果在这时加入c参数会覆盖掉之前创建的用户及文件。
New password: ******
Re-type new password: ******
Adding password for user user2 //加入用户成功
l 直接在apache配置文件中指定passwd用户认证文件(passwd可以事先在passwd中创建)
打开d:\apache\apache2\conf\httpd.conf配置文件在末尾处修改以下参数:
<Location /svn>
DAV svn
SVNPath d:\svndata\test
AuthType Basic
AuthName "Windy SVN"
AuthUserFile d:\svndata\test\conf\passwd
AuthzSVNAccessFile d:\svndata\test\conf\authz
Require valid-user
</Location>
重新启动apache,进行测试。
用IE打开http://localhost/svn,这时应该可以看到
Subversion权限管理配置
以前面的配置为标准引用一个实际的例子:
厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计、销售,并在北京、上海各设立了一个办事处。对于工作日志,原先采用邮件方式发给经理,但是这种方式有个缺点,那就是不具备连续性,要看以前的日志必须一封一封邮件去查看,很麻烦。于是就想到利用 Subversion, 让员工在自己电脑上编辑日志,然后利用svn传送回来,既方便员工自己编写日志,又方便对日志的归档处理,而且提交日志的时候只需要执行一下 svn commit 即可,比发送邮件还要简单的多。
部门文档的目录结构如下::
test 部门名称
├─diary 工作日志目录
│ ├─headquarters 总部工作日志目录
│ ├─beijing 北京办日志目录
│ └─shanghai 上海办日志目录
├─ref 公司公共文件参考目录
└─temp 临时文件目录
人员情况
- morson,公司总经理,不习惯使用电脑,更喜欢传统的纸与笔,以及面对面的交流
- michael,arm事业部的部门经理,没事的时候喜欢弄点儿新技术,用svn来管理日志,就是他想出来的主意
- scofield,北京办人员,老员工,为人油滑难管
- lincon,上海办人员,老员工,大老实人一个
- linda,总部协调员、秘书,文笔不错,长得也不错
- rory,单片机技术员,技术支持
访问权限需求分析
- 允许总经理、部门经理读取所有文件。顺便给他们开放写权限,以便体现对他们职位的尊重,虽然对于某些文件来说,他们若拥有“写”权限其实也没什么用处
- 除部门经理外,所有其他人员,均只能看到本办事处人员工作日志
- 不允许匿名访问
- ref目录只允许经理和秘书读写,对其他人只读
- temp目录人人都可以随意读写
在服务器端d:\svndata\test\conf配置svnserve.conf
[general]
password-db = passwd.conf
anon-access = none
auth-access = write
authz-db = authz.conf
在服务器端d:\svndata\test\conf配置passwd.conf进行用户创建
[users]
morson = ShowMeTheMoney
michael = mysecretpassword
scofield = hellolittilekiller
lincon = asyouknows111
rory = 8809117
linda = IlikeWorldCup2006
在服务器端d:\svndata\test\conf配置authz.conf进行用户创建
[groups]
g_vip = morson
g_manager = michael
g_beijing = scofield
g_shanghai = lincon
g_headquarters = rory, linda
g_docs = linda
[/]
@g_manager = rw
* = r
[/diary/headquarters]
@g_manager = rw
@g_headquarters = rw
@g_vip = r
* =
[/diary/beijing]
@g_manager = rw
@g_beijing = rw
@g_vip = r
* =
[/diary/shanghai]
@g_manager = rw
@g_shanghai = rw
@g_vip = r
* =
[/ref]
@g_manager = rw
@g_docs = rw
* = r
[/temp]
* = rw
Subversion仓库的访问
这样SVN的配置权限设置完毕,如果你想checkout服务器SVN的文件,你还需要开启svnserver服务
开启server服务
运行命令cmd,进入命令提示符中
C:\Documents and Settings\administrator> d: //进入D盘(因为我们要在D盘下创建仓库)
D:\> cd D:\Subversion\bin >svnserver –d –r d:\svndata\test //启动svnserver服务
现在你只需要使用客户端的checkout命令,然后地址栏中输入svn://127.0.0.1/就可以获取服务器SVN的内容