65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 Windows 中设置 Subversion 与 Apache (快速参考)

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.88/5 (13投票s)

2006 年 9 月 22 日

CPOL

3分钟阅读

viewsIcon

241350

这是一份快速用户指南,献给那些没有时间学习如何设置 Apache 和 Subversion 的人。

引言

我决定写这篇文章,是为了节省那些必须在 Windows 机器上安装和设置 Subversion,但又不知道如何操作,也没有时间在网上搜索任何信息的人的时间。

我花了整整两天的时间和巨大的努力才弄清楚 Subversion 是怎么回事以及如何让它工作。我问了我大学计算机科学系的一个同事,他在做一个并行项目,他在 Linux 服务器上设置 SVN 和 Apache 花了多长时间。他说他花了一个月!!!:) 嗯,无语了。

让我们直奔主题,我们时间不多了。

必备组件

首先,我们需要下载 SVN 和 Apache。

Subversion

将 Subversion 安装到任何目录,然后将 bin 子目录添加到环境变量中。例如:如果我们把 svn 安装在 C:\programs\programming\svn-win32-1.4.0,那么请转到 开始 -> 设置 -> 控制面板 -> 系统

点击 高级 选项卡,然后选择 环境变量

subversion_apache_system_properties.jpg

subversion_apache_environment_variables.jpg

subversion_apache_path.jpg

下一步是创建一个目录,它将成为我们所有源代码控制存储库的根目录。

  • 打开命令提示符。
  • 假设我们希望我们的根目录名为 c:\svnroot。然后,在命令提示符下或使用 Explorer 创建此目录。
  • 使用以下命令在 svn 根目录下创建存储库
    • svnadmin create c:\svnroot\test1
    • svnadmin create c:\svnroot\test2

    subversion_apache_repo_create.jpg

Apache 服务器

现在,我们可以安装 Apache 服务器了。

安装完成后,转到 Subversion 安装目录下的 bin 目录,找到两个扩展名为 *.so 的文件,并将它们放入 (Apache)/modules 目录。这两个文件是 mod_authz_svn.somod_dav_svn.so

转到 Apache 安装目录下的 conf 子目录,并在任何文本编辑器中打开 httpd.conf 文件。

添加以下行

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

之后,添加以下块

<Location /svn/>
    DAV svn
    SVNParentPath c:/svnroot/ #specify the root for repositories
    #http://www.archivesat.com/CVS_developers_help/thread45479.htm 
        post which discuss why you need to specify /svn/ and not /svn
    
    #list repositories
    SVNListParentPath on 
    # our access control policy
    AuthzSVNAccessFile bin/apachesvnauth #authentication file 
                   #path where policy is written for each user   

    AuthType Basic #type of authentication
    AuthName "Subversion repository" #the name of the authentication 
                                      #and the name of repository realm
    AuthUserFile bin/apachesvnpasswd #the name of the 
                                      #file with user passwords values
    Require valid-user #permit to log-in only for authorized users
</Location>
  • <Location /svn/> - 如果你在浏览器中输入类似这样的内容:https://:8080/svn/,那么 Apache 将知道如何使用 SVNParentPath 找到你的根存储库。
  • SVNParentPath c:/svnroot/ - 指定存储库的根目录。
  • SVNListParentPath on - 允许使用 https://:8080/svn/ 查看存储库列表。
  • AuthzSVNAccessFile bin/apachesvnauth - 身份验证文件路径,其中为每个用户提供策略。该文件存储在 Apache 的 bin 子目录中。
  • AuthType Basic - 身份验证类型。
  • AuthName "Subversion repository" - 身份验证的名称和存储库域的名称。
  • AuthUserFile bin/apachesvnpasswd - 包含用户密码值的文件的名称,存储在 Apache 安装的 bin 子目录中。
  • Require valid-user - 只允许授权用户登录。

构建密码文件

我们使用 AuthUserFile bin/apachesvnpasswd 条目,它告诉 Apache 在 Apache 安装目录下的 bin 子目录中查找密码文件。我们需要构建这个文件。使用命令提示符进入该目录并键入以下命令

htpasswd.exe -c apachesvnpasswd user1

系统会提示你输入用户 user1 的密码,然后在 bin 子目录中创建 apachesvnpasswd 文件。要添加另一个用户,只需键入相同的命令而不带 -c,然后提供另一个用户名。

htpasswd.exe -c apachesvnpasswd user2

注意:由于我们使用了 Require valid-user 参数,因此只有我们创建的用户才能登录我们的存储库。

构建身份验证文件

以下块是身份验证文件的一个示例

[/] * = r [test1:/] user1 = rw user2 = [test2:/] user1 = r user2 = rw

解释

  • [/] * = r - 允许所有人读取所有存储库
  • [test1:/] - 为 user1 提供对存储库 test1 的读写权限,而 user2 无法读写
  • [test2:/] - user1 可以从存储库 test2 读取,而 user2 拥有完全访问权限

运行 Apache

理论上,我们已经到了可以运行 Apache 并测试我们的 Subversion 的阶段了。所以启动 Apache,打开网络浏览器并输入类似这样的内容:https://:8080/svn/

如果没有出现任何错误,系统将提示你输入用户名和密码。

subversion_apache_username.jpg

输入你创建的用户名和密码,然后按确定。你将看到以下页面

subversion_apache_repo_list.jpg

参考文献

© . All rights reserved.