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和空,空表示没有任何权限。
  • 相关阅读:
    jmeter主要函数助手功用说明
    性能测试的分类
    monkey基础
    读《复盘-对过去的事情做思维演练—陈中(著)》感知
    关于postman各功能的说明及用法以及批量执行
    python接口测试-认识POST请求
    关于python3.6上传文件时报错:HTTPSConnectionPool(host='***.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAIL解决办法
    [Tips] Mobaxterm添加本地python使用
    [Tips] docker run时运行shell命令
    [Tips] shell 输入输出重定向
  • 原文地址:https://www.cnblogs.com/iHqq/p/6519689.html
Copyright © 2011-2022 走看看