zoukankan      html  css  js  c++  java
  • svn的安装(整合apache、ldap)包括错误解决post commit FS processing had error

     

    2013年12月5日 admin 发表评论 阅读评论

    以下是centos环境下,以yum安装apache及其相关软件。svn使用源码包编译,使用官网最新的1.8.5版本。

    一、安装apache openldap及其相关模块
    yum -y install httpd httpd-devel openldap openldap-devel mod_authz_ldap openssl  openssl-devel zlib zlib-devel apr apr-uti 
    二、安装sqlite

    由于centos6.4上自带的sqlite 3.6.20版本太低,不符合subversion的最低要求,所以需要通过源码包安装

    wget http://www.sqlite.org/2013/sqlite-autoconf-3080100.tar.gz
    tar zxvf sqlite-autoconf-3080100.tar.gz
    cd sqlite-autoconf-3080100
    ./configure
    make && make install
    三、安装subversion

    1、subversion源码包安装

    tar zxvf subversion-1.8.5.tar.gz
    mkdir -p ./subversion-1.8.5/sqlite-amalgamation
    cp ./sqlite-autoconf-3080100/sqlite3.c ./subversion-1.8.5/sqlite-amalgamation
    cd subversion-1.8.5
    ./configure --prefix=/usr/local/subversion
    make && make install

    2、配置环境变量

    echo 'PATH=$PATH:/usr/local/subversion/bin' >>/etc/profile
    echo  'export PATH'>>/etc/profile
    source /etc/profile

    3、创建版本库

    cd /data1/svnroot
    svnadmin create --pre-1.6-compatible test

    注意:如果这里不写--pre-1.6-compatible,更新svn的时候会报post commit FS processing had error: Couldn’t open rep-cache database

    四、subversion与apache的整合

    1、复制subversion下的mod文件

    cp /usr/local/subversion/libexec/mod_authz_svn.so /etc/httpd/modules/
    cp /usr/local/subversion/libexec/mod_dav_svn.so /etc/httpd/modules/

    2、配置subversion.conf文件

    vim /etc/httpd/conf.d/subversion.conf
    LoadModule dav_svn_module     modules/mod_dav_svn.so
    LoadModule authz_svn_module   modules/mod_authz_svn.so
    <VirtualHost *:80>
            ServerName      svn.361way.com
            LogLevel        warn
    <Directory "/data1/svnroot">
    #        Order deny,allow
    #        Deny from all
    #        Allow from 115.236.xxx.xxx/29
        </Directory>
    <Location /svn>
     #    Order deny,allow
     #       Deny from all
     #       Allow from 115.236.xxx.xxx/29
     #       Allow from  119.37.xxx.xxx/24
       DAV svn
       SVNParentPath /data1/svnroot
       AuthBasicAuthoritative on
       AuthType Basic
       AuthName "csvn"
       AuthBasicProvider ldap
       AuthzLDAPAuthoritative    off
       AuthLDAPURL       "ldap://127.0.0.1/ou=Users,domainName=sangame.com,o=domains,dc=sangame,dc=com?uid?sub?(|(&(objectClass=mailuser)(accountStatus=active))(cn=svnadmin))"
       AuthLDAPBindDN "cn=ldapread,dc=361way,dc=com"
       AuthLDAPBindPassword "123456"
       #AuthUserFile /etc/httpd/conf/svn.passwd
       AuthzSVNAccessFile /etc/httpd/conf/svnauthz.conf
    #  Satisfy Any
       Require valid-user
    </Location>
    </VirtualHost>

    如果不使用ldap认证,而使用密码文件认证则配置文件可以改为:

    <Location />
         DAV  svn
         SVNParentPath /data1/svnroot/      #svn 根目录
         SVNListParentPath On
         SVNAutoversioning On
         SVNReposName "svn"
         AuthzSVNAccessFile /opt/svn/subversion/conf/authz.conf  #目录分组权限
         AuthType Basic
         AuthName "Subversion repository"
         AuthUserFile /opt/svn/subversion/conf/passwd.conf   #密码验证文件
         Require valid-user
    </Location>  

    3、配置SVN权限认证文件

    vim /etc/httpd/conf/svnauthz.conf
    [groups]
    admin=robin,svnadmin,ybk
    [/]
    @admin = rw
    [test:/]
    ybk= rw
    zzy = rw

    注:

    1、上面的test对应的是svnadmin下create的目录。

    2、@admin对应的是管理员组,可以再建其他组,如:java_team 、oam、market等。robin、svnadmin、ybk、zzy这些都是用户名 。如果要和ldap进行整合的话,确保这些用户在ldap中存在。

    3、使用if-svnadmin 这类web程序做svn的用户权限管理时,需要确保svnauthz.conf文件对apache用户可写,不然在if-svnadmin修改时不生效。

    4、确保/data1/svnroot目录apache用户可读写或直接属主改过apache,不然在使用TortoiseSVN等程序上传或删除时会提示权限拒绝。

    以上配置完成后,就可以启动apache以http://svn.361way.com/svn/test 的方式防问了。

    关于openldap的相关配置这里就不再细说。如果使用到dav方法的调用时,还要安装neon。(neon 是一个 HTTP 和 WebDAV 客户端的C语言开发包,支持 Linux/Unix。提供 HTTP/1.1 和 WebDAV 方法的高级接口以及底层的 HTTP 请求/回应处理,可轻松实现新的方法。)不过由于apache下有mod_dav_svn的模块整合,所以这里就不需要安装了。

    五、其他

    1、svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。这里是以apache整合的;独立服务的方式为svnserve -d -r /data1/svnroot方式启动进程,监听端口为3690 。

    2、svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。默认使用的存储方式也是FSFS方式。

    最后,其相关组件及用途如下:

    svn
    命令行客户端程序。
    svnversion
    此工具用来显示工作拷贝的状态(用术语来说,就是当前项目的修订版本)。
    svnlook
    直接查看Subversion版本库的工具。
    svnadmin
    建立、调整和修复Subversion版本库的工具。
    svndumpfilter
    过滤Subversion版本库转储数据流的工具。
    mod_dav_svn
    ApacheHTTP服务器的一个插件,使版本库可以通过网络访问。
    svnserve
    一个单独运行的服务器程序,可以作为守护进程或由SSH调用。这是另一种使版本库可以通过网络访问的方式。
    svnsync
    一个通过网络增量镜像版本库的程序

    3、apache和svnserver两种方式的访问方法

    http://192.168.1.222/repos,采用了Apache作为服务器的话就可以以这种形式访问,权限由Apache设置。
    svn://192.168.1.222/repos,采用了svnserve作为服务器的话那么就可以采用这种形式访问,它是一种基于TCP/IP的访问方式。权限由仓库的配置文件设置。

    4、权限配置总结

    用户组格式:
    [groups]
    用户组名 = 用户1,用户2
    其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
    版本库目录格式:
    [版本库:/项目目录]
    @用户组名 = 权限
    用户名 = 权限
    其中,方框号内部分可以有多种写法:
    /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/home/svnroot/repository。这样,/就是表示对全部版本库设置权限。
    test:/,表示对版本库test设置权限
    权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
  • 相关阅读:
    Palindrome Linked List 解答
    Word Break II 解答
    Array vs Linked List
    Reverse Linked List II 解答
    Calculate Number Of Islands And Lakes 解答
    Sqrt(x) 解答
    Find Median from Data Stream 解答
    Majority Element II 解答
    Binary Search Tree DFS Template
    188. Best Time to Buy and Sell Stock IV
  • 原文地址:https://www.cnblogs.com/iHqq/p/6519689.html
Copyright © 2011-2022 走看看