svn的安裝(整合apache、ldap)包括錯誤解決post commit FS processing had error

 

2013年12月5日 admin 發表評論 閱讀評論 html

如下是centos環境下,以yum安裝apache及其相關軟件。svn使用源碼包編譯,使用官網最新的1.8.5版本。 java

1、安裝apache openldap及其相關模塊
yum -y install httpd httpd-devel openldap openldap-devel mod_authz_ldap openssl  openssl-devel zlib zlib-devel apr apr-uti 
2、安裝sqlite

因爲centos6.4上自帶的sqlite 3.6.20版本過低,不符合subversion的最低要求,因此須要經過源碼包安裝web

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
3、安裝subversion

一、subversion源碼包安裝sql

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

二、配置環境變量apache

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

三、建立版本庫vim

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 centos

4、subversion與apache的整合

一、複製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/

二、配置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>  

三、配置SVN權限認證文件

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

注:

一、上面的test對應的是svnadmin下create的目錄。

二、@admin對應的是管理員組,能夠再建其餘組,如:java_team 、oam、market等。robin、svnadmin、ybk、zzy這些都是用戶名 。若是要和ldap進行整合的話,確保這些用戶在ldap中存在。

三、使用if-svnadmin 這類web程序作svn的用戶權限管理時,須要確保svnauthz.conf文件對apache用戶可寫,否則在if-svnadmin修改時不生效。

四、確保/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的模塊整合,因此這裏就不須要安裝了。

5、其餘

一、svn服務器有2種運行方式:獨立服務器和藉助apache。2種方式各有利弊。這裏是以apache整合的;獨立服務的方式爲svnserve -d -r /data1/svnroot方式啓動進程,監聽端口爲3690 。

二、svn存儲版本數據也有2種方式:BDB和FSFS。由於BDB方式在服務器中斷時,有可能鎖住數據,因此仍是FSFS方式更安全一點。默認使用的存儲方式也是FSFS方式。

最後,其相關組件及用途以下:

svn
命令行客戶端程序。
svnversion
此工具用來顯示工做拷貝的狀態(用術語來講,就是當前項目的修訂版本)。
svnlook
直接查看Subversion版本庫的工具。
svnadmin
創建、調整和修復Subversion版本庫的工具。
svndumpfilter
過濾Subversion版本庫轉儲數據流的工具。
mod_dav_svn
ApacheHTTP服務器的一個插件,使版本庫能夠經過網絡訪問。
svnserve
一個單獨運行的服務器程序,能夠做爲守護進程或由SSH調用。這是另外一種使版本庫能夠經過網絡訪問的方式。
svnsync
一個經過網絡增量鏡像版本庫的程序

三、apache和svnserver兩種方式的訪問方法

http://192.168.1.222/repos,採用了Apache做爲服務器的話就能夠以這種形式訪問,權限由Apache設置。
svn://192.168.1.222/repos,採用了svnserve做爲服務器的話那麼就能夠採用這種形式訪問,它是一種基於TCP/IP的訪問方式。權限由倉庫的配置文件設置。

四、權限配置總結

用戶組格式:
[groups]
用戶組名 = 用戶1,用戶2
其中,1個用戶組能夠包含1個或多個用戶,用戶間以逗號分隔。
版本庫目錄格式:
[版本庫:/項目目錄]
@用戶組名 = 權限
用戶名 = 權限
其中,方框號內部分能夠有多種寫法:
/,表示根目錄及如下。根目錄是svnserve啓動時指定的,咱們指定爲/home/svnroot/repository。這樣,/就是表示對所有版本庫設置權限。
test:/,表示對版本庫test設置權限
權限主體能夠是用戶組、用戶或*,用戶組在前面加@,*表示所有用戶。權限能夠是w、r、wr和空,空表示沒有任何權限。
相關文章
相關標籤/搜索