Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux程序设计 ->正文

Apache和Subversion 搭建安全CVS

来源:BIM DW中国 作者:吴玥颢,胡睿  时间:2007-04-22 点击: [收藏] [投稿]

其他

这里有一个需要新手,尤其是习惯了 Subversion 客户端命令 “svn” 的用户注意的问题,那就是,“svnadmin” “svnlook” 都被认为是服务器端的管理工具,只被用于版本库所在的机器,用来检查和维护版本库,不能通过网络来执行任务。所以,试图将 URL 甚至本地 file 路径传递给这两个程序,都是错误的。

Subversion 还有很多管理工具可供管理员应用,需要了解这项工具的使用方法,读者们可以用 svn help, svnadmin help, svnlook help 等等命令查看帮助信息,另外,Subversion 参考手册提供了更为全面和详细的使用介绍。

基本的服务器配置

Subversion 设计了一个抽象的网络层,版本库建立完毕之后,可以通过各种服务器向外公布。svnserve 是 Subversion 自带的一个小型的服务器,它使用独立的协议与客户端。我们可以通过

svnserve –i

作为 inetd 启动或者

svnserve –d

作为守护进程启动一个服务。服务器启动后,客户端即可以通过绝对路径访问。如上例可以访问 svn://服务器IP/etc/svn/repos。同时可以指定一些选项,常用的如 -r,用来指定版本库的根路径,例如假设版本库位于 /etc/svn/repos:

svnserve –d -r /etc/svn

则客户端可以通过如下 URL 访问服务器:svn://服务器IP/repos, 这样可以有效的避免暴露本地路径。另外如 --listen-port--listen-host 可以指定绑定的地址和端口,-R 可以强制设定为 Read-Only 模式。如果在 Windows 操作系统下,可以将版本库设定在 C 分区,如 c:\svnroot\repos 可以通过 svn://服务器IP/svnroot/repos访问,如果在其他分区,就必须要通过 -r 选项来指定 root 位置。

svnserve 可以通过配置 svnserve.conf 来进行一些简单的访问权限控制。你可以在版本库的 conf 子文件夹下发现这个文件。文件的初始内容大致如下:

[general]
# anon-access = read
# auth-access = write
password-db = passwd
# authz-db = authz
# realm = My First Repository

其中 anon-access 表示匿名用户的权限,auth-access 表示认证用户的权限设置,password-db 指向保存用户帐号密码的文件的位置,可以使用相对路径。svnserve 只能对全局提供简单的访问控制,如果想要更加灵活的方式,可以使用 Apache Http Server 作为向外公布版本库的方式。

与 Apache Http Server 的结合

通过 Http 协议访问版本库是 Subversion 的亮点之一。使用 Http 协议意味着只需要打开浏览器,输入 URL 即可轻松的浏览整个版本库。灵活通常带来复杂性,Http 方式相对于 svnserve 方式来说需要更多的配置。

由于 Subversion 需要版本化的控制,因此标准的 Http 协议不能满足需求。要让 Apache 与 Subversion 协同工作,需要使用 WebDAV(Web 分布式创作和版本控制)。WebDAV 是 HTTP 1.1 的扩展,关于 WebDAV 的规范和工作原理,可以参考 IETF RFC 2518

为了使 Subversion 与 dav 模块通信,需要安装 mod_dav_svn 插件,可以在 Subversion 的安装目录中找到。将其拷贝到 Apache 安装目录的 modules 文件夹下。接下来就是配置 Apache 的 httpd.conf 文件,让 Apache 在启动的时候加载上述模块。

需要添加的内容如下:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
<Location /repos>
  DAV svn
  SVNPath /etc/svn/repos
</Location>

首先需要启用 dav_module,然后加载 dav_svn_module。Location 标签指出访问的 URL 以及在服务器上的实际位置。配置完毕后重新启动 Apache,打开浏览器,输入 http://服务器IP/repos 将会看到如下画面:


图1. 一个初始版本库
初始版本库

这表示 Apache 的 dav_svn 模块已经可以正常工作了。用户可以使用任何一种 Subversion 的客户端通过 Http 协议访问你的版本库。

如果想要指定多个版本库,可以用多个 Location 标签,也可以使用 SVNParentPath 代替 SVNPath,例如在 /etc/svn 下有多个版本库 repos1,repos2 等等,用如下方式指定:

<Location /repos>
  DAV svn
  SVNParentPath /etc/svn
</Location>


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页 1 2 34 5 6 下一页


上一篇:用新的PHP插件实现MySQL为基础的事务   下一篇:AIX 中Paging Space使用率过高分析与解决

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
·快速编辑Shell命令行
·从2.4到2.6内核发展中的改进
·两个很详细的shell实例
·内核设计篇
·shell技巧
·批量添加用户
·HowtoCreatingandBootingaNewKernelWithautoconf
·利用ip_conntrack表实现封ip的shell脚本,并有简
·30分钟搞定BASH脚本编程!
·Shell初学者的入门知识
推荐文章
·更多的 bash 基本编程
·Linux编程Shell基本工作原理方案
·Linux程式设计-11.ShellScript(bash
·Bourne again shell (bash) 基本编
·shell技巧
·Linux操作系统网桥源码框架初步分析
·技巧:Vimdiff 使用
·PHP 简介
精彩文章
·Linux操作系统的X86汇编程序设计
·在 C/C++中怎么样构造通用的对象链
·使用 m17n 实现各国语言间代码移植
·Linux与Unix二大操作系统编程的安全
·PHP V5 迁移指南
·如何让setuid的shellscript可以使用
·HowtoCreatingandBootingaNewKernel
·Linux操作系统内核对RTC的编程详解
·在Linux系统环境下配置java编译环境
·Shell初学者的入门知识
·Linux下Apache、php3、MySQL整合方
·Linux程式设计-11.ShellScript(bash
·Linux程式设计-11.ShellScript(bash
·用Shell编程实现DOS风格Linux命令行
·Linux设备驱动编程之阻塞与非阻塞
·Linux操作系统下C语言编程从零开始
·使用 GStreamer 进行多用途的多媒体
·Linux程式设计-11.ShellScript(bash
·GNU 线性编程工具包(线性优化简介)
·Linux操作系统内核编程实现调度任务
·浅谈程序员的数学修养
·Shell 编程入门:Linux 解释器原理
·定制 bugzilla 进行项目管理
·Shell介绍
·Windows 打印管理在Linux 平台实现
·从ifconfig中得到IP地址
Power by linux-cn.com 粤ICP备05006655号