本文SVN服務器運行方式:獨立服務器 (例如:svn://xxx.com/xxx)php
svn存儲版本數據也有2種方式:linux
BDB(一種事務安全型表類型)和FSFS(一種不須要數據庫的存儲系統)。web
由於BDB方式在服務器中斷時,有可能鎖住數據,因此仍是FSFS方式更安全一點。數據庫
具體部署:apache
1.下載subversion安裝包centos
[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]#
2.編譯SVN安全
首先檢測系統有沒有安裝SSL:bash
[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
安裝以後用find / -name opensslv.h命令找到opensslv.h所在的目錄,即下列--with-openssl=後面的路徑,編譯:svn
[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
注:以svnserve方式運行,不加apache編譯參數。以fsfs格式存儲版本庫,不編譯berkeley-db。
3.安裝SVN
爲避免出現如下錯誤
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
2)、保存後運行ldconfig:
/sbin/ldconfig
注:ld.so.conf和ldconfig用於維護系統動態連接庫。
安裝
[root@server subversion-1.6.6]# make && make install
安裝完成,執行如下命令測試:
[root@server subversion-1.6.6]# /usr/local/svn/bin/svnserve --version
爲了方便下操做,下面將SVN的BIN添加到PATH,編輯/etc/profile,添加:
PATH=/usr/local/svn/bin:$PATH
保存後,使其當即生效:
source /etc/profile
4.配置SVN
創建版本庫目錄,可建多個:
[root@server ~]# mkdir -p /home/svndata/repos #創建版本庫,repos爲版本庫的目錄,一個項目對應一個目錄 [root@server ~]# /usr/local/svn/bin/svnadmin create /home/svndata/repos #修改版本庫配置文件
編輯/home/svndata/repos/conf/svnserve.conf,內容修改成:
[general] anon-access = none auth-access = write password-db = /usr/local/svn/conf/passwd.conf authz-db = /usr/local/svn/conf/authz.conf realm = repos
注意:對用戶配置文件的修改當即生效,沒必要重啓svn。
在/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 xufz [root@server ~]# passwd xufz
編輯/usr/local/svn/conf/passwd.conf,添加以下代碼並保存:
[users] wll = 123456
注:這個[users]千萬不能少,否則後面在checkout版本庫的時候會權限驗證的錯誤
配置svn用戶訪問權限,編輯usr/local/svn/conf/authz.conf,添加以下代碼並保存:
[groups] admin = wll [/] @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和空,空表示沒有任何權限。
創建啓動svn的用戶:
[root@server ~]# useradd svn [root@server ~]# passwd svn
容許用戶svn訪問版本庫:
[root@server ~]# chown -R svn:svn /home/svndata
啓動svn:
[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。
5.將svn加入到開機啓動
編輯/etc/rc.d/rc.local文件,加入以下啓動命令:
/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata
若是想中止svn,則使用以下命令:
killall svnserve
若是想將svn做爲服務,在/etc/rc.d/init.d/目錄下新建名爲svn的文件並設置權限爲755,並添加以下代碼:
#!/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
6.鏈接SVN
安裝TortoiseSVN,重啓系統。啓動TortoiseSVN並在地址欄中輸入
svn://192.168.1.87:9999/repos
linux的話,直接在web目錄執行svn co svn://192.168.1.87:9999/repos
原文:http://300second.blog.51cto.com/7582/780348