目 錄
1 概述... 3
2 安裝Ubuntu 8.10服務(wù)器... 3
3 安裝Apache服務(wù)器... 3
4 創(chuàng)建SVN服務(wù)器... 3
4.1 安裝SVN.. 3
4.2 增加組... 4
4.3 創(chuàng)建SVN倉(cāng)庫(kù)... 4
4.4 配置Apache服務(wù)器... 4
5 配置SSL. 6
6 遠(yuǎn)程修改svn用戶口令... 10
6.1 修改Apache2的配置文件... 10
6.2 安裝mod_perl默認(rèn)包... 10
6.3 相關(guān)配置... 10
6.4 獲得修改口令的Perl腳本... 11
6.5 修改腳本執(zhí)行權(quán)限... 11
7 設(shè)置SVN的權(quán)限... 12
7.1 修改Apache的配置... 12
7.2 認(rèn)證文件的配置... 13
8 參考文獻(xiàn)... 14
附錄A:遠(yuǎn)程修改SVN用戶口令工具使用方法... 14
附錄B:Ubuntu 8.10修改IP地址... 15
附錄C:Ubuntu 下配置SSH服務(wù)... 15
1 概述
本文詳細(xì)描述了Ubuntu 環(huán)境下,SVN Apache SSL架構(gòu)的SVN服務(wù)器的搭建過(guò)程。通過(guò)https來(lái)訪問(wèn)SVN服務(wù)器,采用基于Apache的用戶認(rèn)證管理。用戶的權(quán)限使用authz配置。
2 安裝Ubuntu 8.10服務(wù)器
可以是Ubuntu 8.10 Server或者是Desktop。安裝過(guò)程中創(chuàng)建一個(gè)用戶名為administrator的系統(tǒng)帳戶,作為本服務(wù)器日常管理帳戶。另外,為了方便后續(xù)的說(shuō)明,假設(shè)服務(wù)器的ip地址為192.168.19.3。
安裝完成后,需要先運(yùn)行更新管理器,以獲得最新的源列表。
3 安裝Apache服務(wù)器
在新立得軟件包管理器里面,搜索apache2并選擇安裝 Apache2,libapache2-svn(apt-get install apache2 && apt-get install libapache2-svn)。安裝完成后,確認(rèn)能通過(guò)http訪問(wèn)http://192.168.19.3。正常情況下,會(huì)得到如下界面:
說(shuō)明apache已經(jīng)正常工作了。
4 創(chuàng)建SVN服務(wù)器
4.1 安裝SVN
在新立得軟件包管理器里面,搜索subversion,并選擇安裝 subversion,subversion-tools。安裝好之后,進(jìn)入下一步。
4.2 增加組
方法如下:
l 在 Ubuntu 菜單上選擇“系統(tǒng)->系統(tǒng)管理->用戶和組”;
l 切換到“組”標(biāo)簽;
l 點(diǎn)擊“添加組”按鈕;
l 組名為“subversion”;
l 將您自己(administrator)和“www-data”(Apache 用戶)加入組成員中;
l 點(diǎn)擊“OK”以確認(rèn)修改,關(guān)閉該程序。
或者直接使用命令,增加組和成員:
sudo addgroup subversion
sudo usermod -G subversion -a www-data administrator
當(dāng)然,修改組也可以直接修改組文件: sudo vi /etc/group。
然后需要注銷(我都是直接重新啟動(dòng))再登錄以便能夠真正成為 subversion 組的一員。
4.3 創(chuàng)建SVN倉(cāng)庫(kù)
現(xiàn)在執(zhí)行下面的命令
# cd /home
# sudo mkdir svn
#/usr/local/svn# sudo chown -R www-data:subversion svn
#/usr/local/svn# sudo chmod g+rwx svn -R
最后的一條命令賦予組成員對(duì)所有新加入文件倉(cāng)庫(kù)的文件擁有相應(yīng)的權(quán)限。
下面的命令用于創(chuàng)建 SVN 文件倉(cāng)庫(kù):
#sudo svnadmin create /home/svn
4.4 配置Apache服務(wù)器
先備份一下Apache2的配置文件,執(zhí)行如下命令:
#/usr/local/svn# sudo cp -R /etc/apache2 /etc/apache2_bak
通過(guò) WebDAV 協(xié)議訪問(wèn) SVN 文件倉(cāng)庫(kù),您必須配置您的 Apache 2 Web 服務(wù)器。您必須加入下面的代碼片段到您的 /etc/apache2/mods-available/dav_svn.conf中:(加在文件最后面即可)
<Location /svn >
DAV svn
SVNPath /home/svn
AuthType Basic
AuthName "welcome to subversion repository"
AuthUserFile /etc/subversion/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
如果需要用戶每次登錄時(shí)都進(jìn)行用戶密碼驗(yàn)證,請(qǐng)將<LimitExcept GET PROPFIND OPTIONS REPORT>與</LimitExcept>兩行注釋掉。
當(dāng)您添加了上面的內(nèi)容,您必須重新啟動(dòng) Apache 2 Web 服務(wù)器,請(qǐng)輸入下面的命令:
sudo /etc/init.d/apache2 restart
接下來(lái),您需要?jiǎng)?chuàng)建 /etc/subversion/passwd 文件,該文件包含了用戶授權(quán)的詳細(xì)信息。要添加用戶,您可以執(zhí)行下面的命令:
sudo htpasswd -c /etc/subversion/passwd superman
它會(huì)提示您輸入密碼,當(dāng)您輸入了密碼,該用戶就建立了。您可以通過(guò)下面的命令來(lái)訪問(wèn)文件倉(cāng)庫(kù):
你還可以繼續(xù)創(chuàng)建其他用戶,但是不能再用-c選項(xiàng)了,因?yàn)?c選項(xiàng)表示創(chuàng)建一個(gè)新的用戶授權(quán)文件,一旦選用,原有的授權(quán)文件就被覆蓋了。
sudo htpasswd /etc/subversion/passwd user_name
此時(shí),應(yīng)該就可以通過(guò)web方式訪問(wèn)svn服務(wù)器了。在瀏覽器的地址欄輸入 http://192.168.19.3/svn/會(huì)彈出用戶驗(yàn)證的窗口:
輸入正確的用戶名和口令后,就能看到如下界面:
7 設(shè)置SVN的權(quán)限
7.1 修改Apache的配置
為了實(shí)現(xiàn)細(xì)粒度的權(quán)限控制,可以通過(guò)修改svn的倉(cāng)庫(kù)目錄下的 conf/authz文件來(lái)實(shí)現(xiàn)。在此之前,需要告訴Apache,使用該文件
sudo vi /etc/apache2/mods-available/dav_svn.conf
修改后如下,其中藍(lán)色字體為新添加的內(nèi)容:
<Location /svn >
DAV svn
SVNPath /home/svn
AuthType Basic
AuthzSVNAccessFile /home/svn/conf/authz
AuthName "welcome to subversion repository"
AuthUserFile /etc/subversion/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
7.2 認(rèn)證文件的配置
sudo vi /home/svn/conf/authz
文件內(nèi)容類似如下:
[groups]
admin = admin
dev1 = jack, kate
dev2 = zbh2342, yingjianhh45, tantt, arei22
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[project:/]
* = r /其他用戶只有讀權(quán)限
@admin = rw /admin,dev1這個(gè)兩個(gè)組有讀寫權(quán)限
@dev1 = rw
對(duì)子項(xiàng)目的控制
[project:/DDWap] /對(duì)project/DDWap子目錄有讀寫權(quán)限,下面類似。
@dev2 = rw
[project:/DDAdmin]
@dev2 = rw
[project:/DDSync]
@dev2 = rw
[project:/DDWeb]
@dev2 = rw
[project:/DDWeb]
@dev2 = rw
[project:/docs]
@dev2 = rw
[project:/thirdparty]
@dev2 = rw
通過(guò)實(shí)踐,感覺(jué)Apache的權(quán)限配置很簡(jiǎn)單,但不是太方便,如果要針對(duì)子目錄設(shè)置不同的權(quán)限,則需要將每個(gè)目錄的權(quán)限都顯式的指定。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/jianping_shen/archive/2010/06/27/5697899.aspx