Apache与SVN的整合配置及Apache权限设置 - Apache - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > Apache

Apache与SVN的整合配置及Apache权限设置

发布时间:2013-10-25 来源:服务器之家

紧接上一篇《SubVersion配置和命令运行方式》
下载Apache2.0.x版本(注意,请不要下载2.2.x版本,因为我们之前用的SVN是对应到Apache2.0版本的),这里使用的是2.0.59版本。

1) 
Apache与Svn的整合及apache的账号权限设置
安装过程中出现上述界面需要大家输入一些信息,实际上输入任何信息都可以,并且下面的单选请选择第一个,这样Apache占用了80端口,并被安装为系统服务,如果读者机器上有其他应用占用了80端口,比如IIS,请将其换为其他端口。安装完毕后我们会发现状态栏右边已经出现Apache的图标。在浏览器输入:http://localhost
 Apache与Svn的整合及apache的账号权限设置
我们看到,我们已经可以访问Apache提供给我们的默认首页。
 
2)我们进入SubVersion的安装目录,c:Program FileSubversionbin
 Apache与Svn的整合及apache的账号权限设置
选中mod_authz_svn.so与mod_dav_svn.so两个文件,选择拷贝,进入Apache安装目录,c:Program FileApache GroupApache2mudules,将拷贝的文件黏贴到这里。回到Apache安装目录的conf目录下, c:Program FileApache GroupApache2conf,文本编辑器打开httpd.conf文件,这个文件是Apache的配置文件,非常重要。找到下面这两行:
#LoadModule= dav_module modules/mod_dav.so
#LoadModule= dav_fs_module modules/mod_dav_fs.sc
把前面的#号去掉,然后到LoadModule的最后面加入下面四行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule dav_svn_module "c:/Program File/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "c:/Program File/Subversion/bin/mod_authz_svn.so"
(注:有些资料写着只是加入前面两行,但是本人试验过,那样apache重启会失败,所以必须加入后面两行)转到该文件的最后,增加如下内容:
<Location /svn>
DAV svn
SVNPath E:/svn/repository
</Location>
该语句块的作用是将svn的服务器目录映射到访问Apache的虚拟路径svn。重启apache(每次修改apache安装路径下的配置文件的时候,都需要重启)。
 Apache与Svn的整合及apache的账号权限设置
这时我们注意到Apache下面的状态栏已经增加了SVN的信息,这就表明我们已经成功的将二者整合起来了。
在浏览器中输入如下地址:http://localhost/svn
 Apache与Svn的整合及apache的账号权限设置
    OK,我们看到我们现在已经成功的通过浏览器访问SVN仓库中的内容了。注意:在进行SVN与Apache整合时,一定要注意两者的版本匹配问题,否则将会导致失败。
 
3)这时会发现即使我们在SVN中设置好了需要登录才能读取文件,但是使用Apache方式通过浏览器依然不需要登录就可以浏览。这是由于SVN与Apache是采用不同的方式来控制访问权限的,如果你使用svn协议来访问,那么就必须输入登录信息才能访问,而如果使用http协议就不需要输入登录信息就可以访问。下面我们来看看如何在apache中设置访问权限信息。
    打开Apache安装目录下的conf目录中的httpd.conf文件,转到文件的最后,我们在</Location>之前输入如下信息。
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile E:/passwd   //路径和文件都可以随意的,只要这里指明白就可以了
Require valid-user
这些信息的作用是:
1. AuthType表示验证类型,这里我们采用BASIC即基本方式,也是最常用的验证方式。
2. AuthName表示出现登录对话框时,窗口的标题名。
3. AuthUserFile表示用户登录信息的存放文件,这里我们将该文件保存为E:/passwd,目前该文件还不存在,不过不要着急,我们稍后就会创建该文件。
4. Require valid-user 表示只有认证的用户才能访问,否则匿名用户也可以访问。
    OK,保存该文件,关闭它。接下来我们需要创建登录信息文件passwd.。转到Apache的安装目录,进入到bin目录中,这里存放的是Apache的所有命令文件。注意到有这样一个可执行文件htpasswd.exe文件,它就是我们创建登录信息的文件,不过该命令不能通过直接双击的方式执行,而是需要通过命令行的方式执行。为了方便命令的使用,我们将bin目录加到系统的path环境变量中,否则每次都需要将命令行定位到该目录下才能执行该命令。
 Apache与Svn的整合及apache的账号权限设置
点击确定,打开一个新的命令行窗口。 我们在命令行输入命令:htpasswd
 Apache与Svn的整合及apache的账号权限设置
    可以看到,系统已经认出来该命令了。OK,下面让我们开始登录信息的创建我们可以参照htpasswd的命令选项来决定我们创建用户的命令。在前面的配置中,我们知道我们将把存放用户名与密码的文件放在E:/passwd,即e盘目录下。在命令行输入:
htpasswd –cm E:/passwd liruixuan 
//在e盘下面创建一个名为passwd的文件,创建第一个用户(liruixuan),同时生成密码认证文件,c参数为create,m参数为MD5加密方式,p则表示密码不用加密的形式。
运行后出现如下提示:
New password: ******
Re-type new password: ******
Adding password for user liruixuan   //加入用户成功,以后创建第二个用户的时候,就不用加入c,不然会覆盖掉之前的passwd文件。ok,我们可以发现在e盘下面已经有一个名为passwd的不带后缀名的文件了。好,现在关闭passwords文件,重启Apache服务器。在浏览器地址栏输入http://localhost/svn
 Apache与Svn的整合及apache的账号权限设置
我们看到这时出现认证窗口,只有输入有效的用户名与密码才能登录成功,并且登录窗口的标题为:Subversion Repository就是我们方才在httpd.conf文件中设定的AuthName值。现在输入我们刚才建的用户信息:用户名liruixuan和密码,并确定。
 Apache与Svn的整合及apache的账号权限设置
我们看到,输入合法的用户信息后,用户就可以成功登录,并查看SVN仓库中的项目信息了。
 
4)对于一些目录,我们不想让某些用户看到,所以我们可以做个权限的限制。我们打开Apache安装目录下的conf目录中的httpd.conf文件,转到文件的最后,我们在</Location>之前输入如下信息。
AuthzSVNAccessFile e:access  //同passwd一样,路径和文件名称都是随意的,只要指明就可以了。
access的文件格式如下:
[groups]                     //组
admin = liruixuan,chenlan   //admin组有成员liruixuan和chenlan,中间用逗号隔开
windowsmobile = dengyi       //windowsmobile组有成员dengyi
[/]                          //根目录
@admin = rw                  //admin组的成员有读写权限
@windowsmobile = r           //windowsmobile组成员有读权限
[/项目管理]                  //根目录下的项目管理文件夹
* = none                     //其他成员没有任何权限
注:权限是有继承关系的,例如admin组成员在根目录中已经有rw权限,那么在下面的子目录中,如果没有特别说明,都是有rw权限的。在子目录中要有权限,不管是r还是rw,在上一层的父目录中也一定要有r权限。还有需要特别注意的是:使用apache访问svn的账号和权限和TortoiseSVN客户端访问svn的账号和权限是分开的,我们在接下来的一节中将对TortoiseSVN客户端访问svn的账号和权限作详细的介绍。