apache 和 svn 环境搭建

svn可以单独搭建,客户端使用svn协议访问;也可以和apache一起搭建,客户端使用http或者https协议访问

搭建环境
系统 : linux
安装文件 :
httpd-2.2.22.tar.bz2
subversion-1.6.5.tar.bz2
subversion-deps-1.6.5.tar.bz2

安装apache
解压
tar jxvf httpd-2.2.22.tar.bz2
编译安装
$./configure --prefix=/home/space/magicbox/env/apache --enable-so --enable-dav --enable-dav-fs --enable-ssl --enable-maintainer-mode
$make
$make install

安装svn
将subversion-1.6.5.tar.bz2,subversion-deps-1.6.5.tar.bz2放在同一目下
分别解压,两个压缩包都会解压进subversion-1.6.5文件夹中
cd subversion-1.6.5
编译安装
$./configure --prefix=/home/space/tool/subversion --with-apxs=/home/space/magicbox/env/apache/bin/apxs --with-apr=/home/space/magicbox/env/apache/bin/apr-1-config --with-apr-util=/home/space/magicbox/env/apache/bin/apu-1-config
$make
$make install
完成后,查看apache httpd.conf文件,会怎加
LoadModule dav_svn_module modules/mod_dav_sav.so
LoadModule authz_svn_module modules/mod_authz_svn.so
这是apache svn处理模块,经过配置后,一定url格式的访问将有这两个模块控制,访问svn路径

配置apache和svn
修改apache httpd.conf文件,将里面的user和group换成你系统中存在的用户,并且该用户在系统中要有用到的文件系统权限
使用apache 的htpasswd命令创建用户和密码文件(该文件相当于用户数据库,用户apache和svn访问权限控制)
./htpasswd -c 文档存放路径 username (创建第一个用户时使用-c,表需要创建文件)
./htpasswd -m 文档存放路径 username (之后追加用户时使用-m参数)

svn创建svn库
使用svn命令
./svnadmin create /home/work/workdir/svn/repos1
./svnadmin create /home/work/workdir/svn/repos2
/home/work/workdir/svn 为svn跟路径
repos1和repos2为svn的两个库

在httpd.conf文件的结尾加
<Location /svn>
DAV svn
SVNParentPath /home/work/workdir/svn
AuthType Basic
AuthName "Hello welcome to here"
AuthUserFile /home/work/local/svn/passwd  --上面用htpasswd创建的用户文件地址
AuthzSVNAccessFile /home/work/workdir/svn-repository/repos1/conf/authz -- 下面解释
Require valid-user
</Location>

配置 svn库
repos1和repos2均为svn库,现拿repos1做为例子
cd /home/work/workdir/svn/repos1/conf
发现有三个文件authz、passwd和svnserve.conf
vi svnserve.conf
打开并修改以下两行
password-db = /home/work/local/svn/passwd --上面用htpasswd创建的用户文件地址
authz-db = /home/work/workdir/svn-repository/repos1/conf/authz --下面解释

authz的解释,同passwd文件一起,供apache、svn访问认证和授权,passwd提供认证数据,而authz提供授权数据,这个文件可以使用svn库中的conf文件中的authz也可以自己创建,
内容如下

[groups]
rd = user1,user2  --passwd文件中存在的用户,rd代表用户组,在组上赋权限
qa =              --同上

[repos1:/]        --对svn库repos1的根目录赋权,但随svn启动命令不同,写的不同
@rd = rw          --对rd组赋读写权限
@qa = r

启动apache
./apachectl start

启动svn
svnserve -d -r /home/work/workdir/svn

解释
-r 后是svn根路径,如果路径一直到摸个库,则代表单独起着一个svn库
例如
svnserve -d -r /home/work/workdir/svn/repos1
此时上面authz的配置应该写成
[:/]        --对svn库repos1的根目录赋权,但随svn启动命令不同,写的不同
@rd = rw          --对rd组赋读写权限
@qa = r

至此,你用浏览器可以访问http://localhost/svn/repos1查看svn了








猜你喜欢

转载自blue2048.iteye.com/blog/1407455