linux下搭建SVN


 

官網下載: http://subversion.apache.org/packages.html

SVN客戶端:TortoiseSVN :https://tortoisesvn.net/downloads.html

 

查看系統下有沒有安裝過老版本的svn:rpm -qa subversion,如果沒安裝過則什么都不顯示

 

 

如果有老版本先運行一下yum -y  remove subversion,刪除老版本。

 

第一步:通過yum命令安裝svnserve,命令:yum -y install subversion

此命令會全自動安裝svn服務器相關服務和依賴,安裝完成會自動停止命令運行

 

若需查看svn安裝位置,可以用命令:rpm -ql subversion

 

第二步:創建版本庫目錄(此僅為目錄,為后面創建版本庫提供存放位置,subversion默認是把/var/svn作為數據根目錄的,開機啟動默認也是從這里):mkdir /var/svn/svnrepos

 

第三步:創建svn版本庫

在第二步建立的路徑基礎上,創建版本庫:svnadmin create /var/svn/test(test為目錄(項目或版本庫)名稱,后面checkout項目時會用到。)

 

創建成功后,進入test目錄下,可以看見如下文件信息:cd /var/svn/test

conf:是這個倉庫配置文件(倉庫用戶訪問賬戶,權限)

format:是一個文本文件,里邊只放了一個整數,表示當前文件庫配置的版本號

hooks:放置hook腳步文件的目錄

locks:用來放置subversion的db鎖文件和db_logs鎖文件的目錄,用來追蹤存取文件庫的客戶端

 

第四步:配置修改

進入conf,conf目錄下,一共存放三份重要的配置文件,如下:

authz:負責賬號權限的管理,控制賬號是否讀寫權限

passwd:負責賬號和密碼的用戶名單管理

svnserve.conf:svn服務器配置文件

 

修改svnserve.conf:vim svnserve.conf

原始文件內容,都被注釋掉的,我們只需要去掉指定內容前注釋即可,如下:

[general]

anon-access = none                #控制非鑒權用戶訪問版本庫的權限

auth-access = write                 #控制鑒權用戶訪問版本庫的權限

password-db = passwd           #指定用戶名口令文件名,即訪問時要輸用戶名和密碼

realm = test                    #指定版本庫的認證域,即在登錄時提示的認證域名稱,改成自己的版本庫

 

修改authz文件信息:vim authz

在文件內容的末尾,添加如下:

rw表示賦予此賬號可讀寫的權限,r為讀,w為寫,注意[/]中的斜杠,這里如果斜杠反了,authz-db = authz 一直會提示“認證失敗”

第一種方式:單個添加:

# 按賬號分權限

[test/]

admin = rw

test = r

 

第二種方式(后面采用此方式配置):用戶分組,再設權限

[groups]
# 按用戶組分權限
admin = admin,admin1 # admin為用戶組,等號之后的為用戶
test = test1, test2 # test為用戶組,等號之后的為用戶

[/] # 表示svn倉庫目錄(/var/svn/test),test: 對應前面配置的realm = test
@admin = rw # 表示admin組對倉庫(/var/svn/test)目錄有讀寫權限,r為讀,w為寫
@test = r # 表示test組的用戶對對倉庫(/var/svn/test)目錄只有讀的權限

[/test1] # 表示test1目錄(/var/svn/test/test1)
@test = rw # 表示test組對test1目錄有讀寫權限
* =

 

備注:版本庫的目錄格式如下:

[<版本庫>:/項目/目錄]

@<用戶組名> = 權限

<用戶名> = 權限

其中[]內容有許多寫法:

[/],表示根目錄及其一下的路徑,根目錄是svnserver啟動時指定好的,上述實例中我們指定為:/svn/svndata([/]=/svn/svndata).[/]就是表示對全部版本設置的權限

[test:/],表示對版本庫test設置權限;

[test:/svnadmin],表示對版本庫test中的svnadmin項目設置權限;

[test:/svnadmin/second],表示對版本庫test中的svnadmin項目的目錄設置權限;

 

權限的主體可以是用戶組,用戶或者*,用戶組在前面要以@開頭,*表示全部用戶

權限分為:r ,w, rw和null ,null空表示沒有任何權限。

auhtz配置文件中的每個參數,開頭不能有空格,對於組要以@開頭,用戶不需要。

 

修改passwd文件信息vim passwd

直接將賬號和密碼信息追加到文件中即可,格式為:賬號 = 密碼,這里上面如果是設的分組,仍需設置每個角色對應的密碼

例如:admin = 123@qwe

 

到此,配置已經全部完成,賬號信息已經添加成功

更改svnserver.conf時需要重啟SVN服務才生效,更改authz,passwd文件時則不需要重啟服務

 

第五步:防火牆開啟

多數情況下服務器安裝完成,配置完成后,無法連接svn服務器,均是防火牆問題

配置防火牆端口

首先要明確CentOS7的默認防火牆為firewallD。subversion的默認端口為3690,如果沒有打開會報錯:

1: sudo firewall-cmd --permanent --add-service=telnet
2: sudo firewall-cmd --permanent --add-port=3690/tcp
3: sudo firewall-cmd --reload

centOS 7 防火牆開啟、關閉與查看狀態:
systemctl start firewalld
systemctl stop firewalld
systemctl status firewalld

出現以下情況則代表防火牆沒啟動用systemctl status firewalld查看防火牆狀態

 

啟動防火牆

 

配置

 

六:啟動svn服務器

# -d : 守護進程  -r : svn數據根目錄

svnserve -dr /var/svn            #用root權限啟動

查看SVN服務:

ps aux|grep svnserve               #默認端口為:3690

 

設置開機啟動

在centos7, 設置開機啟動:

sudo systemctl enable svnserve.service  #注意:根目錄必須是/var/svn 這樣才能設置成功!!

設置開機啟動后就可以按下面的方式開啟或停止服務了

systemctl start svnserve.service 

systemctl stop svnserve.service

 

7:檢出項目
進入windows 檢出項目 地址欄輸入 svn://項目ip:3690/test
項目ip可以通過 ip addr 或者 ifconfig 查看 inet,test 為當初建立的SVN版本庫 可以從上文尋找

注釋掉:authz-db = authz

 

再次檢出(admin,有讀寫權限)

在檢出目錄下新建個文檔提交,成功

 

清除SVN記錄的賬號信息:SVN設置_已保存數據_清除

 

 

如果報這樣的錯:svn: E204900: Can't open file '/var/svn/wangwa/format': Permission denied的錯誤。那就是與SELinux有關系,這里有兩種處理方式:

1、把SELinux關閉

  臨時關閉:sudo setenforce 0

  永久關閉:sudo vim /etc/sysconfig/selinux

  修改:SELINUX = disable               #值修改為disable.

2、svn與SElinux的設置(未測試)

  [root@localhost root]# chcon -R --reference=/var/svn /var/svn

  [root@localhost root]# restorecon -v -R /var/svn

 

異常及解決:

如果提示:svnserve: Root path '/var/svn' does not exist or is not a directory.目錄不存在

修改etc/sysconfig/svnserve配置文件將OPTIONS="-r /var/svn"改成自己的svndata目錄 如"-r/svndata/test"

 

如果提示:svnserve: E000098: Can't bind server socket: Address already in use 端口被占用

先用命令 >netstat -ntlp列出所有端口占用情況,找到端口3690的PID,結束掉些進程: kill PID號;再啟動

 


免責聲明!

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



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