本文介紹在如何在ubuntu16.04 的系統上搭建svn服務器以及可能遇到的問題。下面的操作都以root用戶進行。
- 安裝svn服務器軟件subversion。
// 安裝完成后的svn版本為 1.9.3,通過svn --version可以查看版本號
apt-get install subversion
- 初始化svn目錄。
//創(chuàng)建測試目錄 repo1
mkdir -p /home/svn/repo1
// 初始化svn測試目錄
svnadmin create /home/svn/repo1
初始化后的svn目錄如圖所示
image
訪問svn常用的有兩種協議 svn:// 和 svn+ssh:// 協議。下面分別進行介紹。
- 使用svn:// 協議主要需要配置conf目錄下的三個文件。
1) svnserve.conf : repo1倉庫svn服務配置文件
// 無認證用戶不可以進行訪問
anon-access = none
//認證用戶有讀寫的權限
auth-access = write
//密碼存放在passwd文件中
password-db = passwd
//認證權限存放在authz文件中
// 需要特別注意的是 所有配置的key都要頂格寫,不然讀取的時候會有問題,造成客戶端無法讀取倉庫
authz-db = authz
2)authz : 用戶權限配置文件
//groups 下存放分組下的用戶 多個用戶用,分割
[groups]
admin=harry,sally
//用相對路徑表示要確定的目錄 @組名 指定該組下所有用戶的權限 也可以直接指定單個用戶的權限
[/]
@admin=rw
3)passwd: 用戶密碼配置文件
//在users存放用戶的密碼,密碼是明文存儲的
[users]
harry = 111111
4 使用svn+ssh協議。使用這種方式將用ssh認證代替svn自身的認證,所以svn的conf目錄無需修改任何東西,只要保證svn的用戶有ssh登錄的權限和對svn文件夾訪問的權限就可以了。比較常見的做法是將用戶放入一個用戶組中,確保用戶組對svn文件夾有訪問權限。這樣可以往用戶組中添加多個用戶,使多個用戶都可以訪問svn文件夾。
addgroup svngroup
useradd -m -g svngroup svn
chown -R svn:svngroup /home/svn/repo1
chmod -R g+rws /home/svn/repo1
采用svn+ssh的方式,需要注意兩個問題:
1)ssh端口,ssh端口建議采用默認的22端口,如果換成其他的端口,客戶端要考慮是否好配置。
2) 在新建svn用戶的時候,要為用戶建立一個默認目錄,不然使用windows svn客戶端TortoiseSVN可能會出現無法登錄的情況。
5 啟動svn服務器
// -d 表示守護進程 -r 指定啟動的根目錄 --log-file 指定日志的位置
svnserve -d -r /home/svn --log-file=/var/log/svnserve.log
啟動時要注意啟動的根目錄和訪問目錄是否匹配。例如啟動指定了-r /home/svn/repo1,訪問時使用 svn://svn@ip:/home/svn/repo1 是訪問不到這個倉庫的。
參考文檔:SubVersion使用說明