svn服務器基本知識及搭建

聲明,本文大多數都是東拼西湊而來,並非本人完全出品,如有雷同,大家見諒!

另外,歡迎大家光顧我們公司遊戲:航空大亨、船長日誌、我是英雄(三款主打帶給大家)

一、svn概述

   svn(subversion)是一個開源的版本控制系統, 也就是說 Subversion 管理着隨時間改變的數據。這些數據放置在一箇中央資料檔案庫 (repository) 中。這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變動。這樣你就可以把檔案恢復到舊的版本, 或是瀏覽文件的變動歷史。

二、svn中的一些基本概念

(1). repository(源代碼庫)

源代碼統一存放的地方

(2). Checkout (提取)

當你手上沒有源代碼的時候,你需要從repository checkout一份

(3). Commit (提交)

當你已經修改了代碼,你就需要Commit到repository

(4). Update (更新)

當你已經Checkout了一份源代碼, Update一下你就可以和Repository上的源代碼同步,你手上的代碼就會有最新的變更

三、不多廢話,殺入主題,安裝部署svn 獨立服務器。  (整合apache的安裝請自己搜索)

1.安裝方法:

   ①yum安裝:yum -y install subversion(你的技術還停留在yum基礎麼?)

   ②源碼包編譯安裝(我比較喜歡源碼包安裝,因爲有丁點難度,哈哈)

[root@gang ~]# wget http://www.apache.org/dist/subversion/subversion-1.8.5.tar.gz

[root@gang opt]# tar zxf subversion-1.8.5.tar.gz

[root@gang opt]# cd subversion-1.8.5

[root@gang subversion-1.8.5]# mkdir -p /usr/local/webserver/

2、別急着安裝,現在來安裝依賴包

1).安裝apr-1.4.6.tar.gz

[root@gang webserver]# tar zxf apr-1.4.6.tar.gz

[root@gang webserver]# cd apr-1.4.6

[root@gang apr-1.4.6]# ./configure --prefix=/usr/local/webserver/apr

[root@gang apr-1.4.6]# make && make install

2).安裝apr-util-1.4.1.tar.gz

[root@gang webserver]# tar zxf apr-util-1.4.1.gz

[root@gang webserver]# cd apr-util-1.4.1

[root@gang apr-util-1.4.1]# ./configure --prefix=/usr/local/webserver/apr-util --with-apr=/usr/local/webserver/apr

[root@gang apr-util-1.4.1]# make && make install

3).安裝pcre-8.32.tar.gz

[root@gang webserver]# tar zxf pcre-8.32.tar.gz

[root@gang webserver]# cd pcre-8.32

[root@gang pcre-8.32]# ./configure --prefix=/usr/local/webserver/pcre && make && make install

4).安裝zlib-1.2.5.tar.gz

[root@gang webserver]# tar zxf zlib-1.2.5.gz

[root@gang webserver]# cd zlib-1.2.5

[root@gang zlib-1.2.5]# ./configure  && make && make install

----此處的./configure不可隨意的--prefix,不然會導致ssh服務,啓動異常,或者之後svn錯誤

5).獲取sqlite文件支持

[root@gang webserver]# wget http://cznic.dl.sourceforge.net/project/sqlite.mirror/SQLite%203.7.12/sqlite-amalgamation-3071200.zip

[root@gang webserver]# unzip sqlite-amalgamation-3071200.zip

[root@gang webserver]# mkdir -p /usr/local/webserver/subversion-1.8.5/sqlite-amalgamation/

[root@gang webserver]# cp sqlite-amalgamation-3080200/* subversion-1.8.5/sqlite-amalgamation/

三、正式安裝

[root@gang subversion-1.8.5]# ./configure --prefix=/usr/local/webserver/svn --with-apr=/usr/local/webserver/apr --with-apr-util=/usr/local/webserver/apr-util --with-zlib=/usr/local/webserver/zlib/ --without-berkeley-db --with-openssl=/usr/include/openssl/

#svn存儲版本數據有2種方式:BDB(一種事務安全型表類型)和FSFS(一種不需要數據庫的存儲系統)。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點

[root@gang subversion-1.8.5]# make  && make install

至此svn安裝完畢(如果各位遇到其他問題,請諮詢度娘和谷歌)

export "PATH=$PATH:/usr/local/webserver/svn/bin" >> /etc/profile

echo "

/usr/local/lib

/usr/local/lib64

"  >> /etc/ld.so.conf

[root@gang ~]# ldconfig

四、正式使用

 1.創建版本庫

[root@gang ~]# svnadmin create /data/svndata/20140116    ---20140116是版本庫名稱

輸入後,會在 “創建的目錄下”生成如下三個文件 :/data/svndata/20140116/conf

svn服務配置文件 svnserve.conf
用戶口令文件 passwd

權限配置文件 authz

2.配置文件詳解及案例

No1.  svnserve.conf 文件,該文件配置項分爲以下5項:(每行的配置前不能有空格)


 anon-access: 控制非鑑權用戶訪問版本庫的權限。

 auth-access:控制鑑權用戶訪問版本庫的權限。

 password-db: 指定用戶名口令文件名。

 authz-db:指定權限配置文件名,通過該文件可以實現以路徑爲基礎的訪問控制。

 realm:指定版本庫的認證域,即在登錄時提示的認證域名稱。若兩個版本庫的認證域相同,建議使用相同的用戶名口令數據文件

No2. passwd裏邊保存用戶和密碼

[users] ----定義用戶和用戶密碼

# harry = harryssecret

# sally = sallyssecret

admin = 追夢創遊    

guest = 航空大亨

user1 = 船長日誌

user2 = “Doodle Fill For Tango”

gang = Linux

word = 運維工程師

chenjian = chenjianpwd

No3. authz  文件

[groups] ----定義用戶組    左側爲組,又側爲包含用戶

admin = admin, gang

group1 = user1, user11

group2 = user2

docs = word

training = chenjian

--這裏把不同用戶放到不同的組裏面,下面在設置目錄訪問權限的時候,用目錄來操作就可以了。

# 爲所有庫指定默認訪問規則

# 所有人可以讀,管理員可以寫,危險分子沒有任何權限

[/]      --對應目錄:/data/svndata

* = r

@admin = rw       ----admin組的用戶可讀寫

dangerman =       ----危險用戶沒權限

# 允許開發人員可以完全訪問他們的項目版本庫

[proj1:/]            ----定義group組 1 的用戶可以讀寫

@group1 = rw         ----帶@ 的,代表組, 不帶@ 的表示對用戶權限的設定

[proj2:/]

@group2 = rw

[bigproj:/]

@grou1 = rw

@group2 = rw

trevor = rw

# 文檔編寫人員對所有的docs目錄有寫權限

[/trunk/doc]

@docs = rw

# 培訓人員可以完全訪問培訓版本庫

[TrainingRepos:/]        -------版本庫目錄格式:
@training = rw                       [<版本庫>:/項目/目錄]
                                    @<用戶組名> = <權限>
                                    <用戶名> = <權限>


  2. svn服務控制

開啓svn服務:svnserver –d –r /var/svndata    --  -d表示後臺運行  -r 表示根目錄

                                                  --listen-port 指定監聽端口
關閉svn服務: killall svnservice 或者kill -9 pid

五、客戶端的使用。

根據你的系統32bit/64bit下載TortoiseSVN 1.7-1.8內的版本

把文件上傳到SVN版本庫後,上傳的文件不再以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中(/data/svndata/20140116/db/revs中)。

附註: svn最重要的一點,權限分配!

原文地址請參照:http://blog.csdn.net/tianlesoftware/article/details/6119231



本文出自 “技術成就未來” 博客,請務必保留此出處http://jishuweiwang.blog.51cto.com/6977090/1352324

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章