Ubuntu下搭建SVN服務器
SVN的介紹
SVN
是Subversion
的簡稱,是一個開放源代碼的版本控制系統,相較於RCS
、CVS
,它采用了分支管理系統,它的設計目標就是取代CVS
。互聯網上很多版本控制服務已從CVS
遷移到Subversion
。
Ubuntu
下安裝SVN
及配置
- 安裝
SVN
sudo apt-get install subversion
- 建立
svn
倉庫
1). 建立svn
目錄:mkdir /home/.svn
(使用隱藏目錄)
2). cd /home/.svn
3). mkdir oneTOinf
4). 創建倉庫oneTOinf
:svnadmin create /home/.svn/oneTOinf
oneTOinf
目錄有svnadmin
創建的目錄和文件
5). mkdir test
6). 創建倉庫test
:svnadmin create /home/.svn/test
,執行完畢後test目錄有svnadmin
創建的目錄和文件
- 配置和管理
svn
執行之後 oneTOinf/conf
下文件結構如下:
? at [10/02/17][11:40:17]
? ? tree oneTOinf/conf
oneTOinf/conf
├── authz
├── hooks-env.tmpl
├── passwd
└── svnserve.conf
可以看到在當前目錄下有著svn
的三個配置文件。
1). vi svnserve.conf
,配置項在[general]
下:
anon-access
:匿名用戶的權限,可以為read
,write
和none
,默認值read
。
- 不允許匿名用戶訪問:
anon-access = none
auth-access
:認證用戶的權限,可以為read
,write
和none
,默認值write
。password-db
:密碼數據庫的路徑authz-db
:認證規則庫的路徑
註意:這些配置項的行都要頂格,否則會報錯。修改配置後需要重啟svn
才能生效。
2).vim passwd
這是每個用戶的密碼文件,比較簡單,就是“用戶名=密碼”,采用的是明碼。如allen=111111
3). vim authz
[groups] section
:為了便於管理,可以將一些用戶放到一個組裏邊,比如:owner=allen,ellen
groups
下邊的sections
表示對一個目錄的認證規則,比如對根目錄的認證規則的section為[/]
。設置單用戶的認證規則時一個用戶一行,如:
[/]
allen=rw #allen對根目錄的權限為rw
ellen=r #ellen對根目錄的權限為r
如果使用group
,需要在group
名字前加@
,如
@owner=rw #group owner中的用戶均為rw,等價於上邊的兩句話
啟動時如果從/home/.svn/oneTOinf
啟動,/
就是oneTOinf
目錄,用如上方式以oneTOinf
目錄為根設置權限。
如果從/home/.svn/
啟動,每個倉庫根還是自己的起始目錄。可以采用如上方式設置oneTOinf
的權限,也可以采用如下方式:
[oneTOinf:/]
@owner=rw
設置test的權限如下:
[test:/]
@harry_and_sally = rw
簡言之,每個倉庫的根目錄(/)
就是自己的起始目錄;[repos:/]
這種方式只適用於多倉庫的情況;[/]
適合於單倉庫和單倉庫的方式。
- 不能跨越倉庫設置權限。就是不能在
oneTOinf
倉庫的配置項中配置test
倉庫 - 具體的配置展示:
svnserve.conf
[general]
#匿名用戶不可讀
anon-access = none
#權限用戶可寫
auth-access = write
#密碼文件為passwd
password-db = passwd
#權限文件為authz
authz-db = authz
# 編輯authz制定管理員組即admin組的用戶為oneTOinf admin組有rw(讀寫權限) 所有人有r(讀權限)
[groups]
admin= oneTOinf
[oneTOinf:/]
@admin =rw
*=r
# 編制passwd 文件 設定用戶密碼
[users]
oneTOinf=oneTOinf
- 啟動和停止
svn
1). 啟動:
從
oneTOinf
目錄啟動,svnserve -d -r /home/.svn/oneTOinf
,根目錄
(/)
是oneTOinf
,authz
中規則的配置使用section[/]
。訪問方式為:
svn://192.168.0.87/
從
.svn
目錄啟動,svnserve -d -r /home/.svn
,根目錄
(/)
是.svn
,authz
中對oneTOinf
的配置使用[oneTOinf:/]
,? 對
test
的配置使用[test:/]
。訪問方式為:
svn://192.18.0.87/oneTOinf
svn://192.18.0.87/test
- 如果需要
svn
自啟動,把命令加入/etc/rc.local
中2). 檢查
svn
服務器是否已經啟動(svn
默認使用3690端口):netstat -an | grep 3690
3). 停止:
killall svnserve
測試如下:
? at [10/02/17][12:24:07]
? ? svnserve -d -r /home/.svn
? at [10/02/17][12:24:38]
? ? netstat -an | grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
unix 3 [ ] STREAM CONNECTED 36909
? at [10/02/17][12:25:02]
? ?
在windows客戶端下進行測試:
Ubuntu下搭建SVN服務器