需求:
將windows上svn遷移到linux上
linux:centos 6.10
windows svn版本:visualSVN Server Manager 3.5.7
linu svn版本:subversion-1.6.11-15.el6_7.x86_64
apache:
httpd-2.2.15-69.el6.centos.x86_64
mod_dav_svn-1.6.11-15.el6_7.x86_64
實現(xiàn)svn方式和http方式訪問
linux下svn服務器搭建
1 svn安裝并創(chuàng)建版本庫:
#1>yum安裝
yum -y install subversion
#2>查看svn安裝位置
rpm -ql subversion
#3>創(chuàng)建版本庫目錄存放svn repo
mkdir -p /svn/svndir
#4>創(chuàng)建版本庫
svnadmin create /svn/svndir/test3
#創(chuàng)建完成后進入/svn/svndir/test3目錄下可看到
drwxr-xr-x 2 root root 4096 Jul 7 14:41 conf
drwxr-sr-x 6 root root 4096 Jul 7 14:41 db
-r--r--r-- 1 root root 2 Jul 7 14:41 format
drwxr-xr-x 2 root root 4096 Jul 7 14:41 hooks
drwxr-xr-x 2 root root 4096 Jul 7 14:41 locks
-rw-r--r-- 1 root root 229 Jul 7 14:41 README.txt
2 修改配置
進入conf目錄
cd /svn/svndir/test3/conf/
-rw-r--r-- 1 root root 1080 Jul 7 14:41 authz
-rw-r--r-- 1 root root 309 Jul 7 14:41 passwd
-rw-r--r-- 1 root root 2279 Jul 7 14:41 svnserve.conf
authz:負責test3庫的賬號權(quán)限管理,控制賬號是否讀寫權(quán)限
passwd:負責test3庫的賬號和密碼管理总滩,注意密碼是明文的
svnserve.conf:svn服務器配置文件
示例:
#passwd文件偷仿,注意=兩邊要有空格
[users]
test1 = 123456
test2 = 12345
#authz文件
[test3:/]
test1 = rw
#表示test1用戶對test3庫是rw讀寫狀態(tài)
#svnserve.conf文件
[general]
anon-access = read
auth-access = write
password-db = passwd //文件名
3 啟動訪問
啟動:
svnserve -d -r /svn/svndir
端口:3690 注意打開防火墻
訪問:
svn://192.168.1.206:3690/test3
httpd方式訪問svn
1 安裝apache
yum -y install httpd mod_dav_svn
用mod_dav_svn模塊實現(xiàn)Apache服務進行訪問svn倉庫俯萎,mod_dav_svn是Apache和svn之間的接口
2 修改svn的httpd配置文件
-bash-4.1# cat /etc/httpd/conf.d/subversion.conf|grep -v "^#"|grep -v "^$"
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /svn/svndir
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /svn/svndir/passwd
AuthzSVNAccessFile /svn/svndir/authz
Require valid-user
</Location>
SVNParentPath /svn/svndir
指如果有多個版本庫建議使用SVNParentPath不使用SVNPath,/svn/svndir 版本庫位置
AuthUserFile /svn/svndir/passwd
指后面使用apache的htpasswd創(chuàng)建的用戶名密碼
AuthzSVNAccessFile /svn/svndir/authz
指權(quán)限文件
3 htpasswd創(chuàng)建用戶密碼
創(chuàng)建用戶并設(shè)置密碼
-m表示MD5加密担映,注意-c表示創(chuàng)建新文件拧粪,下次添加用戶就不需要添加-c參數(shù)了,否則會覆蓋之前添加的賬戶
-bash-4.1# htpasswd -cm /svn/svndir/passwd test1
New password:
Re-type new password:
Adding password for user test1
查看創(chuàng)建的用戶名和密碼
-bash-4.1# cat /svn/svndir/passwd
test1:$apr1$mdDnVgZm$1vwM5rrejKX41ag4kzlKR
幫助
-bash-4.1# htpasswd -h
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
On Windows, NetWare and TPF systems the '-m' flag is used by default.
On all other systems, the '-p' flag will probably not work.
4 創(chuàng)建基于http協(xié)議訪問的用戶授權(quán)文件
cat /svn/svndir/authz
[test3:/]
test1=rw
5 svn目錄授權(quán)
chmod 755 /svn/svndir
chown -R apache:apache /svn/svndir
6 啟動
service httpd start
此時可以通過
http://192.168.1.206/svn/test3
在瀏覽器中輸入用戶名密碼訪問
將windows上Repositories遷移到linux機器上
直接將windows下Repositories目錄下的數(shù)據(jù)打包遷移到linux下的Repositories即可訪問屎勘,但是用戶名和密碼不可以遷移,需要重建
注意
1 注意權(quán)限為問題居扒,如果/svn/svndir屬主不是apache,會一直訪問拒絕訪問
2 svn協(xié)助與http協(xié)議
svn協(xié)議,用于客戶端使用svn://方式訪問版本庫丑慎,而mod_authz_svn模塊讓客戶端可通過Apache訪問版本庫喜喂,它們分別使用不同的服務:svnserve瓤摧、httpd進行訪問。由于用戶玉吁、組權(quán)限不同照弥,權(quán)限管理方式也不相同,因此进副,不建議同時啟動兩種訪問方式这揣。
而易用性,管理方便的角度來分析影斑,Apache以,mod_authz_svn模塊的方式訪問版本庫會更多人選擇给赞。(mod_authz_svn方式,使用80端口訪問矫户,并且提供https等加密傳輸片迅,用于用戶信息驗證的密碼保存方式不是明文的)