svn,git开发很喜欢的工具,版本管控很方便,公司有一需求内网安装svn服务器,市场部,运营,商务,平台,行政,开发各自只能看到自己部门文件,还好svn客户端是用windows也蛮简单,开搭;
1. 安装:yum install subversion
判断是否安装成功
subversion -v
svnserve,version 1.6.11 (r934486)
说明安装成功。
有了SVN软件后还需要建立SVN库。
mkdir /home/svn/repos
svnadmin create /home/svn/repos
执行上面的命令后,自动在repos下建立多个文件, 分别是conf,db,format,hooks,locks,README.txt。
2.配置调试
进入上面生成的文件夹conf下,进行配置,有以下几个文件authz,passwd,svnserve.conf
其中authz 是权限控制,可以设置哪些用户可以访问哪些目录,passwd是设置用户和密码的,svnserve是设置svn相关的操作。
cd /home/svn/repos/svn/conf 并且 vim passwd(添加用户):
[users]
# harry = harryssecret
# sally = sallyssecret
ff=f@1111
cc=cc1111
zz=1121@1
zw=111111
li=aaa@111
ou=111@123
tt=tt@123
wt=ww111123
ee=11111123
再设置权限authz
[/]
hello= rw
意思是hello用户对所有的目录有读写权限,当然也可以限定。
如果是自己用,就直接是读写吧。
[groups]
all=cc,ff,zz,zw,li,ou,tt,ee,wt 所有的人 以下是各个部门的人分配,原文件随便修改的;
ot=ff,zw 看到所有文件;
Op=ee,zw 以下部门
Commerce=cc,zw
dev=ou,tt
market=ff,li
platform=ou
xingzheng=wt
admin=admin
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
[/]
@all=r 跟目录貌似都要看到
@admin=rw
[/开发]
@ot=rw
@dev=rw
*=
[/运营]
@Op=rw
@ot=rw
*=
[/市场]
@market=rw
@ot=rw
*=
[/平台]
@ot=rw
@platform=rw
*=
[/商务]
@ot=rw
@Commerce=rw
*=
[/tools]
@all=rw
[/share]
@all=rw
[/行政]
@xingzheng=rw
@ot=rw
*=
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
最后设定snvserv.conf
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = password
authz-db = authz # 访问控制文件
realm = /home/svn/repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写,左侧不能留空格,否则会出错.
3.设置svn开机自启动
编辑文件 /etc/sysconfig/rc.local
添加一行 svnserve -d -r /home/svn/repositories
或者使用系统已有的svnserve 服务/etc/init.d/svnserve 文件,通过配置/etc/sysconfig/svnserve
#!/bin/bash
OPTIONS=" -r /home/svn/repos"
好了,通过以上配置,你的svn就可以了。
启动svn: svnserve -d -r /home/svn/repos
关闭svn服务:kill svnserve
如果已经有svn在运行,可以换一个端口运行
svnserve -d -r /home/svn/repos --listen-port 3391
这样同一台服务器可以运行多个svnserver
至此svn服务器配置完毕,以后进入svn客户端创建开发,运营等文件夹目录,就可以测试了;
PS:如果svn版本没日志,那么只需要修改svnserver.conf文件里面:
anon-access = read -->修改为 anon-access = none。修改过后测试没有问题,log可以正常显示。