1、獨立服務器 (例如:svn://xxx.com/xxx);
2、藉助apache (例如:http://svn.xxx.com/xxx);
爲了不依賴apache,我選擇第一種方式:獨立的svn服務器。
SVN存儲版本數據也有2種方式:
1、bdb;
2、fsfs。
由於bdb方式在服務器中斷時,有可能鎖住數據,所以還是fsfs方式更安全一點,我也選擇這種方式。
具體部署:
1.下載subversion安裝包
[root@server ~]# cd /usr/local/src
[root@server src]# ls [root@server src]# wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz [root@server src]# wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz [root@server src]# tar xfvz subversion-1.6.6.tar.gz [root@server src]# tar xfvz subversion-deps-1.6.6.tar.gz [root@server src]# cd subversion-1.6.6 [root@server subversion-1.6.6]# |
首先檢測系統有沒有安裝SSL:
[root@server subversion-1.6.6]# find / -name opensslv.h
[root@server subversion-1.6.6]# |
[root@server subversion-1.6.6]# yum install openssl
[root@server subversion-1.6.6]# yum install openssl-devel |
[root@server subversion-1.6.6]# find / -name opensslv.h
/usr/include/openssl/opensslv.h [root@server subversion-1.6.6]# ./configure --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db |
此時編譯報如下錯誤:
configure: WARNING: unrecognized options: --with-openssl
configure: Configuring Subversion 1.6.6 configure: creating config.nice checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/usr/local/src/subversion-1.6.6': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details. |
[root@server subversion-1.6.6]# yum -y install gcc
[root@server subversion-1.6.6]# ./configure --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db |
configure: WARNING: we have configured without BDB filesystem support
You don't seem to have Berkeley DB version 4.0.14 or newer installed and linked to APR-UTIL. We have created Makefiles which will build without the Berkeley DB back-end; your repositories will use FSFS as the default back-end. You can find the latest version of Berkeley DB here: http://www.sleepycat.com/download/index.shtml |
爲避免出現以下錯誤
error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
|
1)、編輯/etc/ld.so.conf文件,添加下面一行:
/usr/local/lib
|
/sbin/ldconfig
|
安裝
[root@server subversion-1.6.6]# make && make install
|
[root@server subversion-1.6.6]# /usr/local/svn/bin/svnserve --version
svnserve,版本 1.6.6 (r40053) 編譯於 Feb 15 2012,22:15:26 版權所有 (C) 2000-2009 CollabNet。
Subversion 是開放源代碼軟件,請參閱 http://subversion.tigris.org/ 站點。 此產品包含由 CollabNet(http://www.Collab.Net/) 開發的軟件。 下列版本庫後端(FS) 模塊可用:
* fs_fs : 模塊與文本文件(FSFS)版本庫一起工作。
|
PATH=/usr/local/svn/bin:$PATH
|
source /etc/profile
|
建立版本庫目錄,可建多個:
[root@server ~]# mkdir -p /home/svndata/ok100 #建立版本庫
[root@server ~]# /usr/local/svn/bin/svnadmin create /home/svndata/ok100 #修改版本庫配置文件 |
[general]
anon-access = none auth-access = write password-db = /usr/local/svn/conf/passwd.conf authz-db = /usr/local/svn/conf/authz.conf realm = ok100 |
在/usr/local/svn/下面新建conf目錄,並在/usr/local/svn/conf內新建passwd.conf和authz.conf文件:
mkdir conf
cd conf/ touch passwd.conf touch authz.conf |
[root@server ~]# useradd xiao01
[root@server ~]# passwd xiao01 |
[users]
xiao01 = 123456 |
[groups]
admin = xiao01 [/] @admin = rw # [repos:/abc/aaa] # king = rw # [repos:/pass] # king =svn 注意:
* 權限配置文件中出現的用戶名必須已在用戶配置文件中定義。 * 對權限配置文件的修改立即生效,不必重啓svn。 用戶組格式: [groups] = , 其中,1個用戶組可以包含1個或多個用戶,用戶間以逗號分隔。 版本庫目錄格式: [<版本庫>:/項目/目錄] @<用戶組名> = <權限> <用戶名> = <權限> 其中,方框號內部分可以有多種寫法: [/],表示根目錄及以下,根目錄是svnserve啓動時指定的,我們指定爲/home/svndata,[/]就是表示對全部版本庫設置權限。 [repos:/] 表示對版本庫repos設置權限; [repos:/abc] 表示對版本庫repos中的abc項目設置權限; [repos:/abc/aaa] 表示對版本庫repos中的abc項目的aaa目錄設置權限; 權限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶。 權限可以是w、r、wr和空,空表示沒有任何權限。 |
[root@server ~]# useradd svn
[root@server ~]# passwd svn |
[root@server ~]# chown -R svn:svn /home/svndata
|
[root@server ~]# su - svn -c "svnserve -d --listen-port 9999 -r /home/svndata"
其中:
su - svn :表示以用戶svn的身份啓動svn; -d :表示以daemon方式(後臺運行)運行; --listen-port 9999 :表示使用9999端口,可以換成你需要的端口。但注意,使用1024以下的端口需要root權限; -r /home/svndata :指定根目錄是/home/svndata。 |
編輯/etc/rc.d/rc.local文件,加入如下啓動命令:
/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata
|
killall svnserve
|
#!/bin/bash
# build this file in /etc/rc.d/init.d/svn # chmod 755 /etc/rc.d/init.d/svn # centos下可以用如下命令管理svn: service svn start(restart/stop) SVN_HOME=/home/svndata if [ ! -f "/usr/local/svn/bin/svnserve" ] then echo "svnserver startup: cannot start" exit fi case "$1" in start) echo "Starting svnserve..." /usr/local/svn/bin/svnserve -d --listen-port 9999 -r $SVN_HOME echo "Finished!" ;; stop) echo "Stoping svnserve..." killall svnserve echo "Finished!" ;; restart) $0 stop $0 start ;; *) echo "Usage: svn { start | stop | restart } " exit 1 esac |
安裝TortoiseSVN,重啓系統。啓動TortoiseSVN並在地址欄中輸入
svn://192.168.3.40:9999/ok100
根據提示輸入用戶名與密碼後就可以 |