Subversion在CenOS 6.5上的安装配置
1、安装
yum install subversion
2、配置
#创建目录
mkdir /opt/svn
#创建版本库
svnadmin create /opt/svn/mysvn
3、修改认证设置
在/opt/svn/mysvn/conf下,有3个文件authz, passwd, svnserve.conf
其中svnserve.conf是全局安全配置
passwd是用户名密码文件
authz是权限文件
#修改svnserve.conf文件
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
将其前面的注释去掉,上述四行依次代表
默认用户没有权限,认证用户可以读写,密码文件为passwd,权限文件为authz
#设置passwd文件,user=password
[users]
shiyq=stone
zhangdy=zhangdy
liud=liud
#配置authz文件
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
dev = zhangdy,shiy,liud
[/]
@dev = rw
shiyq = rw
zhangdy = rw
liud = rw
#按照文档来说,配置用户组就可以了,但是用户组直接设置用户组@dev=rw,总是会出现认证错误,后来一个很奇怪的现象,就是系统中存在zyr这个用户组,还包括shiyq,zhangdy,liud这几个用户,所以需要直接直接指定用户权限,但需要注意的是密码不是系统密码,而是passwd文件里面的密码。
对于系统不存在的用户组,用户名,就可以直接设置,如下
[groups]
dev = zhangdy,shiy,liud
test = test1,test2,test3
[/]
@dev = rw
shiyq = rw
zhangdy = rw
liud = rw
@test = rw
* =
#其中test1,test2,test3需要在passwd文件中定义
[users]
shiyq=stone
zhangdy=zhangdy
liud=liud
test1=test1
test2=test2
test3=test3
#这种情况下,是可以用test1/test1访问的
4、启动和连接
启动命令
svnserve -d -r /opt/svn
#注意,不是svnserve -d -r /opt/svn/mysvn
访问方式
在客户端中的地址为: svn://192.168.0.111/mysvn
如果用命令行,svn有很多参数,可以慢慢研究
关闭
ps -ef | grep svn
kill 进程号
5、在Eclipse中,项目右键->Team->Share projects,选择SVN,填写地址,用户名,密码,就可以连接了
在每次提交之前,需要先更新一次,才能提交
6、防火墙问题
默认subversion的端口为3690,需要配置防火墙,iptables的命令如下
iptables -A INPUT -p tcp --dport 3690 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
有的时候,还需要关闭SELinux,这是一个增强的安全方案,但是没有找到配置subversion的方法,索性关掉了,可选办法有下列办法,我用的是第三种
1)、快速关闭SElinux,使用如下命令就可以:
/usr/sbin/setenforce 0 立刻关闭 SELINUX
/usr/sbin/setenforce 1 立刻启用 SELINUX
2)、加到系统默认启动里面
echo "/usr/sbin/setenforce 0" >> /etc/rc.local
3)、可以编辑配置文件达到同样的目的
vi /etc/selinux/conf
set SELINUX=disabled
7、常见问题
1)如果需要创建多个版本库,最好设置同一个权限,修改conf/svnserve.conf文件,将其中修改为类似如下的内容
password-db = ../../conf/passwd
authz-db = ../../conf/authz
指向的是/opt/svn/conf下的文件
2)在用Eclipse访问svn库时,在需要读取版本历史的时候,有的时候会出现
org.apache.subversion.javahl.ClientException: Item is not readable svn: Item is not readable
这个时候是普通用户没有读权限造成的,在authz文件中,找到"* = ",修改为"* = r"