天天看點

apache2 + WebDAV + svn 1.6安裝配置

一、安裝apache2

1. 從apache的源碼目錄裡面找到apr和apr-util單獨安裝,以便subversion安裝時使用

  進入apr目錄:

    ./configure --prefix=/usr/local/apr

    make

    make test

    make install

  進入apr-util目錄:

    ./configure --prefix=/usr/local/apr-util

    make

    make test

    make install

2. 安裝apache

    ./configure --prefix=/usr/local/apache2

                --with-apr=/usr/local/apr

                --with-apr-util=/usr/local/apr-util

                --enable-so

                --enable-dav

                --enable-rewrite

                --enable-maintainer-mode

    make

    make install

二、安裝subversion 1.6

1. 由于系統已經有zlib、sqlite等庫,是以隻單獨安裝了serf。

     ./configure --prefix=/usr/local/serf

                 --with-apr=/usr/local/apr

                 --with-apr-util=/usr/local/apr-util

     make

     make check

     make install

2. 安裝subversion

     ./configure --prefix=/usr/local/svn

                 --with-apxs=/usr/local/apache2/bin/apxs

                 --with-apr=/usr/local/apr

                 --with-apr-util=/usr/local/apr-util

                 --with-serf=/usr/local/serf

                 --with-ssl

                 --enable-maintainer-mode

    make

    make check

    make install

三、配置

1. 檢視apache安裝目錄的modules目錄下是否有mod_authz_svn.so和mod_dav_svn.so

2. 確定conf/httpd.conf檔案裡面有如下兩行:

    LoadModule dav_svn_module modules/mod_dav_svn.so

    LoadModule authz_svn_module modules/mod_authz_svn.so

3. 建立一個目錄比如/home/svn/repos來存放版本庫,可以将多個版本庫放在這個目錄中統一管理。比如可以在此目錄下建一版本庫gr:

    svnadmin create /home/svn/repos/gr

4. 配置httpd.conf,在其中加入

<Location /svn/>

DAV svn

SVNListParentPath on

SVNParentPath "/home/svn/repos"

AuthType Basic

Authname "Subversion repository"

AuthUserFile "/home/svn/repos/passwd"

AuthzSVNAccessFile "/home/svn/repos/authz"

Require valid-user

</Location>

  由于我們在同一個目錄中有多個版本庫,是以指定SVNParentPath,通過指定SVNListParentPath可以列出版本庫清單。

  AuthUserFile指定用于使用者驗證的檔案,裡面是使用者名和密碼,由于是用apache進行使用者驗證,是以這個檔案要用apache的htpasswd指令建立的,密碼是用MD5加密的。

  AuthzSVNAccessFile指定版本庫的通路規則。

       htpasswd -c /home/svn/repos/passwd user1

  -c選項用于建立新檔案,以後用-m選項,htpasswd會提示輸入密碼。

  建立文本檔案/home/svn/repos/authz,内容格式如下:

    [groups]

    admin = user1

    [/]

    * = r

    @admin = rw

    [gr:/]

重新開機apache就可以通路到http://host/svn/gr了。

但是通路http://host/svn出現403 Forbidden,換用http://host/svn/則可以列出版本庫清單。這是因為在authz檔案中指定通路規則的根目錄為"/"。

可以使用apache的重定向使http://host/svn定向到http://host/svn/,在httpd.conf中加入

    RedirectMatch ^(/svn)$ $1/

這樣就不會有403錯誤碼。

另外,向版本庫送出時出現如下錯誤:

    svn: Can't open file '/home/svn/repos/gr/db/txn-current-lock': Permission denied

這是因為版本庫目錄的權限問題。可以将其改為apache所有。apache預設用daemon使用者運作,可以增加apache組和使用者。

在httpd.conf中修改如下兩行:

    User daemon

    Group daemon

   User apache

   Group apache

讓apache以apache使用者運作,然後将版本庫目錄改為apache所有即可。