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