svn服务器搭建总结

 

linux搭建SVN服务器

基于svn协议,端口3690的SVN服务器搭建

svn软件安装

1、源码安装svn

约定源码存放目录/datum/src/

Ø 安装apr

./configure --prefix=/datum/src/apr-1.5.1

make &make install

Ø 安装apr-util

./configure --prefix=/datum/src/apr-util-1.5.4--with-apr=/datum/src/apr-1.5.1

make &make install

Ø 安装sqlite-autoconf

./configure--prefix=/datum/src/sqlite-autoconf-3080703

make &make install

Ø 安装serf(svn 1.8版本之前的需要neon,1.8版本之后弃用neon而改使用serf.),如果不安装,在linux上使用svn checkout会报错 E170000:Unrecognized URL scheme for http

serf需要安装scons,由scons安装serf

Ø 安装scons

tar -xzf scons-2.3.4.tar.gz

cd scons-2.3.4

python setup.py install

scons

yum -y install expat-devel

Ø 安装serf

tar -jxvf serf-1.3.8.tar.bz2

cd /datum/src/serf-1.3.8

scons PREFIX=/usr/local/serf APR=/datum/src/apr-1.5.1APU=/datum/src/apr-util-1.5.4

scons -Y /datum/src/serf-1.3.8

scons PREFIX=/usr/local/serf LIBDIR=/usr/lib64

scons PREFIX=/usr/local/serf install

Ø 安装svn

  ./configure--prefix=/datum/src/subversion-1.8.10 --with-apr=/datum/src/apr-1.5.1--with-apr-util=/datum/src/apr-util-1.5.4 --with-sqlite=/datum/src/sqlite-autoconf-3080703--with-serf=/usr/local/serf

make &make install

2、配置path环境变量

vi /etc/profile,在/etc/profile最后加入:

export PATH=$PATH:/datum/src/subversion-1.8.10/bin

svn版本库创建及测试

参考博客http://blog.163.com/longsu2010@yeah/blog/static/173612348201202114212933

1、创建svn版本库目录

mkdir -p /datum/svndata/repos1

 

2、创建版本库

svnadmin create /datum/svndata/repos1

执行了这个命令之后会在/datum/svndata/repos1目录下生成如下这些文件

3、svn主要配置文件

进入conf目录(该svn版本库配置文件)

authz文件是权限控制文件

passwd是帐号密码文件

svnserve.conf SVN服务配置文件

设置帐号密码

vi passwd

[users]块中添加用户和密码,格式:帐号=密码,如harry=harry

 

设置权限

vi authz

在末尾添加如下代码:

[/]

harry=rw

w=r

意思是版本库的根目录harry对其有读写权限,w只有读权限。

svnserve.conf文件

vi svnserve.conf

打开下面的几个注释:

anon-access = read #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

realm = /datum/svndata/repos1 # 认证空间名,版本库所在目录

4、启动版本库

svnserve -d -r /datum/svndata/repos1

5、在windows上测试

新建一个测试文件夹,在该文件夹下右键选择 SVN checkout如下图(要事先安装TortoiseSVN)

填写SVN的地址,如下图:

输入密码,如下图:

基于http协议的SVN服务器搭建(Apache+Subversion)

参考博客: http://www.linuxidc.com/Linux/2011-07/38581.htm

1、先搭建基于svn协议的SVN服务器(参考上一章节)

2、再安装Apache和svn的补丁包:

yum installhttpd 

yuminstall  mod_dav_svn   //SubversionApache之间的接口(通过它,Apache就可以访问版本库,可以让客户端也使用HTTP的扩展协议 WebDAV/DeltaV进行访问) 
yum install  mod_auth_mysql  //
这一项用于用户身份验证,在网上有资料说貌似这个mod_auth_mysql没得配置访问权限的只有用户设置,建议不装,用htpasswd就可以,在这里我没有装,我还是打算用htpasswd,可能下回会试试。 
验证 svn模块(mod_dav_svn)是否正确安装 
ls /etc/httpd/modules | grep svn 

系统提示如下: 

 

3、修改配置文件

vi subversion.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>

   DAV svn

   SVNPath/datum/svndata/repos1

      AuthTypeBasic

      AuthName"Authorization Realm"

      AuthUserFile/home/svn/passwd

      Requirevalid-user

     AuthzSVNAccessFile /datum/svndata/repos1/conf/authz

</Location>

4、添加组及组员权限
groupaddsubversion     //创建一个叫subversion的组为拥有仓库所在的目录 
usermod -G subversion -a apache   //将Apache 用户加入组成员subversion 

chown -R apache: subversion /datum/svndata/repos1

chmod-R 755  /datum/svndata/repos1

 

5、添加http访问用户

[root@build:/home/svn]# htpasswd -c /home/svn/passwd tom//第一次添加用户使用参数“-c”以后再添加就不用了 

New password:

Re-type new password:

Adding password for user tom

6、重启httpd服务

 service httpd restart

7. 使用浏览器访问

http://172.18.7.198/svn/

 

两种协议使用总结

1、独立的svn访问方式:svn://172.18.7.198  用户和密码认证使用svn本身的passwd文件。如/datum/svndata/repos1/conf/passwd

2、http协议访问方式:http://172.18.7.198/svn 用户和密码认证使用,htpasswd加密的文件。如/home/svn/passwd

建议使用基于http协议的访问方式,使用起来比较方便可以通过浏览器临时查看文件,通过svn协议无法通过浏览器访问

常见问题:

访问svn服务器提示Forbidden

You don't have permission to access /svn/ on this server.


Apache/2.2.15 (Oracle) Server at 172.18.7.198 Port 80

 

原因:SELinux造成的

此时可以来查询下当前的SELinux服务状态:

[root@linuxprobe ~]# getenforce 
Enforcing

 为了确认是这个讨厌的SELinux服务在捣鬼,我们来先关闭它试试吧:

[root@linuxprobe ~]# setenforce 0

检查状态,现在已经是禁止模式了:

[root@linuxprobe ~]# getenforce
Permissive

再次访问svn地址OK。

 

Expected FS format between '1' and '4'; found format '6'

Svn版本兼容性问题

一直提示密码

如下截图

这种情况的原因很多,如果是单独的基于svn协议。应该是svn的auth和passwd文件配置问题。如果是基于http协议的,首先也是检查svn的auth和passwd文件是否配置了正确的权限,如果还是报错检测一下通过htpasswd生成的密码跟auth里面的权限是否一致。如果还是报错,就可能是Apache程序对svn的目录没有访问权限。可以通过修改权限。

chown -R apache:apache /datum/svndata/repos1

chmod-R 755  /datum/svndata/repos1 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值