想在一臺Ubuntu上搭建SVN服務,在網上看到的教程都需要安裝Apache,但我已經安裝了Nginx了,不想僅僅為了SVN再多裝一個Apache。經過一番摸索,終于搞定了最小化的SVN服務,額外的軟件什么也不需要安裝。
下面是詳細的過程:
1 通過apt-get安裝subversion
apt-get install subversion
我原來誤入歧途,以為會有個subversion-server之類的包,怎么找也找不到,后來才知道原來這個subversion同時包含了服務端和客戶端。
2 找個目錄當做SVN的根目錄
我選擇的是/data/svn,以下命令也都是跟著這個目錄走的,請按照自己的選擇自行修改
3 創(chuàng)建一個庫
我的叫做akcms,執(zhí)行完畢后會發(fā)現(xiàn)自動在/data/svn/akcms/目錄中生成了一堆東西,其中有一個叫conf的文件夾
svnadmin create /data/svn/akcms
4 接下來修改/data/svn/akcms/conf/下的三個文件,依次是:svnserve.conf、passwd、authz。他們三個作用分別是:主配置文件、密碼配置文件、權限配置文件
5 編輯文件vi /data/svn/akcms/conf/svnserve.conf
找到以下幾項,按照如下的設置修改,去掉前面的注釋,每一行的開頭不能有空格
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
6 編輯文件vi /data/svn/akcms/conf/passwd
[users]
mantou = 123456
格式很簡單,用戶名、密碼,每行一個,默認是明文保存
7 編輯文件 vi /data/svn/akcms/conf/authz
[groups]
develop = mantou
[/]
@develop = rw
這個配置稍微復雜點:[groups]組是設置用戶組的,比如:我設置的develop可以理解為開發(fā)人員組,等號的后面是組的成員,每個成員之間用逗號分隔。接下來的[/]為具體的某個地址設置權限,用@develop代表為develop組設置權限,rw代表又能讀又能寫。還有其他的復雜用法,不過我只懂最簡單最常用的,所以其他的都跳過。
8 啟動服務
svnserve -d -r /data/svn
參數(shù)-d表示以守護進程模式啟動,-r表示代碼倉庫的根目錄,如果啟動成功了,通過ps aux | grep svnserve可以看到進程,至此一個最簡單的SVN服務就搭建好了。
然后把這個命令放到rc.local中,讓每次開機都啟動SVN服務。
9 接下來測試驗證,在客戶機上找個目錄執(zhí)行一下命令:
svn co svn://192.168.0.111/akcms --username=mantou --force
svn://192.168.0.111/akcms就是新建的代碼倉庫的地址,假設剛才的服務是建在192.168.0.111上的。參數(shù)--username是指定用戶名的,不指定的話會以當前的系統(tǒng)用戶登錄,系統(tǒng)用戶和SVN用戶是不相干的兩套,所以還是人工指定的好。--force參數(shù)可有可無,如果在同一個地址上反復測試,刪了建建了刪,SVN客戶端會緩存住上一次成功checkout的UUID,如果刪了再建UUID會發(fā)生改變,客戶端校驗不一致會提示“Repository UUID 'xxx' doesn't match expected UUID 'xxx'”,加--force參數(shù)就不理會這個校驗,強行checkout。
如果順利的話,會提示“Checked out revision 0.”,然后在當前目錄下生成一個akcms的目錄,里面就是代碼倉庫的代碼了。