svn存儲版本數據也有2種方式:
1.bdb;
2.fsfs。
因為BDB方式在服務器中斷時,有可能鎖住數據(搞ldap時就深受其害,沒法根治),所以還是FSFS方式更安全一點,我也選擇這種方式。
下載相關軟件
wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz
二 解壓兩個包:
1.在此之前,我已經創建了一個用戶svnroot專門用來安裝管理svn的,就解壓在/root/sur/local/svn/目錄下
tar zxvf subversion-1.6.6.tar.gz
tar zxvf subversion-deps-1.6.6.tar.gz
2. 編譯安裝
1. ./configure --prefix=/root/usr/local/svn/subversion-1.6.6 --without-berkeley-db 2. 3. //prefix指定安裝的目錄,without-berkeley-db表明不使用berkeley數據庫 4. 5. //在這一步有可能不成功,是因為有一些依賴的軟件沒裝,具體見下面“遇到的問題” 6. 7. make 8. 9. make install
3.添加環境變量
1. 查看是否安裝成功 2. 3. /root/usr/local/svn/subversion-1.6.6/bin/svnserve --version 4. 5. //如果出現SVN的版本則證明安裝成功
1. 可以在/etc/profile中添加 2. vi /etc/profile3. export PATH=$PATH:/root/usr/local/svn/subversion-1.6.6/bin 4. 添加后保存退出5. 修改完成后,使用source /etc/profile 命令進行更新;
- 在看看配置的環境起作用了沒有 svnserve --version
錯誤匯總
1、 configure: error: We require OpenSSL; try --with-openssl
1. 錯誤提示需要安裝openssl,所以我就安裝了一個openssl,安裝方法如下: 2. 3. 4. cd /root/usr/local/ssl5. 6. tar -zxvf openssl-1.0.0a.tar.gz 7. 8. cd openssl-1.0.0a 9. 10. ./config 11. 12. ./config -t 13. 14. make depend 15. 16. make 17. 18. make test 19. 20. make instal 21. 22. 安裝之后會在/usr/local下生成一個ssl目錄,配置SVN時加上openssl路徑 23. 24. ./configure --prefix=/root/usr/local/svn/subversion-1.6.6 --without-berkeley-db --with-openssl=/usr/local/ssl
2./usr/local/ssl/lib/libssl.a:?could?not?read?symbols:?Bad?value??
1. 加上–without-serf 2. ./configure --prefix=/root/usr/local/svn/subversion-1.6.6 --without-berkeley-db --with-openssl=/usr/local/ssl -without-serf
?
三?建立倉庫
1. 創建目錄
1. mkdir -p /root/usr/local/svn/svndata/inc 2. 3. 加上參數P,是如果沒有父目錄則自動創建 4. 5. 注意: /root/usr/local/svn/svndata在這里將是所有倉庫的根目錄,innc是其中的一個倉庫。
2. 創建倉庫
1. svnadmin create /root/usr/local/svn/svndata/inc 2. 3. 這里使用SVN將inc建立為倉庫。則在inc文件夾里會生成一系列對于inc倉庫相應的配置文件
四 配置倉庫
1. 查看創建倉庫后的文件
進入/svndata/inc/conf,會發現有幾個配置文件
2. 修改svnserve.conf
1. vi svnserve.conf 2. 3. 打開這個配置文件,可以看到很多配置項已經注釋掉了,只需要按下面這幾項修改就可以了 4. 5. [general] 6. 7. anon-access = none 8. 9. auth-access = write 10. 11. password-db = passwd 12. 13. authz-db=authz
3. 目錄控制文件authz (or叫權限控制文件)
1. vi authz 2. 3. 默認是沒有配置的,要參照下面示例來配置 4. 5. [groups] 6. 7. admin = svnadmin 8. 9. [repos1:/] 10. 11. @admin = rw 12. 13. svnadmin = rw 14. 15. 上面的配置權限控制文件的配置格式如下: 16. 17. [groups] 18. 19. <用戶組名> = <用戶1>,<用戶2>, …… 20. 21. [<版本庫>:/項目/目錄] 22. 23. @<用戶組名> = <權限> 24. 25. <用戶名> = <權限> 26. 27. 其中,方框號內部分可以有多種寫法: 28. 29. /,表示根目錄及以下。根目錄是svnserve啟動時指定的,我們指定為/root/usr/local/svn/svndata 這樣,/就是表示對全部版本庫設置權限。 30. 31. inc:/,表示對版本庫1設置權限 32. 33. inc2:/occi,表示對版本庫2中的occi項目設置權限 34. 35. inc2:/occi/aaa,,表示對版本庫2中的occi項目的aaa目錄設置權限 36. 37. 權限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶。權限可以是w、r、wr和空,空表示沒有任何權限。
4. 修改用戶密碼文件passwd
1. vi passwd 2. 3. 默認也是沒有配置任何用戶的,可按下面配置示例配置 4. 5. [users] 6. 7. svnadmin = 123456 8. 9. 用戶密碼的配置格式: 10. 11. [users] 12. 13. <用戶1> = <密碼1> 14. 15. <用戶2> = <密碼2> 16. 17. 注意:這里的配置文件,除了注釋外每行都必須頂行,否則又會報錯了。
五 啟動SVN
1. svnserve -d -r /root/usr/local/svn/svndata 2. 3. -d表示在后臺運行,-r表示后臺執行?4. 5. 注意:這里是/root/usr/local/svn/svndata,并非/root/usr/local/svn/svndata/inc 。這是SVN使所有倉庫根目錄都生效的命令,并非某個倉庫。這里必須注意。
六 基本測試
1. svn co svn://ip/inc2. 3. checkout的時候,會要求輸入用戶名密碼,只有配置了的用戶才能驗證通過
七 端口開放
手動修改:
1. vi /etc/sysconfig/SuSEfirewall22. 3. #TCP端口的情況:4. 5. FW_SERVICES_EXT_TCP="3306 3690"6. 7. 防火墻設置的生效:8. SuSEfirewall2 restart
在windows 下 測試能不能訪問:telnet ip 端口
客戶端訪問
通過客戶端進行訪問,svn服務默認端口是:3390
地址如下:
svn://ip:3690/inc/
注意:
不要在瀏覽器中通過http的方式進行訪問,如下地址:http://ip:3690/tshop/
那樣肯定是不行的,因為你沒有配置http的服務,上面是安裝獨立的SVN服務器