一、工具准备

Apache Web服务器:​​httpd-2.2.4.tar.bz2​

Subversion源码包及依赖包:​​subversion-1.4.3.tar.bz2​​ ,​​subversion-deps-1.4.3.tar.bz2​

(下面假设apache和svn源码都解压到了/home/tmp下)


二、安装Apache

Apache的安装就根平时安装Apache没什么两样,都记得要打开dav模块和动态模块选项。安装安装命令如下:

引用

    tar xfj httpd-2.2.4.tar.bz2

    cd httpd-2.2.4

    ./buildconf

    ./configure --enable-dav --enable-so

    make

    make install


三、安装Subversion


SVN的安装一定要注意:


    * SVN 依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr, apr-util,改而使用apache 2.2里提供的。


    * 如果apache不是安装在默认路径,configure必須加上--with-apxs选项,如:./configure --with-apxs=/home/apache2/bin/apxs


安装命令如下:

引用


    tar xfj subversion-1.4.3.tar.bz2

    tar xfj subversion-deps-1.4.3.tar.bz2

    # subversion-deps的文件也会解压到subversion-1.4.3目录中

    cd subversion-1.4.3

    rm -rf apr

    rm -rf apr-util

    ln -s /home/tmp/httpd-2.2.4/srclib/apr apr

    ln -s /home/tmp/httpd-2.2.4/srclib/apr-util apr-util

    ./configure && make && make install

安装完成后,查看是否存在文件$APACHE_HOME/modules/mod_dav_svn.so(默认 /usr/local/apache2/modules/mod_dav_svn.so)。另外,如果该机器上以前是装过旧版本的SVN,要把 "/usr/local/lib/libsvn*"文件都删除。


四、在apache中配置svn


创建SVN库:

引用

    cd /home/svn

    svnadmin create repo1

在Apache 的配置文件httpd.conf中加入以下代码,Apache中就可以配置好一个虚拟主机svn.mydomain.net,并把该域名下的根路径配置给 Subversion。通过AuthzSVNAccessFile和AuthUserFile指令分别配置SVN用户的用户名和密码文件。

引用

    <virtualhost *:80>

    DocumentRoot /home/svn/htdocs

    <directory>

    Options Includes

    AllowOverride All

    Order allow,deny

    Allow from all

    </directory>


    <location>

    DAV svn

    SVNParentPath /home/svn/svnroot

    AuthzSVNAccessFile /home/svn/svnroot/conf/accessfile

    Require valid-user

    AuthType Basic

    AuthName "Subversion System"

    AuthUserFile /home/svn/svnroot/conf/passwdfile

    </location>


    ServerName svn.mydomain.net

    DirectoryIndex index.html

    </virtualhost>

创建文件/home/svn/svnroot/conf/accessfile:

引用


    [groups]

    user = jarod

    anonymous = guest

    [/]

    * = r

    @user = rw

    @anonymous = r

再用htpasswd命令创建/home/svn/svnroot/conf/passwdfile文件:

引用

    htpasswd -c /home/svn/svnroot/conf/passwdfile jarod

    # 这时会提示输入密码

最后把/home/svn目录的拥有者设为启动apache服务的用户,apache-2.2默认会由daemon用户启动:

引用

    chown daemon.daemon -R /home/svn

    chmod 777 /home/svn -R

大功告成,通过浏览器或SVN客户端测试http://svn.mydomain.net/repo1

这时在/home/svn/svnroot下添加的新SVN库也将自动使用相同的权限配置