SVN存儲版本 數據也有2種方式:BDB和FSFS。因為BDB方式在服務器中斷時,有可能鎖住數據所以還是FSFS方式更安全一點,我安裝時也使用的是FSFS方式。SVN服務器有2種運行方式:獨立服務器和借助apache。2種方式各有利弊,獨立SVN服務器不結合Apache安裝使用,連接獨立SVN服務器也不用HTTP協議。這是比較快捷的SVN服務器配置方法。本次安裝時使用的是獨立用品方式。
一 下載工具
1. subversion-1.6.17.tar.gz
2. subversion-deps-1.6.17.tar.gz
這兩個包可以直接到CSDN去下載,版本要一樣,都是必須下載的,否則單獨下載第一個包編譯時就會提示缺少模塊。這兩個包下載解壓后會解壓到同一個目錄下,不需要特別指定。
二 解壓安裝
1. 解壓兩個包:
在此之前,我已經創建了一個用戶svnadmin專門用來安裝管理svn的,就解壓在/home/svnadmin/目錄下
tar -xzvf subversion-1.6.17.tar.gz
tar -xzvf subversion-deps-1.6.17.tar.gz
2. 編譯安裝
./configure --prefix=/home/svnadmin/subversion --without-berkeley-db
//prefix指定安裝的目錄,without-berkeley-db表明不使用berkeley數據庫
//在這一步有可能不成功,是因為有一些依賴的軟件沒裝,具體見下面“遇到的問題”
make
make install
//也許要sudo,看情況
3. 查看是否安裝成功
/home/svnadmin/subversion/bin/svnserve --version
//如果出現SVN的版本則證明安裝成功
三 添加環境變量
可以在/etc/profile中添加,這是全局的。其實最好是專門添加一個svnadmin用戶,在~/.bashrc中添加即可:
exprot PATH=$PATH:/home/svnadmin/subversion/bin
四 建立倉庫
1. 創建目錄
mkdir -p /home/svnadmin/svndata/repos1
加上參數P,是如果沒有父目錄則自動創建
注意: /home/svnadmin/svndata在這里將是所有倉庫的根目錄,repos1是其中的一個倉庫。
2. 創建倉庫
svnadmin create /svndata/repos1
這里使用SVN將repos1建立為倉庫。則在repos1文件夾里會生成一系列對於repos1倉庫相應的配置文件
五 配置倉庫
1. 查看創建倉庫后的文件
進入/svndata/repos1/conf,會發現有幾個配置文件,如下圖
2. 修改svnserve.conf
vi svnserve.conf
打開這個配置文件,可以看到很多配置項已經注釋掉了,只需要按下面這幾項修改就可以了
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db=authz
3. 目錄控制文件authz (or叫權限控制文件)
vi authz
默認是沒有配置的,要參照下面示例來配置
[groups]
admin = svnadmin
[repos1:/]
@admin = rw
svnadmin = rw
上面的配置權限控制文件的配置格式如下:
[groups]
<用戶組名> = <用戶1>,<用戶2>, ……
[<版本庫>:/項目/目錄]
@<用戶組名> = <權限>
<用戶名> = <權限>
其中,方框號內部分可以有多種寫法:
/,表示根目錄及以下。根目錄是svnserve啟動時指定的,我們指定為/home/svnadmin/svndata。這樣,/就是表示對全部版本庫設置權限。
repos1:/,表示對版本庫1設置權限
repos2:/occi,表示對版本庫2中的occi項目設置權限
repos2:/occi/aaa,,表示對版本庫2中的occi項目的aaa目錄設置權限
權限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶。權限可以是w、r、wr和空,空表示沒有任何權限。
4. 修改用戶密碼文件passwd
vi passwd
默認也是沒有配置任何用戶的,可按下面配置示例配置
[users]
svnadmin = 123456
用戶密碼的配置格式:
[users]
<用戶1> = <密碼1>
<用戶2> = <密碼2>
注意:這里的配置文件,除了注釋外每行都必須頂行,否則又會報錯了。
五 啟動SVN
svnserve -d -r /home/svnadmin/svndata
-d表示在后台運行,-r表示……
注意:這里是/home/svnadmin/svndata,並非/home/svnadmin/svndata/repos1。這是SVN使所有倉庫根目錄都生效的命令,並非某個倉庫。這里必須注意。
六 開啟SVN的端口,默認是3690
在測試的時候,在本機可以使用svn,但是到了其他主機(在同一個局域網)就不行了,
錯誤信息提示:svn: 無法連接主機“192.168.6.74”: 沒有到主機的路由
這就是因為防火牆的問題,要保證服務器和客戶端都沒有屏蔽這個端口
七 基本測試
1. checkout
svn co svn://192.168.6.74/repos1
checkout的時候,會要求輸入用戶名密碼,只有配置了的用戶才能驗證通過
2. 更新
svn up
3. 提交
svn ci -m 'add file'
4. 查看信息
svn info
5. 增/刪
svn add file / svn del fiel
八 遇到的問題
剛開始我在虛擬機上的ubuntu上面安裝時,出現了如下的錯誤,附上解決方法。后來我在red hat服務器上面安裝的時候就不會出現如下錯誤,可以是服務器版的linux已經安裝了這些軟件。環境不同,可能還會出現其他的問題,沒有遇到而已。
1. OpenSSL
configure配置SVN時可能提示如下錯誤信息:
configure: error: We require OpenSSL; try --with-openssl
解決方法:
錯誤提示需要安裝openssl,所以我就安裝了一個openssl,安裝方法如下:
cd /usr/local
tar -zxvf openssl-1.0.0a.tar.gz
cd openssl-1.0.0a
./config
./config -t
make depend
make
make test
make instal
安裝之后會在/usr/local下生成一個ssl目錄,配置SVN時加上openssl路徑
./configure --prefix=/home/svnadmin/subversion --without-berkeley-db --with-openssl=/usr/local/ssl
2. zlib
configure配置SVN時可能提示如下錯誤信息:
configure: error: subversion requires zlib
錯誤提示需要安裝zlib
下載zlb:http://zlib.net/
cd /usr/local
tar -xvzf zlib-1.2.5.tar.gz
cd zlib-1.2.5
./configure
make
make install
3. expat
configure配置SVN時可能提示如下錯誤信息:
configure: error: no XML parser was found: expat or libxml 2.x required
錯誤提示需要安裝expat
下載expat :http://sourceforge.net/project/showfiles.php?group_id=10127
cd /usr/local
tar -xvzf expat2.tar.gz
cd expat2
./configure
make
make install