本文介紹在如何在ubuntu16.04 的系統(tǒng)上搭建svn服務(wù)器以及可能遇到的問(wèn)題。下面的操作都以root用戶進(jìn)行。
- 安裝svn服務(wù)器軟件subversion。
// 安裝完成后的svn版本為 1.9.3,通過(guò)svn --version可以查看版本號(hào)
apt-get install subversion
- 初始化svn目錄。
//創(chuàng)建測(cè)試目錄 repo1
mkdir -p /home/svn/repo1
// 初始化svn測(cè)試目錄
svnadmin create /home/svn/repo1
初始化后的svn目錄如圖所示

訪問(wèn)svn常用的有兩種協(xié)議 svn:// 和 svn+ssh:// 協(xié)議。下面分別進(jìn)行介紹。
- 使用svn:// 協(xié)議主要需要配置conf目錄下的三個(gè)文件。
1) svnserve.conf : repo1倉(cāng)庫(kù)svn服務(wù)配置文件
// 無(wú)認(rèn)證用戶不可以進(jìn)行訪問(wèn)
anon-access = none
//認(rèn)證用戶有讀寫(xiě)的權(quán)限
auth-access = write
//密碼存放在passwd文件中
password-db = passwd
//認(rèn)證權(quán)限存放在authz文件中
// 需要特別注意的是 所有配置的key都要頂格寫(xiě),不然讀取的時(shí)候會(huì)有問(wèn)題,造成客戶端無(wú)法讀取倉(cāng)庫(kù)
authz-db = authz
2)authz : 用戶權(quán)限配置文件
//groups 下存放分組下的用戶 多個(gè)用戶用,分割
[groups]
admin=harry,sally
//用相對(duì)路徑表示要確定的目錄 @組名 指定該組下所有用戶的權(quán)限 也可以直接指定單個(gè)用戶的權(quán)限
[/]
@admin=rw
3)passwd: 用戶密碼配置文件
//在users存放用戶的密碼,密碼是明文存儲(chǔ)的
[users]
harry = 111111
4 使用svn+ssh協(xié)議。使用這種方式將用ssh認(rèn)證代替svn自身的認(rèn)證,所以svn的conf目錄無(wú)需修改任何東西,只要保證svn的用戶有ssh登錄的權(quán)限和對(duì)svn文件夾訪問(wèn)的權(quán)限就可以了。比較常見(jiàn)的做法是將用戶放入一個(gè)用戶組中,確保用戶組對(duì)svn文件夾有訪問(wèn)權(quán)限。這樣可以往用戶組中添加多個(gè)用戶,使多個(gè)用戶都可以訪問(wèn)svn文件夾。
addgroup svngroup
useradd -m -g svngroup svn
chown -R svn:svngroup /home/svn/repo1
chmod -R g+rws /home/svn/repo1
采用svn+ssh的方式,需要注意兩個(gè)問(wèn)題:
1)ssh端口,ssh端口建議采用默認(rèn)的22端口,如果換成其他的端口,客戶端要考慮是否好配置。
2) 在新建svn用戶的時(shí)候,要為用戶建立一個(gè)默認(rèn)目錄,不然使用windows svn客戶端TortoiseSVN可能會(huì)出現(xiàn)無(wú)法登錄的情況。
5 啟動(dòng)svn服務(wù)器
// -d 表示守護(hù)進(jìn)程 -r 指定啟動(dòng)的根目錄 --log-file 指定日志的位置
svnserve -d -r /home/svn --log-file=/var/log/svnserve.log
啟動(dòng)時(shí)要注意啟動(dòng)的根目錄和訪問(wèn)目錄是否匹配。例如啟動(dòng)指定了-r /home/svn/repo1,訪問(wèn)時(shí)使用 svn://svn@ip:/home/svn/repo1 是訪問(wèn)不到這個(gè)倉(cāng)庫(kù)的。
參考文檔:SubVersion使用說(shuō)明