如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,在RHEL5上怎样部署Subversion服务器
呢,就让我们一起来学习吧。
这两天部署Subversion,以下是整个过程:
1.重新安装Apache服务器
RHEL5默认安装的Apache没有并包含--enable-so选项,所以无法产生mod_dav_svn.没有这个模块,SVN就无法采用http方式运行,所以必须重新编译新的Apache。
#wgethttp://apache.mirror.phpchina.com/httpd/httpd-2.2.6.tar.gz
#tarzxvfhttpd-2.2.6.tar.gz
#cdhttpd-2.2.6
#./configure--enable-dav--enable-so--enable-maintainer-mode
#make
#makeinstall
此时会产生一个/usr/local/apache2系统目录。
接着配置Apache服务器在RHEL5启动时自动启动
(1)在/etc/rc.d/rc.local中增加启动apache的命令,例如:/usr/local/httpd/bin/apachectlstart
(2)将apache注册为系统服务
首先将apachectl命令拷贝至/etc/rc.d/init.d目录下,改名为httpd
使用编辑器打开httpd文件,并在第一行#!/bin/sh下增加两行文字如下:
#chkconfig:357030
#description:Apache
接着注册该服务
/sbin/chkconfig--addhttpd
一切OK了,启动服务/sbin/servicehttpdstart
其中所增加的第二行中三个数字第一个表示在运行级别3和5下启动apache,第二、三是关于启动和停止的优先级配置,无关紧要。
2.安装Subversion服务器
#wgethttp://subversion.tigris.org/downloads/subversion-1.4.5.tar.gz
#tarzxvfsubversion-1.4.0.tar.gz
#cdsubversion-1.4.0
#./configure--prefix=/usr/local/subverion--with-apxs=/usr/local/apache2/bin/apxs
#make
#makeinstall
说明:--with-apxs指定apxs的安装的目录,可以在安装过程中自动生成两个必要的模块文件mod_dav_svn.so和mod_authz_svn.so以及能够支持它们可以正常地工作。
3.检查Subversion服务器版本
#svn--version
svn,版本1.4.5(r25188)
编译于Aug282007,07:38:39
版权所有(C)2000-2007CollabNet。
Subversion是开放源代码软件,请参阅http://subversion.tigris.org/
此产品包含由CollabNet(http://www.Collab.Net/)开发的软件。
可使用以下的仓库访问模块:
◆ra_dav:通过WebDAV(DeltaV)协议访问仓库的模块。
-处理“http”方案
-处理“https”方案
◆ra_svn:使用svn网络协议访问仓库的模块。
-处理“svn”方案
◆ra_local:访问本地磁盘的仓库模块。
-处理“file”方案 #p#
4.建立Subversion的数据库
//创建库文件所在的目录(svnroot用户进行下面的操作)
#mkdir/home/rhel/svnroot/
//进入subversion的bin目录
//创建仓库"test"
#./svnadmincreate/home/rhel/svnroot/test
#cd/home/rhel/svnroot/test
//看看是不是多了些文件,如果是则说明Subversion安装成功了
#ls–l
#cd/usr/local/subversion/bin
//这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion仓库中去,
//提交后的修订版为1。
#svnimport/home/rhel/wwwfile:///home/rhel/svnroot/test–m"注释"
//不让其他人有该目录的权限
#chmod700/home/rhel/svnroot
5.使用Apache模块方式运行Subversion
Subversion服务器有两种运行方式,一是可以作为Apache2.x的一个模块,以WebDAV/DeltaV协议与外界连通;另外,也可使用Subversion自带的小型服务器程序svnserve。该程序使用的是自带的通讯协议,独立运行。
(1)检查修改apache配置文件
#vi/usr/local/apache2/conf/httpd.conf
查看是否有下面这两行,一般会自动加入,如果没有则要手工加入
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
将ServerName修改为ServerName:80
在末尾加上以下参数
DAVsvn
SVNParentPath/home/rhel/svnroot///svn父目录
AuthzSVNAccessFile/home/rhel/svnroot/authz.conf//权限配置文件
AuthTypeBasic//连接类型设置
AuthName"Subversion.Xustar"//连接框提示
AuthUserFile/home/rhel/svnroot/authfile//用户配置文件
Requirevalid-user//采用何种认证
//其中authfile是通过
"htpasswd[–c]/home/svnroot/repository/authfileusernamepassword"
//来创建的
//"Requirevalid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,
//则只能第一个用户可以访问新建库
6.权限管理
1)增加用户
#htpasswd-c/home/rhel/svnroot/authfilexustar
//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,
//完成对用户的增加
#htpasswdauthfile用户名(加入新的用户)
2)权限分配
#vi/home/rhel/svnroot/authz.conf
[test:/]//这表示,仓库test的根目录下的访问权限
xustar=rw//test仓库xustar用户具有读和写权限
wl=r//test仓库wl用户具有读权限
[/]//这个表示在所有仓库的根目录下
◆=r//这个表示对所有的用户都具有读权限
#[groups]//这个表示群组设置
#svn1-developers=wooin,bao//这个表示某群组里的成员
#svn2-developers=wooin
#[svn1:/]
#@svn1-developers=rw//如果在前面加上@符号,则表示这是个群组权限设置
将这个设置完成后。重启Apache,就可以通过
http://localhost/svn/test
这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限.在svn使用过程中牵扯到几种权限:文件系统的权限,linux系统权限,svn用户的权限,apache进程的权限。
文件系统的权限,linux系统权限:这里相同的意思,就是平时大家使用linux时文件夹和文件的访问权限。在svn建立仓库,文件夹,配置文件的时候用svnroot用户,并将仓库权限设置为700,不允许其他用户直接通过文件系统查看,只能由svnroot进行管理。
apache进程的权限:因为所有跟仓库传输的操作都是通过apache进程进行的,所以即使你给svn用户设置了很大的权限,但是apache进程没有访问仓库或者相关文件的权限也没有用,apache进程的权限设置在/usr/local/apache2/conf/httpd.conf文件中配置,找到文件中的这两行:
Userdaemon#将daemon改为svnroot,让apache进程以svnroot的身份运行Groupdaemon
RHEL5上部署Subversion服务器介绍完毕。
【编辑推荐】