CentOS7 下配置svn的安裝及基礎配置介紹
by:授客 QQ:1033553122
目錄
一、 實踐環境... 1
二、 安裝作業系統... 1
三、 安裝SVN. 1
四、 基礎配置... 2
五、 啟動SVN. 7
六、 用戶端通路... 8
七、 常見問題排查... 8
一、 實踐環境
CentOS 7作業系統(CentOS-7-x86_64-DVD-1503-01.iso)
下載下傳位址:http://ftp.riken.jp/Linux/centos/7/isos/x86_64/
二、 安裝作業系統
軟體選擇(SOFTWARE SELECTION):
三、
安裝SVN
[root@localhost
~]# yum
install subversion
檢視是否安裝安裝成功
~]# svnserve
--version
svnserve, version
1.7.14 (r1542130)
compiled Jun 9 2014,
18:54:44
Copyright (C)
2013 The Apache Software Foundation.
This software
consists of contributions made by many people; see the
NOTICE
file for more
information.
Subversion is
open source software, see http://subversion.apache.org/
The following
repository back-end (FS) modules are available:
*
fs_base : Module for working with a Berkeley DB
repository.
fs_fs : Module for working with a plain file (FSFS)
Cyrus SASL
authentication is available.
四、
基礎配置
建立一個空檔案夾,例如
svn,作為所有版本庫的根目錄
~]# mkdir -p /svn/
進入svn目錄,建立版本庫,比如
repo
~]# cd
/svn/
svn]# svnadmin
create --fs-type fsfs repo
#
檢視repo目錄檔案
svn]# cd repo/
repo]# ls
conf
db format hooks
locks README.txt
[root@localhost repo]# cd conf/
[root@localhost conf]# ls
authz
passwd
svnserve.conf
檔案說明:
1、svnserve.conf檔案
該檔案用于控制svnserve守護程序(svnserve
daemon)的配置,以便通路svn版本庫。如果僅是通過http://
或者file:URLs方式通路版本庫,則與該檔案配置不起作用。
[general]結點
anon-access(匿名通路)和auth-access(認證通路)選項,分别用于控制未認證使用者和與認證使用者對svn版本庫的通路,其可選值包含
write,read,none,如果設定為none則無對版本庫的讀寫通路權限;設定為write則有可讀可寫權限;設定為read則隻有讀權限。
password-db用于控制密碼資料庫檔案的位置,除非指定了一個帶符号‘/’
的路徑,否則檔案的位置為包含該配置檔案的相對路徑,如果開啟了SASL,則該檔案配置不起作用。
authz-db選項控制基于路徑通路控制的認證規則的位置。除非指定了帶‘/’的路徑,否則該檔案位置為包含該配置檔案的相對位置。如果不指定authz-db,則沒有基于路徑的通路控制。
realm
選項指定了版本庫的認證域(authentication
realm)。如果兩個版本庫有同樣的認認證域(authentication
realm),他們應該有相同的密碼資料庫,反之亦然。預設的
realm為版本庫的uuid
force-username-case
選項,在authz-db檔案配置的規則下,讓svnserve比較使用者名之前,規範化使用者名大小寫(case-normalize)。合法值有
lowser
轉小寫;upper轉大寫;none采用預設的,不進行大小寫轉化。
[sasl]結點
用于指定是否為認證使用 Cyrus
SASL類庫。預設的false。如果svnserve不帶Cyrus
SASL支援編譯的,那麼該小節會被忽略。運作'svnserve
--version,查找如下行'Cyrus
SASL authentication is available.'
則表示支援。
該選項指定了想讓SASL提供的安全級别,0表示加密,1表示僅內建檢查,大于1的的值是和用于加密的有效密匙長度相關的。
(e.g.
128
代表 128-bit加密).
預設值如下
min-encryption = 0
max-encryption = 256
2、password檔案
該檔案為svnserve密碼檔案執行個體,每行代表一個svn使用者賬戶
[users]
使用者名1
=
使用者密碼1
使用者名2
使用者密碼2
……
使用者名n
使用者密碼n
3、authz檔案
該檔案為svnserve認證執行個體檔案,定義路徑和版本庫(可選)的認證
其中每一行記錄可能代表
1)單個使用者
2)定義的一組使用者([groups]節點中定義的
3)定義的一個别名([aliases]節點中定義的
4)使用$authenticated
token的所有認證使用者
5)僅使用$anonymous
token的匿名使用者
6)*
任何人
[aliases]
暫時隻知道是設定别名,但是具體是怎麼定義的,不是很清楚,先不管吧
[groups]
自定義分組名1
使用者1,使用者2,……
自定義分組名2
使用者3,使用者4,……
自定義分組名n
使用者n1,使用者n2,……
說明:使用者名之間用英文逗号分隔
[repository_name:dir_path]
權限1
權限2
權限n
@自定義分組名1
@自定義分組名2
@自定義分組名n
&别名1
&别名2
&别名n
* =
權限
[dir_path]
說明:
1) [repository_name:dir_path]表示名為repository_name的版本庫的dir_path目錄,比如
[repo:/]表示repo版本的庫的根目錄
舉例:
svn版本庫目錄結構為:/svn/repo,,其中/svn為所有版本庫的根,repo為其中一個版本庫名稱,啟動方式:svnserve
-d -r /svn/,
那麼可以如下設定
[repo:/] /代表
[repo:/test1]
[repo:/test1/test2]
如果隻有一個版本庫,等效做法如下
[/]
[/test1]
[/test1/test2]
其中,test1,test2都是通過svn用戶端建立的目錄
3)
權限可為r、w、rw,分别代表隻可讀,隻可寫,可讀可寫,這裡r、w、rw隻針對dir_path最後層級的目錄生效
例:
shouke = rw
那麼svn:192.168.1.103/test1
進行通路,會提示認證失敗
4)
别名,使用者名,自定義分組不分先後順序
5)
權限,如果無任何權限則不填寫,直接
* =
,這裡,*表示除了指定的使用者,自定義分組,别名之外的任何人
修改svnserve.conf配置
conf]# vim svnserve.conf
找到如下内容
[general]
……(略)
anon-access = read
auth-access = write
改成如下内容
anon-access =
none
auth-access =
write
#password-db =
passwd
password-db =
password
authz-db = authz
authz-db =
authz
[sasl]
use-sasl = true
use-sasl =
true
新增svn使用者
conf]# useradd shouke
conf]# passwd shouke
Changing password
for user shouke.
New
password:
BAD PASSWORD: The
password is shorter than 8 characters
Retype new
passwd: all
authentication tokens updated successfully.
conf]# vim passwd
說明:使用者密碼 123456
修改password配置檔案
找到如下内容,
harry = harryssecret
sally = sallyssecret
在其下新增帶背景色内容,如下
shouke=123456
修改authz配置檔案
conf]# vim authz
harry_and_sally = harry,sally
harry_sally_and_joe = harry,sally,&joe
在其下新增一行内容,如下
group1 = shouke
[repository:/baz/fuz]
@harry_and_sally = rw
* = r
在其下新增内容,如下
[repo:/]
@group1 = rw
五、
啟動SVN
conf]# svnserve
-d -r /svn/
說明:-d
表示以daemon的方式運作,-r
dir_path
表示把dir_path當作版本庫的根目錄,比如
/svn/repo,svn://192.168.1.103/repo,通路的就是/svn/repo
檢視
conf]# netstat -antp | grep svn
tcp
0 0.0.0.0:3690
0.0.0.0:*
LISTEN
8474/svnserve
說明:如上,預設端口為3690
六、
用戶端通路
測試用戶端版本:TortoiseSVN-1.9.1.26747-win32-svn-1.9.1.1441852914.msi
七、
常見問題排查
1.Unable to
connect to repository at url ‘svn://…’ No repositroy found at
snv://……,如下
說明:通路方式不對,
1)類似svnserve
-d -r /svn/
方式(即指定路徑作為根目錄)開啟的svn服務,正确的通路方式svn://192.168.1.103/repo
即svn://ip[:port]/repository_name
2)不指定路徑作為版本庫的跟目錄裡,svnserve
-d
方式開啟的svn服務,正确的通路方式svn://192.168.1.103/svn/repo
即svn://[:port]/path_of_repository
2、
please wait
while the repository browser is initializing
說明:防火牆阻止了端口,解決方法(centos7下測試),開放端口
conf]# firewall-cmd --permanent --zone=public
--add-port=3690/tcp
success
conf]# firewall-cmd --reload
3、類似如下,目标計算機積極拒絕或者
說明:伺服器svnserve未開啟
作者:授客
QQ:1033553122
全國軟體測試QQ交流群:7156436
Git位址:https://gitee.com/ishouke
友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!
微信打賞
支付寶打賞 全國軟體測試交流QQ群