SVN--subversion的五种访问方式
SVN的訪問方式
Subversion 文件倉庫可以通過許多不同的方式進(jìn)行訪問(Check Out,簽出)——通過本地硬盤,或者通過各種網(wǎng)絡(luò)協(xié)議。無論如何,文件倉庫的位置總是使用 URL 來表示。下表顯示了不同的 URL 模式對(duì)應(yīng)的訪問方法:
| 模式 | 訪問方法 |
| file:/// | 直接訪問本地硬盤上文件倉庫 |
| http:// | 通過 WebDAV 協(xié)議訪問支持 Subversion 的 Apache 2 Web 服務(wù)器 |
| https:// | 類似 http://,支持 SSL 加密 |
| svn:// | 通過自帶協(xié)議訪問 svnserve 服務(wù)器 |
| svn+ssh:// | 類似 svn://,支持通過 SSH 通道 |
這里只介紹http://的多庫訪問,因?yàn)楹苡写硇裕呀?jīng)包含所有的基本配置了,特此記錄日志。
實(shí)現(xiàn)功能:
MD5加密(使用apache的htpasswd的-m加密)
http://訪問 (apache的mod_dav_svn.so 和mod_authz_svn.so)
多版本庫共存 和易于管理的獨(dú)立配置文件(subversion.conf)
庫文件內(nèi)的任意一個(gè)文件的權(quán)限操作(這是單svn://無法達(dá)到的)
不需要開放多余端口
---------------------------------------------------安裝-----------------------------------------------------
yum install subversion httpd mod_dav_svn
#只需要以上的三個(gè),配置源,下載最新的。這里的apache可以因人而異自行修改,主要文件還是Apache的mod_dav_svn模塊的支持
--------------------------------------------------配置----------------------------------------------------
首先說明庫的根目錄是/home/svn,在根目錄下會(huì)創(chuàng)建多個(gè)庫
#第一個(gè)庫:
mkdir /home/svn/datesvn
svnadmin create /home/svn/datesvn
#第二個(gè)庫:
mkdir /home/svn/datesvn1
svnadmin create /home/svn/datesvn1
#這里為了統(tǒng)一管理,所有的配置在第一個(gè)庫datesvn里配置,然后通過apache來指向配置文件位置,就不用寫兩份配置文件了
vi /home/svn/datesvn/authz
[groups] #通過分配群組來實(shí)現(xiàn)目錄訪問權(quán)限
admin = ch
docs = test2
#datesvn的庫
[datesvn:/]
ch = rw
[datesvn:/Test] #這里是datesvn庫里邊的Test文件夾的權(quán)限
@docs = r # @指的是代表群組docs所有成員,上邊的是獨(dú)立一個(gè)成員ch
#datesvn1的庫
[datesvn1:/] # 這里[/] [datesvn:/] [datesvn1:/]其實(shí)分別意思為,/home/svn,/home/svn/datesvn/,/home/svn/datesvn,當(dāng)然這里是不推薦放出[/]目錄的
@docs = rw
#權(quán)限有r,w,rw,還有none,最好不要做出* =r或者* = rw等的事情。如果你配過防火墻,那么應(yīng)該知道原則是先封閉,后開放。那么為了更加安全,默認(rèn)subserve是只有寫在配置文件的目錄才能被訪問,沒有寫上去的不能被訪問。也就是說,默認(rèn)不寫東西是無法被訪問的,也就是封閉的,那么再寫下目錄和權(quán)限,這樣的話就不會(huì)有沖突的訪問規(guī)則。例如根目錄下你的默認(rèn)訪問權(quán)限是r,也就是* = r,那么你認(rèn)為就算你后來設(shè)置w的時(shí)候不會(huì)有問題嗎?我反正是無論如何都是寫不進(jìn)的,只要有* =r。有人這么寫過,不過我想不通他這么寫的原因,或許就是個(gè)可讀庫吧
vi /etc/httpd/conf.d/subversion.conf
<Location />
DAV svn
SVNParentPath /home/svn/ #這里是設(shè)置根目錄,也就是所有庫文件的根目錄例如/home/svn/datesvn和/home/svn/datesvn1的根目錄就是/home/svn
# SVNPath /home/svn/datesvn #這里是設(shè)置單個(gè)庫的目錄,如果只有一個(gè)庫,可以用這個(gè)
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "驗(yàn)證信息" #svn連接時(shí)的提示信息,可手動(dòng)修改
AuthzSVNAccessFile /home/svn/datesvn/conf/authz #文件訪問的權(quán)限配置文件,需要制定文件,官網(wǎng)說明沒有這項(xiàng),需要自己補(bǔ)上
AuthUserFile /home/svn/datesvn/conf/passwd #指定密碼文件
Require valid-user #只有認(rèn)證用戶才可以訪問,類似防火墻的拒絕
# </LimitExcept>
</Location>
/*
如果你樂意,也可以這樣做
<Location /datesvn>
DAV svn
#SVNParentPath /home/svn/ #這里是設(shè)置根目錄,也就是所有庫文件的根目錄例如/home/svn/datesvn和/home/svn/datesvn1的根目錄就是/home/svn
SVNPath /home/svn/datesvn #這里是設(shè)置單個(gè)庫的目錄,如果只有一個(gè)庫,可以用這個(gè)
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "驗(yàn)證信息" #svn連接時(shí)的提示信息,可手動(dòng)修改
AuthzSVNAccessFile /home/svn/datesvn/conf/authz #文件訪問的權(quán)限配置文件,需要制定文件,官網(wǎng)說明沒有這項(xiàng),需要自己補(bǔ)上
AuthUserFile /home/svn/datesvn/conf/passwd #指定密碼文件
Require valid-user #只有認(rèn)證用戶才可以訪問,類似防火墻的拒絕
# </LimitExcept>
</Location>
<Location /datesvn1>
DAV svn
#SVNParentPath /home/svn/ #這里是設(shè)置根目錄,也就是所有庫文件的根目錄例如/home/svn/datesvn和/home/svn/datesvn1的根目錄就是/home/svn
SVNPath /home/svn/datesvn1 #這里是設(shè)置單個(gè)庫的目錄,如果只有一個(gè)庫,可以用這個(gè)
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "驗(yàn)證信息" #svn連接時(shí)的提示信息,可手動(dòng)修改
AuthzSVNAccessFile /home/svn/datesvn/conf/authz #文件訪問的權(quán)限配置文件,需要制定文件,官網(wǎng)說明沒有這項(xiàng),需要自己補(bǔ)上
AuthUserFile /home/svn/datesvn/conf/passwd #指定密碼文件
Require valid-user #只有認(rèn)證用戶才可以訪問,類似防火墻的拒絕
# </LimitExcept>
</Location>
由于很多文章沒有詳細(xì)講述SVNParentPath,當(dāng)時(shí)個(gè)人覺得還是挺方便的,推薦
*/
#添加可訪問用戶
htpasswd -c /home/svn/datesvn/conf/passwd ch
htpasswd /home/svn/datesvn/conf/passwd test2
htpasswd的使用方法請(qǐng)?jiān)谖业牧硪晃恼虏榭?/em>
service httpd restart
#以上是個(gè)人查閱文檔后寫的簡(jiǎn)單模板,有更好的建議請(qǐng)聯(lián)系我。
/*-------------------------------------------------------------介紹篇------------------------------------------------------------------------
/home/svn/datesvn/conf下這些文件是主要的配置文件:
svnserve.conf: svn服務(wù)配置文件,apache有相似的功能,所以這里沒有說這個(gè)文件的作用,因?yàn)椴粫?huì)用到。
passwd: 用戶名口令文件。
authz: 權(quán)限配置文件。
安裝完mod_dav_svn后,默認(rèn)會(huì)在apache的conf.d目錄,出現(xiàn)以下模塊的mod_dav_svn.so 和mod_authz_svn.so
以及subversion.conf,當(dāng)然你會(huì)看見,
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
已經(jīng)幫你寫好調(diào)用了,不需要再主配置文件httd.conf再寫的了
權(quán)限問題,由于是http訪問,那么寫和讀都要有apache的權(quán)限操作才能完成
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
# # cd /var/www/svn
# # svnadmin create stuff
# # chown -R apache.apache stuff
# # chcon -R -t httpd_sys_content_t stuff
subversion里邊有寫到,必須是apache可以訪問,如果有開selinux,那么chcon -R -t httpd_sys_content_t stuff
*/
那么配置好后,主要是以下幾個(gè)文件的增刪改查:
添加用戶 htpasswd /home/svn/datesvn/conf/passwd 用戶
修改權(quán)限 vi /home/svn/datesvn/authz
service httpd reload
訪問方式
http://ip/datesvn
http://ip/datesvn1
當(dāng)然也可以配置域名訪問
更多詳情可看subversion中文網(wǎng),比較簡(jiǎn)潔的版本安裝,但是功能定制比較詳細(xì)的就沒有比較好的例子了
http://wiki.ubuntu.org.cn/SubVersion
總結(jié)
以上是生活随笔為你收集整理的SVN--subversion的五种访问方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Silverlight 2 和 VS
- 下一篇: latex中希腊字母_LaTeX符号(L