需求:
将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
实现svn方式和http方式访问
linux下svn服务器搭建
1 svn安装并创建版本库:
#1>yum安装
yum -y install subversion
#2>查看svn安装位置
rpm -ql subversion
#3>创建版本库目录存放svn repo
mkdir -p /svn/svndir
#4>创建版本库
svnadmin create /svn/svndir/test3
#创建完成后进入/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库的账号权限管理,控制账号是否读写权限
passwd:负责test3库的账号和密码管理,注意密码是明文的
svnserve.conf:svn服务器配置文件
示例:
#passwd文件,注意=两边要有空格
[users]
test1 = 123456
test2 = 12345
#authz文件
[test3:/]
test1 = rw
#表示test1用户对test3库是rw读写状态
#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模块实现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创建的用户名密码
AuthzSVNAccessFile /svn/svndir/authz
指权限文件
3 htpasswd创建用户密码
创建用户并设置密码
-m表示MD5加密,注意-c表示创建新文件,下次添加用户就不需要添加-c参数了,否则会覆盖之前添加的账户
-bash-4.1# htpasswd -cm /svn/svndir/passwd test1
New password:
Re-type new password:
Adding password for user test1
查看创建的用户名和密码
-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 创建基于http协议访问的用户授权文件
cat /svn/svndir/authz
[test3:/]
test1=rw
5 svn目录授权
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目录下的数据打包迁移到linux下的Repositories即可访问,但是用户名和密码不可以迁移,需要重建
注意
1 注意权限为问题,如果/svn/svndir属主不是apache,会一直访问拒绝访问
2 svn协助与http协议
svn协议,用于客户端使用svn://方式访问版本库,而mod_authz_svn模块让客户端可通过Apache访问版本库,它们分别使用不同的服务:svnserve、httpd进行访问。由于用户、组权限不同,权限管理方式也不相同,因此,不建议同时启动两种访问方式。
而易用性,管理方便的角度来分析,Apache以,mod_authz_svn模块的方式访问版本库会更多人选择。(mod_authz_svn方式,使用80端口访问,并且提供https等加密传输,用于用户信息验证的密码保存方式不是明文的)