实验环境:
SVN+HTTP Server (zmedu63)
Client Server(zmedu64)
[root@zmedu63 ~]# yum install -y subversion httpd mod_dav_svn #包括HTTP所需模块一起装
[root@zmedu63 ~]# cat /etc/services | grep svn #查看已注册端口
svn 3690/tcp # Subversion
svn 3690/udp # Subversion
创建版本库目录
[root@zmedu63 ~]# mkdir /webdept #存放版本库的主目录
创建两个版本库
[root@zmedu63 ~]# svnadmin create /webdept/www.zmedu.cn
[root@zmedu63 ~]# svnadmin create /webdept/www.godxue.cn
注意:svnadmin命令是由subversion这个软件包提供的
[root@zmedu63 ~]# ls /webdept/www.zmedu.cn/ #随便查看一个版本库
dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据,刚开始新建时此目录没有
db目录:就是所有版本控制的数据存放文件
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion监控锁定数据的目录,用来追踪存取文件库的客户端
format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等),也是我们要关注的配置文件
[root@zmedu63 ~]# ls /webdept/www.zmedu.cn/conf/
authz passwd svnserve.conf
authz #认证权限相关
passwd #用户名和密码
svnserve.conf #服务器配置文件
针对不同版本库修改配置文件
[root@zmedu63 ~]# vim /webdept/www.zmedu.cn/conf/svnserve.conf #修改zmedu.cn的配置文件
[general]
anon-access = read #原先注释掉了,匿名用户可以读,使用none的话就是匿名用户不可以访问
改:20 # auth-access = write #这几行都要取消注释,认证用户可以写,可以是read,write,none
为:20 auth-access = write
改:40 # password-db = passwd #密码库文件,默认使用的是同一目录下的passwd文件作为用户密码库
为:40 password-db = passwd
改:34 # authz-db = authz #认证权限文件
为:34 authz-db = authz
改:39 # realm = My First Repository #登陆提示信息
为:39 realm = www.zmedu.cn
注意:此配置文件的所有内容必须顶格,否则会报错
配置用户和密码及认证权限
[root@zmedu63 ~]# vim /webdept/www.zmedu.cn/conf/passwd #设置用户名和密码
[users]
Make = 123456
MAN = 123456
top = 123456
#末尾添加上面三行
#对于部分版本,前面的[users]是有#号的,如果有#号,一定要取消,否则只能使用匿名用户登录,客户端登录不会出现登录窗口或密码提示,除非在配置文件将anon设置为none,否则将返回一个错误
#这里的密码都是明文,没有加密
[root@zmedu63 ~]# vim /webdept/www.zmedu.cn/conf/authz //设置用户和组的权限
[groups] #此行默认存在了
Check = Make,MAN #定义组,在[groups]下面添加
#用户组格式 用户组名 = 用户1,用户2
#一个组可以包含多个用户,英文逗号间隔,用户名必须是在passwd中存在的
[/] #/表示我当前所在版本库目录,这里代表www.zmedu.cn
top = rw
@Check = r #@Check表示这个组的权限,就是上面定义的组的成员
- = #除了上面的有赋予权限成员之外,其他的成员都没有权限
SVN目录格式:
[/目录名]
@用户组名 =权限
用户名 =权限
*=
服务SVN启动及创建测试代码
[root@zmedu63 ~]# svnserve -d -r /webdept/
#启动了所有版本库, 再 -r。如果只需要某一个版本库,
后面添加/webdept/www.zmedu.cn/的版本库即可 -d=daemon -r=root of directory of save指定根目录
[root@zmedu63 ~]# ps -aux | grep svn #查询到下面这行内容就可以了
root 2585 1 0 10:22 ? 00:00:00 svnserve -d -r /webdept/
[root@zmedu63 ~]# netstat -antup | grep svn #查看端口正常
tcp 0 00.0.0.0:3690 0.0.0.0:* LISTEN 48612/svnserve