Linux搭建SVN服務器詳細教程


前言

本文講解Linux系統下如何搭建SVN服務器,詳細說明各配置項的功能,最終實現可管控多個項目的復雜配置。

SVN是subversion的縮寫,是一個開放源代碼的版本控制系統,通過采用分支管理系統的高效管理,實現最終集中式的管理。

目前很多互聯網公司在使用SVN,優點在於使用方便、易於管理。與之對應的分布式的版本控制系統Git則更加靈活。

搭建

安裝SVN

//Ubuntu
apt-get install subversion

//Centos
yum install subversion

查看是否安裝成功,可以查看版本。

svnserve --version

提示版本1.13.0,說明已安裝成功。

創建版本庫目錄

創建SVN版本庫目錄,為后面創建版本庫提供存放位置,也是最后啟動SVN服務的根目錄。

我們在/usr路徑下創建svn目錄作為版本庫目錄。

cd /usr
mkdir svn

Linux系統各目錄知識延伸:

所以,將SVN庫存放在用戶文件目錄/usr下比較合理。

創建SVN版本庫

在上一步建立路徑基礎上,創建版本庫,如dev。

cd /usr/svn
svnadmin create dev

創建成功后,可以查看到dev目錄下生成的文件。

修改SVN配置

進入conf目錄,查看需要修改的配置文件。

cd /usr/svn/dev/conf
ls

配置文件:

  • authz:權限配置文件,控制讀寫權限
  • passwd:賬號密碼配置文件
  • svnserve.conf:svn服務器配置文件

修改svnserve.conf文件

vim svnserve.conf

去掉anon-access、auth-access、password-db、authz-db、realm幾項前的注釋符號“#”。

配置項含義:

  • anon-access = none|read|write 決定非授權用戶的訪問級別。none 表示無訪問權限,read 表示只讀,write 表示可讀可寫,默認為 read。
  • auth-access = none|read|write 決定授權用戶的訪問級別,使用與上面相同的訪問級別。默認為 write。
  • password-db = filename 指定賬號密碼數據庫文件名。filename 是相對倉庫中 conf 目錄的位置,也可以設置為絕對路徑,默認為passwd。
  • authz-db = filename 指定權限配置文件名,filename 是相對倉庫中 conf 目錄的位置,也可以設置為絕對路徑,默認為authz。
  • realm = realm-name 指定版本庫的認證域,即在登錄時提示的認證域名稱。若兩個版本庫的認證域相同,建議使用相同的賬號密碼數據庫文件passwd。

認證域知識延伸:

在SVN客戶端登錄時,會提示realm認證域,如下圖的認證域My First Repository

修改passwd文件

vim passwd

只需在末尾添加賬號和密碼,格式 賬號 = 密碼,如user1 = 123456,可添加多個。

修改authz文件

vim authz

在根目錄下設置user1、user2讀寫權限:

如果用戶比較多,可以使用groups形式設置分組team1,並在根目錄下指定分組@team1的權限:

如果想設置其他用戶的權限,可以通過*設置,如設置除@team1分組外其他用戶只讀權限:

[/]
@team1 = rw
* = r

啟動SVN服務

執行SVN啟動命令,其中參數-d表示以守護進程的方式啟動, -r表示設置的根目錄。

svnserve -d -r /usr/svn/

關閉svn命令:

killall svnserve

本地訪問SVN服務

在windows系統中,安裝TortoiseSVN軟件,創建一個本地目錄,右鍵選擇SVN Checkout測試下,URL填寫svn://IP/dev,dev替換成你創建的版本庫名稱。

輸入passwd配置好的用戶。

Checkout completed,SVN訪問成功,這就Nice了~

擴展

設置查看log日志

想查看提交的svn log日志,需要進一步配置。

編輯svnserve.conf,設置:

anon-access = none

編輯authz文件中添加:

[/]
* =

這樣通過鼠標右鍵TortoiseSVN->show log就可以查看svn提交的歷史記錄了。

多個項目管控配置

SVN配置文件是很靈活的,如果想使用統一的賬戶和權限去管控多個項目,可以將多個項目的authz和passwd文件統一放在一處,在多個項目的svnserve.conf文件中配置這兩個文件的絕對路徑,並在authz中對不同的項目設置用戶訪問權限。

如:a、b、c、d這4個用戶,p1、p2兩個項目,其中a、b只能訪問p1,c、d只能訪問p2。

創建版本庫目錄

mkdir /usr/svn

創建多個版本庫

cd /usr/svn
svnadmin create p1
svnadmin create p2

創建管理用戶權限目錄

mkdir /var/svn/conf
cd /p1/conf
cp authz passwd /var/svn/conf

修改配置文件

修改p1的svnserve.conf文件:

anon-access = none
auth-access = write 
password-db = /var/svn/conf/passwd 
authz-db = /var/svn/conf/authz 
realm = p1 

修改p2的svnserve.conf文件:

anon-access = none
auth-access = write
password-db = /var/svn/conf/passwd
authz-db = /var/svn/conf/authz
realm = p2

password-db和authz-db都使用統一管理用戶權限目錄,使用絕對路徑。

修改password-db文件

[users]
a = 123
b = 123
c = 123
d = 123

修改authz文件

[groups] //分組
p1user = a,b
p2user = c,d

[/]
* = #以上沒有定義的用戶都沒有任何權限

[p1:/] //p1的訪問控制,c、d無法訪問
@p1user = rw

[p2:/] //p2的訪問控制,a、b無法訪問
@p2user = rw

對password-db和authz文件的修改立即生效,不必重啟svn。

啟動svn服務

svnserve -d -r /usr/svn/

訪問不同項目SVN

同樣TortoiseSVN軟件,選擇SVN Checkout測試。

訪問項目p1 URL
svn://IP/p1

訪問項目p2 URL
svn://IP/p1

統一的配置文件,不同項目限定了不同用戶訪問,這樣就實現了管控多個項目的SVN配置。

以上就是Linux系統搭建SVN服務器詳細教程的所有內容,希望對大家有所幫助。

你學“廢”了么?


文章首發於我的博客 https://echeverra.cn/svnserve,原創文章,轉載請注明出處。

歡迎關注我的微信公眾號 echeverra,一起學習進步!不定時會有資源和福利相送哦!



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM