`
wcj10051891
  • 浏览: 25725 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

svn编译安装以及配置仓库经http访问

 
阅读更多

1,下载编译安装apr
wget http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.8.tar.gz
2,下载编译安装apr-util with apr
wget http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.5.2.tar.gz
3,下载sqllite适合的版本和svn源码
wget http://www.sqlite.org/sqlite-amalgamation-3071000.zip
4,unzip解包后的所有文件复制到svn源码路径新建的sqlite-amalgamation下
cp sqlite-amalgamation-3071501/* subversion-1.7.3/sqlite-amalgamation/
5,安装zlib
yum install zlib-devel.i686
6,编译安装svn with apr apr-util
./configure --prefix=/usr/local/subversion-1.7.3 --with-apr=/usr/local/apr-1.4.6/ --with-apr-util=/usr/local/apr-util-1.4.1/ --with-apxs=/usr/local/apache2/bin/apxs

7,创建仓库
svnadmin create /usr/local/subversion-1.7.3/repos

8,服务启动命令加入 /etc/rc.local
/usr/local/subversion-1.7.3/bin/svnserve -d -r /usr/local/subversion-1.7.3
启动时候指定仓库目录前缀,-r /usr/local/subversion-1.7.3 , 远程就可以不用指定这个前缀了,隐藏多余目录,安全
svn://host/repos

9,编辑repos下的 svnserve.conf文件
anon-access = read 匿名读
auth-access = write 认证读写

password-db = passwd密码文件
authz-db = authz授权文件

10,编辑passwd,增加用户名和密码
wangchengjie=wangchengjie
11,编辑authz,设定访问权限
[仓库名:目录]
[repos:/]
wangchengjie=rw
*=r

 

example:

下面是一个典型的 svnaccessfile例子

//define groups

[groups]

developers = user1,user2,user3,user4

docs = user5,user6,user7

team1=user1,user2,user7

 

#to allow everyone read access

#allow all developers complete access

[/]

* = r

@developers = rw

 

#give the doc people write access to the docs folder

[/project/trunk/doc]

@docs = rw

 

#give team 1 people write access to svn “project1” repository under svn root folder

[project1:/]

@team1 = rw

 

上面设置表示:

1. 定义了3个 groups “developers”, “docs” and “team1”

2. [/] 表示对于整个 svn 下的目录, * = r  表示所有 user 都有只读权限, @developers = rw 表示 developers group 具有读写权限。

3. docs group 只对于 [/project/trunk/doc] 目录具有读写权限

4. [project1:/] 表示 svn 根目录下的“ project1” svn repository ( is it correct?? )

注意:对组设置权限需加 @ ,用户不需要。

 

让svn支持http访问,需要和配置apache

1,apache版本支持DSO,以及web_dav,如果不支持则需要换版本或者自己编译

编译apache的时候指定configure参数--enable-so --enable-dav

2,编译svn的时候指定configure参数--with-apxs=/usr/local/apache2/bin/apxs,指向apache的bin目录里的一个apxs脚本文件,svn编译会生成mod_dav_svn和mod_authz_svn,复制/software/subversion-1.8/libexec/mod_authz_svn.so和mod_dav_svn.so到apache的modules下

3,设置apache,编辑httpd.conf

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

4,创建账号密码管理文件

htpasswd -cm 文件全路径/password wcj

加c参数表示先创建密码文件,m参数表示用md5加密密码,

利用apache的密码生成工具,输入命令后会提示输入密码,并加入指定文件中

 

htpasswd -m 文件全路径/password wcj2

仅新增用户和密码,不创建文件了

 

5,对svn仓库各目录配置用户授权

在svn仓库的默认授权文件上进行修改即可,拷贝到合适的目录

编辑repos下的 svnserve.conf文件
anon-access = read 匿名读
auth-access = write 认证读写

password-db = passwd密码文件
authz-db = authz授权文件

 

6,增加apache httpd.conf参数,重启apache,另外将svn仓库的目录的other权限进行设置,让其他用户可读写

**所有仓库父目录为svn,下面可以放一些授权文件和密码文件,所有仓库会建立在这个目录下

<Location /svn>

DAV svn

SVNListParentPath on

SVNParentPath /software/svn

 

# our access control policy

AuthzSVNAccessFile /software/svn/authz                 

 

# only authenticated users may access the repository

Require valid-user

 

# how to authenticate a user

AuthType Basic

AuthName "Subversion repository"

AuthUserFile /software/svn/apache_passwd

</Location>

 

 

注意:

注意去掉authz和passwd文件中参数的多余空格

 

清除eclipse记录的账号密码

1. 查看你的Eclipse中使用的是什么SVN Interface
windows > preference > Team > SVN #SVN Interface

2. 如果是用的JavaHL, 找到以下目录并删除auth目录.
C:\Documents and Settings\[YourUserName]\Application Data\Subversion\

3. 如果你用的SVNKit, 找到以下目录并删除.keyring文件.
[eclipse]\configuration\org.eclipse.core.runtime

 

linux服务器,svn认证失败,配置问题,防火墙等等

之前自己还真没设置过SVN,今天亲自动手,错误百出,真是够头疼的。在网上随便找了一篇文章,就按照文章介绍开始安装。怎么安装和设置我就不说了,这里主要记录遇到的问题。

1、不知道该怎么设置 svn://url 这个路径

2、三个需要设置的文件,其中authz这个里面的[repos:/]这个到底该怎么设置

3、认证失败问题出在哪里?

4、svn import 目录1 "svn://localhost/目录2" -m "first version" 目录2到底怎么设置?

5、import 的时候出现“条目从本地编码转换到UTF8失败”

6、服务器端都没问题了,但是客户端不能连接主机

下面就根据这几个问题,一一解答:

1、svn可以分为单个或多个版本库,假设:

     版本库目录为 /data/svndata/repos1

     启动程序如果是:svnserve -d -r /data/svndata/repos1  

                            这代表你当前svn只为repos1这个版本库工作,客户端访问直接svn://IP/ 就可以了,后面不跟目录

     启动程序如果是:svnserve -d -r /data/svndata/            

                            这代表你当前svn可以多版本库运行,客户端访问就需要加上 svn://IP/repos1 这样才能访问repos1版本库


2、第一个问题是对应的

     如果是一个版本库,那应该设置成如下:

     [groups]

     admin = user1,user2

     [/]

     @admin=rw

     如果是多个版本库,那就应该设置成这样:

     [groups]

     admin = user1,user2

     [repos1:/]

     @admin=rw

3、认证失败的问题,就是对上述两个问题没有相对应的设置好,要么都安一个版本库设置,要么都安多个版本库设置,只要对应设置好,应该就是没有问题的。

4、目录2是由svn建立的,不用自己去设置,假设:

     svn import /tmp/ceshi "svn://localhost/a/b/c" -m "first version"

     这样的话,当你checkout的时候,你本地的目录就应该是: /a/b/c

5、呵呵,网上都说是LANG没设置好,可是我的不是这个问题,我的是导入的源文件中有些文件自身的文件名乱码,郁闷~

6、服务器都设置好了,那要是客户端还连不上,就是防火墙的问题了,去/etc/sysconfig/iptables 设置一下,打开默认的3690端口就可以了

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics