LychieFan 2011-05-22
最好不要让root用户参与到svn的权限管理和日常的运行和维护工作中来,但是下面的一些安装和配置操作还是 需要root用户来完成的,因为有些操作只有root才能做。
编译安装httpd(root用户操作):
//解压apache2安装包
[root@localhostlocal]#tarxvzfhttpd-2.2.17.tar.gz
//进入解压后的目录
[root@localhostlocal]#cdhttpd-2.2.17
在安装Apache之前需要安装apr和apr-util:
使用发行源代码中自带的apr/apr-util源代码进行安装,你必须手动完成:
#编译和安装apr1.2
[[email protected]]#cdsrclib/apr
[root@localhostapr]#./configure--prefix=/usr/local/apr-httpd/
[root@localhostapr]#make
[root@localhostapr]#makeinstall
#编译和安装apr-util1.2
[root@localhostapr]#cd../apr-util
[root@localhostapr-util]#./configure--prefix=/usr/local/apr-util-httpd/--with-apr=/usr/local/apr-httpd/
[root@localhostapr-util]#make
[root@localhostapr-util]#makeinstall
#配置Apache的httpd,准备Apache的安装:
[[email protected]]#./configure--with-apr=/usr/local/apr-httpd/--with-apr-util=/usr/local/apr-util-httpd/
//配置apache安装,前两个参数是必须要加的,你还可以根据您的需要添加其他的参数。
//后面的参数制定你要把apache安装哪里
#./configure--enable-dav--enable-so--prefix=/usr/local/apache2/
#make
//安装
#makeinstall
#cd/usr/local/apache2/bin
//启动apache服务
#./apachectlstart
//打开浏览器http://localhost/如果有测试页"Itworks!"出现则证明已经安装成功。
首先下载berkeleyDB
地址:http://download.oracle.com/berkeley-db/db-4.6.18.tar.gz
下这个因为subversion内部使用的管理数据的功能会需要用到。但是后来经过猜测,应该不装也没问题,因为subversion有两种关于这个的模式,不装的话可以用另外种,subversion的解释如下
Thefollowingrepositoryback-end(FS)modulesareavailable:
*fs_base:ModuleforworkingwithaBerkeleyDBrepository.*fs_fs:Moduleforworkingwithaplainfile(FSFS)repository.
但是为了保险我还是装了,具体命令行如下tarzxvfdb-4.6.18.tar.tar
cddb-4.6.18/build_unix/
../dist/configure--prefix=/usr/local/bdb
make
makeinstall
接着安装apr和apr-util
这是个apache的project,全名是ApachePortableRuntime现在最新的版本是1.2.12,不过貌似那个版本是给apache2.6用的,而我们的apache是2.0.x的,所以我用的是0.9.17的。这个要注意下,版本不符合安装会有问题,如果下载的是新版本的aprandapr-util,那么需要新版本的apache包,下面是下载地址http://apr.apache.org/
先装apr,如果下的gz包可以用tarzxvfapr-0.9.17.tar.tar解压如果是bz2包可以用tarxfjapr-0.9.17.tar.tar然后cdapr-0.9.17/
./configure
make
makeinstall这里configure的时候不指定路径的话默认是安装到/usr/local/下
然后安装apr-util解压同apr然后cdapr-util-0.9.15/
./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr/--with-berkeley-db=/usr/local/bdb(这步要把berkeley数据库一起编译进去,否则berkeley就白装了)
make
makeinstall
安装subversion
//解压SubVersion安装包(root用户进行下面的操作)
#tarxvzfSubversion-1.3.1.tar.gz
//进入解压后的目录
#cdSubversion-1.3.1
//配置subversion安装
#./configure--with-apxs=/usr/local/apache2/bin/apxs--prefix=/usr/local/subversion
--with-apr=/usr/local/apache2/bin/apr-config--with-apr-util=/usr/local/apache2/bin/apu-config--with-ssl--with-zlib
#make
//安装
#makeinstall
装完后用svnadmin–version查看下是否有信息,有的话说明安装成功
SubVersion配置
//创建库文件所在的目录(svnroot用户进行下面的操作)
#mkdir/home/svnroot/repository
//进入subversion的bin目录
#cd/usr/local/subversion/bin
//创建仓库"test"
#./svnadmincreate/home/svnroot/repository/test
#cd/home/svnroot/repository/test
//看看是不是多了些文件,如果是则说明Subversion安装成功了
#ls–l
#cd/usr/local/subversion/bin
//这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion仓库中去,
//提交后的修订版为1。
#./svnimport/home/user/importfile:///home/svnroot/repository/test–m"注释"
//不让其他人有该目录的权限,也可以开放权限,我这里是开放了权限
#chmod-R777/home/svnroot
修改Apache配置文件
cd/usr/local/apadche2/bin
//启动Apache
#./apachect1start
#vi/usr/local/apache2/conf/httpd.conf
//在最下面添加
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
DAVsvn
SVNParentPath/home/svnroot/repository///svn父目录
AuthzSVNAccessFile/home/svnroot/repository/authz.conf//权限配置文件
AuthTypeBasic//连接类型设置
AuthName"Subversion.zoneyump"//连接框提示
AuthUserFile/home/svnroot/repository/authfile//用户配置文件
Requirevalid-user//采用何种认证
//其中authfile是通过
"htpasswd[–c]/home/svnroot/repository/authfileusernamepassword"
//来创建的
//"Requirevalid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,
//则只能第一个用户可以访问新建库
重启apache
#./usr/local/apache2/bin/apachectlrestart
//打开浏览器访问http://localhost/svn/test/,如果有东西显示就说明成功。
权限管理
1)增加用户
htpasswd[-c]/home/svnroot/repository/authfilewooin
//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,
//完成对用户的增加
#htpasswdauthfile用户名(加入新的用户)
2)权限分配
vi/home/svnroot/repository/authz.conf
[test:/]//这表示,仓库test的根目录下的访问权限
wooin=rw//test仓库wooin用户具有读和写权限
bao=r//test仓库bao用户具有读权限
[test2:/]//test2仓库根目录下的访问权限
wooin=r//wooin用户在test2仓库根目录下只有读权限
bao=//bao用户在test2仓库根目录下无任何权限
[/]//这个表示在所有仓库的根目录下
*=r//这个表示对所有的用户都具有读权限
#[groups]//这个表示群组设置
#svn1-developers=wooin,bao//这个表示某群组里的成员
#svn2-developers=wooin
#[svn1:/]
#@svn1-developers=rw//如果在前面加上@符号,则表示这是个群组权限设置
将这个设置完成后。重启Apache,就可以通过
http://localhost/svn/test
这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限
一些备忘:
1.//创建仓库"test"
./svnadmincreate/home/svnroot/repository/test
#cd/home/svnroot/repository/test
创建仓库后,将权限放大chmod-R777/home/svnroot
2.Importfiles
//这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion仓库中去,
//提交后的修订版为1。
#./svnimport/home/user/importfile:///home/svnroot/repository/test–m"注释"
或直接用客户端的导入工具.
3.客户端通过IE打开svnserver
http://172.16.251.42/svn/test
svn://172.16.251.42/test
4.启动SVN
启动:svnserve-d-r/home/svnroot/repository/test这是启动单库的SVN
如果有多库的话,可以用这个命令:svnserver-d-r/home/svnroot/repository
命令执行后可以用ps-ed|grepsvnserve查看svnserve服务是否已经启动
还可以用netstat-ant|grep3690查看3690端口是否已经被监听
5.创建授权用户
htpasswd[-c]/home/svnroot/repository/authfilewooin
//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,
//完成对用户的增加
#htpasswdauthfile用户名(加入新的用户)
6.重新部署SVN仓库
需要将目前的某个仓库导出,并导入到另一个仓库(可以导入到该仓库的指定目录下),
要用到以下的命令:
//导出所有版本到stn.dump文件中
#svnadmindump/home/svnroot/sonatina/>stn.dump
//或者也可以只导出其中一个版本
#svnadmindump/home/svnroot/sonatina/--revision10>stn.r10.dump
//或者也可以导出多个版本,比如0-10版本
#svnadmindump/home/svnroot/sonatina/--revision0:10>stn.r0-10.dump
//导入到sonatinab/trunk目录下,如果不指定--parent-dir,则会导入到根目录sonatinab/下
# svnadmin load /home/svnroot/sonatinab/ --parent-dir trunk