一、概述
Subversion 是一款开源的版本控制工具。作为 CVS 的替代品,他拥有众多优点。 其中一点即使可以在 Apache 下完全作模块化运行,通过了 Apache 这个接口,就可以使用 Apache 提供的众多功能。
Apache 自然可以和 PAM 结合,于是 Subversion 也可以通过 PAM 来进行用户的多种验证方式。在企业中域是较多被使用的一种验证方式。 Winbind 已经在前一文中介绍过了。此文不再描述通过 Winbind 加域的方法。
Subversion 有很棒的中文站。SVN 即为 Subversion 简称。
二、安装包
在 CentOS 环境下以下包需要安装:
httpd #Apache
mod_dav_svn #Subversion 在 Apache 中的模块
mod_auth_pam # Apache 中 PAM 模块
subversion # svn 程序
通过 yum 即可方便的安装:
yum install httpd mod_dav_svn mod_auth_pam subversion
三、http 配置
在 CentOS 4.5 下 apache 的配置文件在 /etc/httpd 目录下。请注意,/etc/httpd/conf.d 目录下的配置文件具有和 /etc/httpd/conf/httpd.conf 等价的作用,所以劲量让自己的配置在 /etc/httpd/conf.d 下完成。
创建配置文件: /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so #此处即为 Apache 调用 SVN 模块
LoadModule authz_svn_module modules/mod_authz_svn.so #此模块提供了目录级别用户验证的能力,详细资料可以参考 Debian的文档 。#开始定义SVN仓库的位置:
DAV svn # 通过 DAV 模块调用其 SVN 模块
SVNPath /var/svn/repos #指定SVN仓库的绝对地址
AuthType Basic #用户验证方式,验证方式有多种,可以参考 此文,这也是网络上流传比较广的一遍文章。我觉得还可以有更好、更通俗的文章来解释验证方式的问题。
AuthName “Authorization Realm” #引号内的内容会显示在你访问的 Subversion 服务器标题上。
AuthPAM_Enabled on #通过这个参数告诉Apache,当用户访问此虚拟目录的时候,启用 PAM 验证接口
Require valid-user #
四、创建 SVN 仓库
使用 svnadmin create 命令来创建仓库:
svnadmin create /var/svn/repos
五、配置 PAM
在安装了 mod_auth_pam 之后,系统中会出现以下两个库文件:
/usr/lib/httpd/modules/mod_auth_pam.so
/usr/lib/httpd/modules/mod_auth_sys_group.so
你需要确保他们在正确的位置,以便 Apache 可以通过 AuthPAM_Enabled on 参数来调用他。
编辑 /etc/pam.d/httpd 文件来定义 Apache 通过 PAM 时的验证方式。
以下是我实验中此文件的内容:
#%PAM-1.0
auth required /lib/security/pam_winbind.so
account required pam_permit.so
有两点需要提醒:首先 /etc/pam.d/httpd 文件也是在 mod_auth_pam 包里面的。其次,很多地方都给出了这样的参数 auth required /lib/security/pam_winbind.so service=system-auth,这在我的电脑上导致了 message 的报警:
pam_winbind[4603]: pam_parse: unknown option; service=system-auth
在我去掉了:service=system-auth 参数之后便没有了这样的报警,且功能不影响。
六、琐碎的处理
到此,当你重启了 httpd 服务之后,你的 SVN 应该就可以正常工作了。如果出现了一些问题,比如“无权限访问”等。你可以尝试以下操作:
1.修改 SVN 目录所有人为 apache。
2.修改 SVN 目录权限。
3.按照 Ubuntu 论坛中的帖子,执行:
svnserve -d -T -r /svnpath
#我还没搞懂这个命令的意思,但他的确为我解决了一些问题。
您可以通过 http://ip/repos 类似的路径来访问它,具体取决于你在配置文件中的定义。
不知为何,mod_auth_pam 包我总是 yum 不到,所以也提供在此。此包适合 CentOS 4.5,点击下载。
如果您觉得此文有错误的地方,或者是需要补充的地方,请来信告诉我。
latteye@gmail.com