天天看點

centos 下SVN服務搭建與配置

編輯

1、檢視是否安裝了svn工具

指令:rpm -qa | grep subversion

如果伺服器已經安裝了則不需要進行安裝,如果沒有安裝可以進行全新的安裝

2、首先檢測系統有沒有安裝SSL:

find / -name opensslv.h

如果找不到,就執行如下指令進行安裝:

yum install openssl

yum install openssl-devel

安裝之後用find / -name opensslv.h指令找到opensslv.h所在的目錄,即下列–with-openssl=後面的路徑,

3、解壓svn安裝檔案

subversion-1.6.6.tar.gz

subversion-deps-1.6.6.tar.gz

指令如下:

1 2

tar zxvf subversion-

1.6

.

6

.tar.gz

tar zxvf subversion-deps-

1.6

.

6

.tar.gz

tar 為解壓指令,zxvf為tar指令的參數,用于解壓tar.gz格式壓縮的檔案。

解壓後生成 subversion-1.6.6 子目錄,兩個壓縮包解壓後都會自動放到此目錄下,不用手動更改。

進入解壓子目錄 cd subversion-1.6.6 進行編譯。

4、編譯:

1 2

./configure --prefix=/usr/local/svn --with-openssl=/usr/include/openssl

--without-berkeley-db

後面以svnserve方式運作,是以不加apache編譯參數。以fsfs格式存儲版本庫,不編譯berkeley-db

如果編譯時報如下錯誤:

no acceptable C compiler found in $PATH

說明沒有gcc庫,使用如下指令安裝gcc後再編譯:

yum -y install gcc

如果最後出現下面WARNING,我們直接忽略即可,因為不使用BDB存儲。

1 2 3 4 5 6 7 8

configure: WARNING: we have configured without BDB filesystem support

You don't seem to have Berkeley DB version 

4.0

.

14

or newer

installed and linked to APR-UTIL. We have created Makefiles which

will build without the Berkeley DB back-end; your repositories will

use FSFS as the 

default

back-end. You can find the latest version of

Berkeley DB here:

http:

//www.sleepycat.com/download/index.shtml

安裝

make

make install

如果 make install 出現下面錯誤:

/home/upload/subversion-1.6.6/subversion/svnversion/.libs/lt-svnversion: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

make: *** [revision-install] Error 127

解決辦法:

1、編輯/etc/ld.so.conf檔案

vi /etc/ld.so.conf

添加下面一行代碼

/usr/local/lib

2、儲存後運作ldconfig:

/sbin/ldconfig

注:ld.so.conf和ldconfig用于維護系統動态連結庫。

3、然後再安裝

make && make install

測試是否安裝成功

1

/usr/local/svn/bin/svnserve --version

如果顯示如下,svn安裝成功:

1 2 3 4 5 6 7 8 9 10 11 12 13

svnserve, version 

1.6

.

6

(r40053)

compiled Dec 

25

2012

13

:

14

:

38

Copyright (C) 

2000

-

2009

CollabNet.

Subversion is open source software, see http:

//subversion.tigris.org/

This product includes software developed by CollabNet

(http:

//www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_fs : Module 

for

working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

4、為了友善下操作,把svn相關的指令添加到環境變量中:

echo “export PATH=$PATH:/usr/local/svn/bin/” >> /etc/profile

source /etc/profile

配置svn

1、建立SVN的根目錄

mkdir -p /opt/svn/

2、建立一個産品倉庫

mkdir -p /opt/svn/tshop/

svnadmin create /opt/svn/tshop/

如果你們的研發中心有多個産品組,每個産品組可以建立一個SVN倉庫

3、修改版本配置庫檔案

vi /opt/svn/tshop/conf/svnserve.conf

修改後的檔案内容如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

### This file controls the configuration of the svnserve daemon, 

if

you

### use it to allow access to 

this

repository.  (If you only allow

### access through http: and/or file: URLs, then 

this

file is

### irrelevant.)

### Visit http:

//subversion.tigris.org/ for more information.

[general]

### These options control access to the repository 

for

unauthenticated

### and authenticated users.  Valid values are 

"write"

"read"

,

### and 

"none"

.  The sample settings below are the defaults.

anon-access = none # 注意這裡必須設定,否則所有使用者不用密碼就可以通路

auth-access = write

### The password-db option controls the location of the password

### database file.  Unless you specify a path starting with a /,

### the file's location is relative to the directory containing

### 

this

configuration file.

### If SASL is enabled (see below), 

this

file will NOT be used.

### Uncomment the line below to use the 

default

password file.

password-db = passwd

### The authz-db option controls the location of the authorization

### rules 

for

path-based access control.  Unless you specify a path

### starting with a /, the file's location is relative to the the

### directory containing 

this

file.  If you don't specify an

### authz-db, no path-based access control is done.

### Uncomment the line below to use the 

default

authorization file.

authz-db = authz

### This option specifies the authentication realm of the repository.

### If two repositories have the same authentication realm, they should

### have the same password database, and vice versa.  The 

default

realm

### is repository's uuid.

realm = tshop

[sasl]

### This option specifies whether you want to use the Cyrus SASL

### library 

for

authentication. Default is 

false

.

### This section will be ignored 

if

svnserve is not built with Cyrus

### SASL support; to check, run 

'svnserve --version'

and look 

for

a line

### reading 

'Cyrus SASL authentication is available.'

# use-sasl = 

true

### These options specify the desired strength of the security layer

### that you want SASL to provide. 

means no encryption, 

1

means

### integrity-checking only, values larger than 

1

are correlated

### to the effective key length 

for

encryption (e.g. 

128

means 

128

-bit

### encryption). The values below are the defaults.

# min-encryption = 

# max-encryption = 

256

對使用者配置檔案的修改是立即生效的,不必重新開機svn。

4、開始設定passwd使用者賬号資訊

1 2 3 4 5 6 7 8 9 10 11 12 13

vi /data/svn/repos/conf/passwd

修改完之後的内容如下:

### This file is an example password file 

for

svnserve.

### Its format is similar to that of svnserve.conf. As shown in the

### example below it contains one section labelled [users].

### The name and password 

for

each user follow, one account per line.

### 在下面添加使用者和密碼,每行一組username = password

[users]

# harry = harryssecret

# sally = sallyssecret

###===========下面是我添加的使用者資訊========#######

iitshare = password1

itblood = password2

5、開始設定authz. 使用者通路權限

vi /data/svn/repos/conf/authz

修改完之後的内容如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

### This file is an example authorization file 

for

svnserve.

### Its format is identical to that of mod_authz_svn authorization

### files.

### As shown below each section defines authorizations 

for

the path and

### (optional) repository specified by the section name.

### The authorizations follow. An authorization line can refer to:

###  - a single user,

###  - a group of users defined in a special [groups] section,

###  - an alias defined in a special [aliases] section,

###  - all authenticated users, using the 

'$authenticated'

token,

###  - only anonymous users, using the 

'$anonymous'

token,

###  - anyone, using the 

'*'

wildcard.

###

### A match can be inverted by prefixing the rule with 

'~'

. Rules can

### grant read (

'r'

) access, read-write (

'rw'

) access, or no access

### (

''

).

[aliases]

# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil,

Ltd./OU=Research Institute/CN=Joe Average

# [groups]

# harry_and_sally = harry,sally

# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]

# harry = rw

# &joe = r

# * =

# [repository:/baz/fuz]

@harry_and_sally

= rw

# * = r

###--------------------下面我新加的------------------------###

###屏蔽掉上面的[groups] 因為在下面添加了

[groups]

devteam = iitshare, itblood #devteam 項目組包括兩個使用者iitshare,itblood

[/]

iitshare = rw

itblood =

[tshop:/tb2c]

@devteam

= rw

itblood =

[tshop:/tb2b2c]

@devteam

= rw

itblood = r

其中,1個使用者組可以包含1個或多個使用者,使用者間以逗号分隔。

說明:

1 2 3 4 5 6 7 8 9 10 11 12

devteam = iitshare, itblood #devteam 項目組包括兩個使用者iitshare,itblood

[/]

iitshare = rw #iitshare 對根目錄有讀寫權限

itblood = #itblood 對根目錄沒有任何權限

####如果需要配置tb2c、tb2b2c項目的權限,前提條件是tshop倉庫下面需要有這兩個項目

####如果沒有的話,tshop都将不能通路

[tshop:/tb2c] #對tshop倉庫的tb2c項目進行權限控制

@devteam

= rw #控制 devteam 組對tb2c項目有讀寫權限

itblood = #限制 itblood 所有權限,其它使用者有讀寫權限

[tshop:/tb2b2c] #對 tshop: 倉庫的 tb2b2c 項目進行權限控制

@devteam

= rw #限制 devteam 組對tb2b2c項目有讀寫權限

itblood = r #限制 itblood 隻有讀權限,其它使用者有讀寫權限

6、注意:

* 權限配置檔案中出現的使用者名必須已在使用者配置檔案中定義。

* 對權限配置檔案的修改立即生效,不必重新開機svn。

使用者組格式:

1 2 3 4 5 6 7

[groups]

= ,

其中,

1

個使用者組可以包含

1

個或多個使用者,使用者間以逗号分隔。

版本庫目錄格式:

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

@<使用者組名> = <權限>

<使用者名> = <權限>

其中,方框号内部分可以有多種寫法:

[/],表示根目錄及以下,根目錄是svnserve啟動時指定的,我們指定為/home/svndata,[/]就是表示對全部版本庫設定權限。

[tshop:/] 表示對版本庫tshop設定權限;

[tshop:/abc] 表示對版本庫tshop中的abc項目設定權限;

[tshop:/abc/aaa] 表示對版本庫tshop中的abc項目的aaa目錄設定權限;

權限主體可以是使用者組、使用者或*,使用者組在前面加@,*表示全部使用者。

權限可以是w、r、wr和空,空表示沒有任何權限。

7、建立啟動svn的使用者

useradd svn

根據提示,為使用者svn設定密碼

允許使用者svn通路版本庫:

chown -R svn:svn /opt/svn

8、啟動svn:

方式一:svnserve -d -r /opt/svn/ #預設的啟動端口号為3690

方式二:su – svn -c “svnserve -d –listen-port 9999 -r /opt/svn/”

其中:

su – svn表示以使用者svn的身份啟動svn;

-d表示以daemon方式(背景運作)運作;

–listen-port 9999表示使用9999端口,可以換成你需要的端口。但注意,使用1024以下的端口需要root權限;

-r /opt/svn 指定根目錄是/opt/svn。

9、檢查是否啟動

netstat -tunlp | grep svn

如果顯示以下資訊說明啟動成功

tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 10973/svnserve

10、将svn加入到開機啟動

編輯rc.local檔案:vi /etc/rc.d/rc.local

加入如下啟動指令:

/usr/local/svn/bin/svnserve -d –listen-port 9999 -r /opt/svn

11、如果想停止svn,則使用如下指令:

killall svnserve

12、如果想将svn作為服務:

在/etc/rc.d/init.d/目錄下建立名為svn的檔案

并設定權限為755:chmod 755 /etc/rc.d/init.d/svn

編輯svn檔案:vi /etc/rc.d/init.d/svn, 在裡面添加如下代碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

#!/bin/bash

# build 

this

file in /etc/rc.d/init.d/svn

# chmod 

755

/etc/rc.d/init.d/svn

# centos下可以用如下指令管理svn: service svn start(restart/stop)

SVN_HOME=/opt/svn

if

[ ! -f 

"/usr/local/svn/bin/svnserve"

]

then

echo 

"svnserver startup: cannot start"

exit

fi

case

"$1"

in

start)

echo 

"Starting svnserve..."

/usr/local/svn/bin/svnserve -d --listen-port 

9999

-r $SVN_HOME

echo 

"Finished!"

;;

stop)

echo 

"Stoping svnserve..."

killall svnserve

echo 

"Finished!"

;;

restart)

$

stop

$

start

;;

*)

echo 

"Usage: svn { start | stop | restart } "

exit 

1

esac

之後便可以以service svn start(restart/stop)方式啟動SVN。

通過web方式通路svn有很多方法,請參閱配置websvn或配置bsSvnBrowser的方法

用戶端通路

1、下載下傳安裝檔案

window 64位的話下載下傳:TortoiseSVN-1.7.6.22632-x64-svn-1.7.4.msi

window 32位的話下載下傳:TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi

具體的下載下傳檔案可以在網上下載下傳下,一找一大堆

2、通過用戶端進行通路

位址如下:

svn://{your-server-ip}:9999/tshop/ 或者 svn://{your-server-ip}:3690/tshop/

注意:

不要在浏覽器中通過http的方式進行通路,如下位址:

http://{your-server-ip}:9999/tshop/ 或者 http://{your-server-ip}:3690/tshop/

那樣肯定是不行的,因為你沒有配置http的服務,上面是安裝獨立的SVN伺服器

--------------------------------------------另轉分割線------------------------------------------------------

Linux(centOS6.5)下SVN的安裝、配置及開機啟動 作為一名“萬能”的碼農,這種活兒你遲早要幹的。----By Jimi沒有bond

準備工作:yum

1.檢查是否已安裝

rpm -qa subversion 如果要解除安裝舊版本:

yum remove subversion

2.安裝

yum install subversion PS:yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql(這是安裝配合Apache的子產品,我暫時還沒做,做了再補上,你可以隻裝subversion,多裝了也無所謂) 3.檢查是否安裝成功

svnserve --version 如果成功會輸出版本号

4.建立倉庫目錄

例如:

mkdir /home/svn/game

5.建立項目

svnadmin create /home/svn/game

6.檢查是否建立成功

cd /home/svn/game

ll 如果成功,game目錄下會多出幾個檔案夾

centos 下SVN服務搭建與配置

7.進入conf目錄會看到3個配置檔案,生成的檔案中都有英文注釋說明

示例需求:

策劃組:開策劃、美術讀寫

後端組:開後端讀寫,策劃隻讀

前端組:開前端讀寫,策劃、美術隻讀

美術組:開美術讀寫,策劃隻讀

管理者組:所有的讀寫 authz:使用者權限配置

示例:

[groups]

#管理組

manager = boss

#服務端使用者組

server = server1,server2

#用戶端使用者組

client = client1,client2

#美術組

art = art1,art2

#策劃組

design=design1,design2

[game:/]

manager=rw

[game:/server]

@server=rw

[game:/client]

@client=rw

@design=r

@art=r

[game:/art]

@design=rw

@art=rw

@client=r

[game:/design]

@design=rw

@server=r

@client=r

@art=r passwd:使用者密碼

[users]

boss=123456

server1=123456

server2=123456

client1=123456

client2=123456

art1=123456

art2=123456

design1=123456

design2=123456 svnserve.conf:

#匿名通路者權限

anon-access = none

#驗證使用者權限

auth-access = write

#密碼檔案位址

password-db = /home/svn/game/passwd

#權限檔案位址

authz-db = /home/svn/game/authz

#項目名稱(UUID)

realm =game

8.開放svn端口

預設是3690端口,你也可以用别的。已開啟的跳過這一步

修改

iptables -I INPUT -p tcp --dport 3690 -j ACCEPT

儲存

/etc/rc.d/init.d/iptables save

重新開機

service iptables restart

檢視

/etc/init.d/iptables status

9.啟動SVN服務

svnserve -d -r /home/svn -d:守護程序

-r:svn根目錄

假設服務端IP為192.168.1.100,那麼如下設定後game的通路目錄就為:

svn://192.168.1.100/game

10.安裝用戶端  TortoiseSVN

11.建立子目錄

在用戶端PC上找個目錄,用管理者帳戶從svn://192.168.1.100/game遷出game目錄,分别建立art,design,server,client 4個子目錄,然後送出。

這時候你可以用其他組的帳戶測試下是否正常使用了。

12.安裝好的svn服務端,預設是不會開機自啟動的,每次開機自己啟動會很麻煩,我們可以把它設成開機啟動

首先:編寫一個啟動腳本svn_startup.sh,我放在/root/svn_startup.sh

#!/bin/bash

/usr/bin/svnserve -d -r /home/svn/ 這裡的svnserve路徑保險起見,最好寫絕對路徑,因為啟動的時候,環境變量也許沒加載。

絕對路徑怎麼查?

which svnserve 這裡還有可能碰到一個問題,如果你在windows下建立和編寫的腳步,拿到linux下,用vi或者vim修改後可能會無法執行,這是檔案格式的問題

vi svn_startup.sh

輸入:set ff 回車

如果顯示的結果不是fileformat=unix

再次輸入

set ff=unix

就OK了 然後修改該腳本的執行權限

chmod ug+x svn_startup.sh

或者萬能的

chmod 777 svn_startup.sh 最後:加入自動運作

vi /etc/rc.d/rc.local

在末尾添加腳本的路徑,如:

/root/svn_startup.sh 現在,你可以重新開機一下試試了。 不懂得怎麼确認成功?敗給你了

ps -ef|grep svnserve

繼續閱讀