red hat 安装svn

素材:

httpd-2.2.22.tar  subversion-1.6.17.tar  apr-1.4.6.tar   apr-util-1.4.1.tar  apr-1.4.6.tar  

 sqlite-autoconf-3071100.tar

1. 下载 apr-1.4.6.tar,apr-util-1.4.1.tar

因为这个是apache和svn安装的前提,所以我们必须安装,安装在一个指定的目录,如下:

./configure --prefix=/home/bard_cap/apr

./configure --prefix=/home/bard_cap/apr-util --with-apr=/home/bard_cap/apr

这些目录下面。

我们再装一下 sqlite, 因为svn服务器需要这个东西。

./configure --prefix=/home/bard_cap/sqlite

装好apr, apr-util, sqlite这几个东西后,我们再装apache, 看看apache能不能启动。

./configure --prefix=/home/bard_cap/apache

然后,我们观察一下 apache/conf/httpd.conf这个配置文件,很显然是没有

  • LoadModule dav_svn_module modules/mod_dav_svn.so
  • LoadModule authz_svn_module modules/mod_authz_svn.so

    /modules/目录下面也是没有
  •                                             mod_dav_svn.so这些库文件的。

    然后,我们到apache的目录下 ./apachectl start启动一下,然后看看apache能不能work.

    我们重新配置一下apache的编译选项,重新编译,安装一下apache.

    ./configure --prefix=/home/bard_cap/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/home/bard_cap/apr --with-apr-util=/home/bard_cap/apr-util

    这时候,我们发现apache modules目录下面还是没有新东西,而且httpd.conf也没有变化,

    这时候,我们按照 svn

    ./configure --prefix=/home/bard_cap/server --with-apxs=/home/bard_cap/apache/bin/apxs --with-apr=/home/bard_cap/apr --with-apr-util=/home/bard_cap/apr-util --with-sqlite=/home/bard_cap/sqlite

    可能这个过程要转 derby_DB ,不管他!!!!

    我们可以发现apache modules目录下面终于多了几个文件,如下:

    mod_authz_svn.so  mod_dav_svn.so

    conf目录下面的httpd.conf这个文件也神奇多了几行:


    LoadModule dav_svn_module     modules/mod_dav_svn.so

    LoadModule authz_svn_module   modules/mod_authz_svn.so

    我们先不是试验 apache和svn服务器的结合使用,我们先单独使用svn服务器

    /home/bard_cap/server/bin目录下面:

    ./svnadmin create /home/bard_cap/svn_data/hello 创建一个库

    先到/home/bard_cap/svn_data/hello/conf目录下,有三个文件

    authz  passwd  svnserve.conf

    修改svnserve.conf

     anon-access = write (请注意,前面是没有任何空格的!!!!)

    这个是没有做权限控制的,是任何匿名的人都可以读写的。

    ./svnserve -d -r /home/bard_cap/svn_data 启动这个服务 -d表示deamon.

    我们先在本地试验一下,找一个空白地,比如这个位置叫:

    /home/bard_cap/laji

    然后,我们输入命令:

    svn checkout svn://localhost/hello,把这个仓库checkout出来后,我们可以看到本地有一个Hello目录了,

    然后我们增加一个文本文件,bard.txt 

    然后输入命令 svn add bard.txt

    最后checkin svn commit --message="this is a try"

    我们可以看到在本地目录

    /home/bard_cap/svn_data/hello/db/revprops/0 下面有了版本文件,呵呵

    最后,我们用eclipse的svn来checkout试试,

    输入:svn://10.50.15.106/hello

    成功checkout了,但是这些都是权限还没有配置的结果,我将继续研究。

    下面要介绍如何用apache访问svn

    apache的httpd.conf要配置,配置成这个样子。

    <Location /svn>

      DAV svn

      SVNParentPath  /home/bard_cap/svn_data/ (这是个总目录)

      #或者SVNPath /home/bard_cap/svn_data/hello

      AuthType Basic

      AuthName "svn repos"

      AuthUserFile /home/bard_cap/apache/bin/passwd.conf

     <LimitExcept GET PROPFIND OPTIONS REPORT>

          require valid-user

      </LimitExcept>

    </Location>

    用apache的命令造个文件  ./htpasswd -cb passwd.conf bardwu bardwu

    然后重启apache即可,但是svn服务器不起来,也是OK的。

    浏览器输入

    http://10.50.15.106/svn/

    输入用户名,密码即可,呵呵。

    总结,其中apache和svn服务器的关系。

    svn服务器提供了一种svn的协议来访问仓库, 所以svn服务不起来,svn://14.23.154.23/hello是找不到的。

    但是当svn服务器停止的时候,光启动apache,apache也可以用完整的Http协议来完成 svn里面仓库的检出,checkin,

    因为apche加载了svn.so,提供了一个纯Http协议的服务。

    权限的配置

    httpd.conf配置为

    <Location /svn>

    DAV svn

    SVNParentPath /home/bard_cap/svn_data

    AuthType Basic

    AuthName "svn repos"

    AuthUserFile /home/bard_cap/apache/bin/passwd.conf

    AuthzSVNAccessFile /home/bard_cap/svn_data/control

    Require valid-user

    </Location>

    control为:

    [groups]

    admin = wujiejie, dapao

    other = look

    [/]

    @admin = rw

    @other = r

    这表示有两个用户,wujiejie,dapao为同一组,look为另外一组。

    造用户还是用命令 ./htpasswd -c passwd.conf wujiejie

    然后就是输入密码,追加一个用户。

    ./htpasswd  passwd.conf kersh

    eclipse SVN插件用户更改用户如下:

    http://lovemitter.blog.163.com/blog/static/1657981342010101910934207/

    为了实现精细化控制库

    httpd.conf中的

    <Location /svn>

    DAV svn

    SVNParentPath /home/bard_cap/svn_data

    AuthType Basic

    AuthName "svn repos"

    AuthUserFile /home/bard_cap/apache/bin/passwd.conf

    AuthzSVNAccessFile /home/bard_cap/svn_data/control

    Require valid-user

    </Location>

    control可以这样写,并且同时用命令创造一个库,./svnadmin create /home/bard_cap/svn_data/world 创建一个库

    admin = wujiejie, dapao

    other = look, eva

    [hello:/]

    @admin = rw

    [world:/]

    @other = rw



    然后命令 chmod -R 777 world让其他人可读可写,呵呵。就可以精细化控制那些用户来访问哪个库了。

    猜你喜欢

    转载自envy2002.iteye.com/blog/1462607