`
ssydxa219
  • 浏览: 627599 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Subversion

 
阅读更多

一,Subversion有两种运行方式

一种是基于Apache Http Server另外一种是Subversion Standalone Server

以下是基于httpd的svn的安装

二,安装svn

yum install httpd httpd-devel subversion mod_dav_svn

如果你已经装了apache了,不想装二个apache的话。你可以单独下个subversion来装一下就行了。

注意一点的是,路径要正确:

#./configure --with-apxs=/apache路径/bin/apxs --prefix=/usr/local/subversion
--with-apr=/usr/local/apache2 --with-apr-util=/apache路径 --with-ssl --with-zlib
--enable-maintainer-mode

 

1),确定已经安装了svn模块:mod_dav_svn

[root@svn zhangying]# cd /etc/httpd/modules/
[root@svn modules]# ls |grep svn
mod_authz_svn.so
mod_dav_svn.so
[root@svn modules]#

2),看一下svn是否已安装成功

[root@svn modules]# svn --version
svn, version 1.4.2 (r22196)
compiled Aug 10 2009, 18:00:04

Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme

三,创建仓库,修改svn配置文件

1),加载模块

[root@svn conf.d]#cd /etc/httpd/conf.d

[root@svn conf.d]# nano subversion.conf

添加以下二行

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

2),创建仓库,以及仓库目录的设置

# mkdir -p /var/www/svn

# cd /var/www/svn

# svnadmin create test

# chown -R apache.apache test

# vi /etc/httpd/conf.d/subversion.conf

<Location /svn>
DAV svn
#注意,下面的路径,子文件夹名不能和父文件名重复,不然就会出问题

SVNParentPath /var/www/svn/repository
#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
AuthType Basic
AuthName "Subversion repository"
AuthzSVNAccessFile /var/www/svn/repository/authz.conf
AuthUserFile /var/www/svn/repository/authfile
Require valid-user
#   </LimitExcept>
</Location>

3),添加用户

下面建立可访问用户文件

# htpasswd -c /myhome/env/svn/repository/authfile 用户名

要增加用户,则使用下面命令

# htpasswd /myhome/env/svn/repository/authfile 用户名

//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加
当你用页面访问svn时,apache要进行的密码确认



4),权限分限
# nano myhome/env/svn/repository/authz.conf
 [test:/] //这表示,仓库test的根目录下的访问权限 
 zhangy = rw //test仓库zhangy用户具有读和写权限 
 hunk = r //test仓库hunk用户具有读权限 
 [/] //这个表示在所有仓库的根目录下 
 * = r //这个表示对所有的用户都具有读权限 
 #[groups] //这个表示群组设置 
 #svn1-developers = zhangy, hunk //这个表示某群组里的成员 
 #svn2-developers = zhangy
 #[svn1:/]
 #@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置

搞好之后重起apache

# service httpd restart

5),svn的一些操作
a.import操作
[root@svn www] svn import /var/www/zhangy/test/ file:///var/www/svn/repository/test -m "Initial repository test"
Adding         /var/www/zhangy/test.txt
 Adding         /var/www/zhangy/test1.txt

注意:
1,file:///在这里是3个/,我开始导入时写成了二个,老是报错,我就很晕。
2,在导入时,如果存在中文字符的文件名导入会停止报错

b.check out操作
[root@svn www] cd /var/www
[root@svn www] svn co http://yoursvnserver/svn/test
Authentication realm: &lt;http://yoursvnserver:80&gt; Subversion repositoryPassword for 'youruser':
A    test/test.txt
A    test/test1.txt
Checked out revision 1.

c.edit和commit操作
[root@svn www] cd /var/www
[root@svn www] nano test.txt -- 修改一些东西后.
[root@svn www] svn commit -m "Added a line to test.txt."
Sending        test/test.txt
Transmitting file data .
Committed revision 2.

d.add和delete操作
[root@svn www] svn co http://yoursvnserver/svn/test
[root@svn www] cd /var/www
[root@svn www] nano test2.txt -- 添加一个新文件.
[me@mylappy ~] svn add test2.txt
A         test2.txt

[me@mylappy ~] svn commit -m "new one"
Adding         test2.txt
Transmitting file data .
Committed revision 3.

删除操作把add换成delete就可以了




一 准备需要的安装包。

(1)下载 apache 。通过官网下载,我使用了版本 : httpd-2.2.23.tar.gz 

 (2) 下载Subverson  。下载地址

http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz

http://subversion.tigris.org/downloads/subversion-deps-1.6.12.tar.gz

二 安装

安装顺序有要求, 先安装Apache ,再安装Subversion 。

1 安装apache 

把安装压缩包[ httpd-2.2.23.tar.gz ]上传linux环境/usr/local/下面。
[root@localhost /]# cd /usr/local/
[root@localhost /]# tar zxfhttpd-2.2.23.tar.gz
[root@localhost /]# cd /usr/local/httpd-2.2.23
[root@localhost /]# ./configure -prefix=/usr/local/apache -enable-dav -enable-so && make && make install


2 启动apache, 安装无错误后  进入

 #cd /usr/local/apache/bin 

# ./apachectl start 

若提示启动失败,端口口被占用: #vi /usr/local/apche/conf/http.conf 

找到

#Listen 12.34.56.78:80
Listen 80   

将80修改为自己的端口好。我修改为81 Listen 80    ---若启动成功,不用修改端口号。

重启apache ,客户端输入地址 http://10.0.1.200:81/ (端口号为81) 或 http://10.0.1.200/ (端口号默认80)

页面展示

It works! 字样 ,表示安装成功。


3 安装Svn

把安装压缩包[subversion-1.6.12.tar.gz]和[subversion-deps-1.6.12.tar.gz]拷到linux环境/usr/local/下面。

[root@localhost /]# cd /usr/local/

[root@localhost /]# tar zxf subversion-1.6.12.tar.gz

[root@localhost /]# tar zxf subversion-deps-1.6.12.tar.gz

(安装包解压缩,解压缩后生成安装文件夹[subversion-1.6.12],两个文件都会解压缩到同一个文件夹下)

[root@localhost local]# cd /usr/local/subversion-1.6.12


[root@localhost subversion-1.6.12]# rm -rf apr

[root@localhost subversion-1.6.12]# rm -rf apr-util(删除subversion自带的apr和apr-util文件夹,用apache的就可以)

[root@localhost subversion-1.6.12]# cd /usr/local/subversion-1.6.12

[root@localhostsubversion-1.6.12]# ./configure -prefix=/usr/local/subversion -with-apxs=/usr/local/apache/bin/apxs -with-apr=/usr/local/apache/bin/apr-1-config -with-apr-util=/usr/local/apache/bin/apu-1-config 

[root@localhostsubversion-1.6.12]# make

[root@localhostsubversion-1.6.12]# make install

[root@localhost subversion-1.6.12]# svnserve --version


--- 本人安装到此,没有出现任何错误。但是 执行#svnserve --version 显示的版本不是1.6的,而是1.4(老版本)说明之前安装过旧版本的svn。

解决办法#vi /etc/profile

在最后填加

#set svnpath

export PATH=/usr/local/subversion1.6/bin:$PATH

export PATH

保存退出。

执行 #scource /ect/profile

重新执行 #svnserve --version --ok


4 检查svn是否与apache兼容

# vi /usr/local/apache/conf/httpd.conf

查找文件中是否增加了

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

两行信息,并且查看/usr/local/apache/modules 下是否有mod_dav_svn.so, 和mod_authz_svn.so 文件

如果http.conf 中没有增加代码。modules 下有mod_dav_svn.so, 和mod_authz_svn.so 文件,再http.conf中增加那两行代码。

如果没有mod_dav_svn.so, 和mod_authz_svn.so,svn安装的错误。按照步骤重装。



配置 svn+apache

1 创建svn库
(1) 创建 svn专用户   # useradd pocsvn

(2) 创建SVN 版本库目录  #mkdir /home/pocsvn/project 

(3) 创建SVN仓库 # svnadmin create /home/pocsvn/project/poc

(4) 将目录 project 目录拥有者修改为 pocsvn 用户  :

#chown -R pocsvn:pocsvn /home/pocsvn/project   
并 增加权限 chmod 755 /home/pocsvn/project

2 配置svn 依赖apache
(1) 使用root用户  # vi /usr/local/apache/conf/httpd.conf 将

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

前的注释去掉(我安装时这两行没有注释。网上查有人说这两行会有注释。有的话去掉注释)
(2 )找到

User apache

Group apache

修改为

User pocsvn

Group pocsvn

(3) 在文件末尾添加

<Location /svn>

DAV svn

SVNParentPath /home/pocsvn/project     -----svn库的根目录

AuthType Basic

AuthName "welcome to cjybt"      -----浏览器登陆时的提示信息。随便写

AuthUserFile /home/pocsvn/project/passwd ---  用户的密码信息

AuthzSVNAccessFile /home/pocsvn/project/poc/conf/authz --- 指向svn库的conf目录下authz
Require valid-user -- ("Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库)

</Location>

(4) 生成passwd文件

#htpasswd -bc /home/pocsvn/project/passwd   hello   hello123

---在/home/pocsvn/project/下生成passwd文件,用户名为hello,密码为hello123

#htpasswd -b /home/pocsvn/project/passwd   hello2   hello123

---在/home/pocsvn/project/passwd文件中添加用户名为hello,密码为hello123

(5) 编辑用户权限文件 authz

#vi /home/pocsvn/project/poc/conf/authz

[groups]       --表示群组设置

admin = hello    --表示admin群组里的成员有hello,如果要配置多个,用逗号分隔

develop = hello2  --表示develop群组里的成员有hello2,如果要配置多个,用逗号分隔

[poc:/]        --表示仓库poc的根目录下的访问权限

hello = rw       --poc仓库hello用户具有读和写权限

hello2 = r        --poc仓库hello2用户具有只读权限

@admin = rw    --表示群admin的成员都具有读写权限

@develop = r   --表示群poc的成员都具有只读权限

[/]            --表示在所有仓库的根目录下

* = r          --表示对所有的用户都具有读权限

--- 在编辑authz时,所有行都必须要顶头写,不能有缩进,否则报错。


(5)修改权限

chmod 755 /home/pocsvn/project/passwd

chown -R pocsvn:pocsvn   /home/pocsvn/project/passwd


(6)启动svn

切换到pocsvn用户  #svnserve -d --listen-port 8888 -r /home/pocsvn/project

-d 表示以 daemon 方式(后台运行)运行

-r 指定根目录是/home/pocsvn/project

--listen-port 8888  --表示在8888端口上进行监听

检查svn其否启动

ps -ef|grep svnserve 或 ps -ef|grep 8888


(7)重启apache,切换回root用户。启动apache


(8) 客户端 访问 :http://ip:81/svn/poc 出现登陆窗口则为配置成功。

--如果登陆后提示403或无法访问。为权限配置不对,重新配置下权限即可。

至此,svn和apache结合的svn配置就搭建好了。


我在安装的过程中出现了很多问题。总结如下

1 启动apache 报错httpd: Syntax error on line 111 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/subversion/lib/libsvn_subr-1.so.0: undefined symbol: apr_hash_clear

解决办法:重新安装apache,注意增加参数

命令 # ./configure --prefix=/usr/local/apache2/ --enable-dav --enable-so


--enable-dav --enable-so参数是必须要加的,你还可以根据您的需要添加其他的参数。

--enable-dav 启用davweb支持,是subversion+apache组合必选,缺少的话,在运行apache会出现undefined symbol: dav_register_provider的错误

--apr 和 apr-util一般会在httpd的安装包内,subversion安装会使用到apr和par-util,如果当前系统没有,最好安装一下


2 重转apache后。必须重装subversion,重装svn是执行make ,make install 是提示有错误信息。

可以先执行# make clean ,然后在 #make ,#make install

最好一次装好,重装的话问题不少。


3 apr 和apr-util有问题。

网上资料在svn和apache集成的时候是有分开装apr,和apr-util的,这两个在apache中就有了。删除原来的。

[root@test ]# rpm -qa|grep subversion

subversion-1.4.4.el5

[root@test ]# rpm -e --allmatches subversion

[root@test ]# rpm -qa|grep apr

apr-1.2.7-11

apr-util-1.2.7-7.el5

apr-1.2.7-11

apr-util-1.2.7-7.el5

[root@test ]# rpm -e --allmatches apr-util

[root@test ]# rpm -e --allmatches  apr

[root@test ]# echo '/usr/local/APR/lib'>>/etc/ld.so.conf

[root@test ]# echo '/usr/local/ARP-util/lib'>>/etc/ld.so.conf

[root@test ]# ldconfig


//////////////////////////////////////////////////////////////////////////////////////////////


1. yum install httpd subversion mod_dav_svn mod_authz_ldap
2. 添加用户:svn, 并创建/myhome/env/svn/repository目录。
3. 修改/etc/httpd/conf/httpd.conf   httpd.config
   a. 修改
       User svn
       Group svn
   b. 在LoadModule处添加:
    LoadModule dav_svn_module modules/mod_dav_svn.so
     LoadModule authz_svn_module modules/mod_authz_svn.so

      添加
     <Location /svn/>  # 注意这里是"/svn/"而不是"/svn"
     DAV svn
     SVNListParentPath on                              #打开根目录浏览功能
    SVNParentPath /myhome/env/svn/repository
     AuthName "Subversion repository Lin Qing hong"
     Satisfy Any 
     AuthType Basic
     Require valid-user
     SVNParentPath /myhome/env/svn/repository
     AuthUserFile /myhome/env/svn/repository/authfile
     AuthzSVNAccessFILE /myhome/env/svn/repository/authz.conf
     </Location>

<Location /svn/>  # 注意这里是"/svn/"而不是"/svn"
     DAV svn
     SVNListParentPath on                              #打开根目录浏览功能
     SVNParentPath /myhome/env/svn/repository
     AuthName "Subversion repository Lin Qing hong"
     Satisfy Any
     AuthType Basic
     Require valid-user
     SVNParentPath /myhome/env/svn/repository
     AuthUserFile /myhome/env/svn/repository/authfile
     AuthzSVNAccessFILE /myhome/env/svn/repository/authz.conf
</Location>


4. 创建仓库:
    svnadmin create openwrt

5. 添加svn(httpd)用户:
    htpasswd -c /myhome/env/svn/repository/authfile liman  (-c表示:创建用户文件authfile)
    htpasswd /myhome/env/svn/repository/authfile test 

6. 修改权限
    # vim /myhome/env/svn/repository/authz.conf
    [/]
    *=r
   
    [openwrt:/]
    *=r
    liman=rw


============================================================================
解决匿名访问问题:

这里使用的是Apache激活mod_authz_svn模块后的authz权限设置,在Apache的配置设置内容为:
引用
<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn
   Satisfy Any
   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/svn/svnusers.conf
   Require valid-user
   AuthzSVNAccessFile /etc/svn/accesspolicy.conf
</Location>
这里的Apache配置文件中,不需要加入<Limit>或<LimitExcept>标签。但加入了Satisfy Any的设置,其表示在同时启用了Allow(允许)和Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足Allow和Require的条件,而Any则是满足其中之一即可。

这这里,Satisfy Any用于允许先用匿名方式尝试访问,并根据svnauthz对匿名用户的控制给予访问权限。若没有这句话,则无论svnauthz中是否加入了“*=r”的写法,匿名用户都是无法访问的。









简单记录一下通过svnsync实现svn的主从备份
演示环境为localhost的两个repository。
svn server软件为 visual svn 安装在win 7上。
1,新建一个repository,作为主repository,路径为http://localhost/svn/src
2,为了简单演示,从repository也在同一台机器上,路径为http://localhost/svn/backup
新建从repository的时候,要选择 "Empty Repository"类型。如下图

3,为两个repository建一个同样的用户,如admin/admin
4,在backup server上,
在hooks文件夹中将pre_revprop_change.tmpl改为pre_revprop_change.bat并将内容清空然后输入exit 0
让后执行
svnsync init http://localhost/svn/backup http://localhost/svn/src --username admin  --password admin

5,在src server上,
将post-commit.tmpl改为post-commit.bat
内容改为如下:
svnsync sync --non-interactive http://localhost/svn/backup --username admin  --password admin

测试
将src checkout后新建一个文件后commit,可以看到文件同时也commit到backup repository中。
修改从src checkout的文件后commit,修改同时也commit到了backup repository中。    
        
分享到:
评论

相关推荐

    Jenkins subversion 插件和所有依赖说明:依赖安装顺序

    Jenkins Subversion 插件使得Jenkins能够与Subversion仓库进行交互,进行代码的检出、更新和提交等操作。在设置Jenkins与Subversion的集成时,正确安装和配置相关插件至关重要。 首先,我们需要了解Jenkins ...

    Subversion Edge详细安装与使用手册

    ### Subversion Edge 详细安装与使用手册 #### 一、Subversion Edge 下载与安装 ##### 1.1 下载地址 Subversion Edge 的下载地址为:[http://www.collab.net/svnedge](http://www.collab.net/svnedge)。 ##### ...

    subversion-1.6.1.tar.gz

    Subversion(简称svn)是一个广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。这个"subversion-1.6.1.tar.gz"文件是Subversion 1.6.1版本的服务器端源码包,特别设计用于Linux操作系统。源码包意味着你...

    Apache-Subversion-1.8.13

    Subversion是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改...

    Subversion服务器的安装和配置

    Subversion 服务器的安装和配置 Subversion 是一个开源的版本控制系统,可以帮助开发者和项目团队管理和跟踪代码的变更。下面将详细介绍 Subversion 服务器的安装和配置流程。 一、 准备工作 在开始安装 ...

    subversion在centos最小化安装所需要的rpm包,包含了执行的脚本

    Subversion(SVN)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的更改历史。在CentOS操作系统上安装Subversion,特别是对于最小化安装的系统,可能需要手动安装必要的RPM包。以下是关于...

    subversion

    Subversion 是一个开源的版本控制系统,它用于管理文件和目录的变更历史,使得多人协作开发成为可能。在给定的压缩包文件中,包含了 `subversion-1.7.2.tar.gz` 和 `subversion-deps-1.6.1.tar.gz` 两个文件,它们是...

    subversion edge 安装配置使用手册

    Subversion Edge是一款强大的工具,用于管理和配置Subversion版本控制系统,集成了CollabNet Subversion和Apache HTTP Server,提供了一个用户友好的Web界面,使得在Windows和Linux(CentOS)平台上安装、配置和管理...

    subversion-1.14.2.tar.gz

    Subversion(SVN)是一个广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。这个"subversion-1.14.2.tar.gz"文件是一个压缩包,包含了Subversion 1.14.2版本的源代码。这个版本的发布可能包含了一些新特性、...

    subversion-1.6.12.tar.bz2

    Subversion 是一个自由/开源的版本控制系统。也就是说,在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和...

    Apache-Subversion-1.14.0.zip

    Apache Subversion(简称SVN)是一个开源的版本控制系统,用于管理软件项目的源代码和其他文件的变更。这个"Apache-Subversion-1.14.0.zip"压缩包包含的是Subversion 1.14.0版本的命令行工具,适用于Windows操作系统...

    linux下subversion+apache server搭建

    Linux环境下搭建Subversion(简称svn)服务器,主要涉及到两个方面:一是Subversion自身服务的搭建,二是与Apache服务器的集成。Subversion是一个开源的版本控制系统,用于跟踪文件和目录的变更,便于团队协作开发。...

    Setup-Subversion-1.8.10.msi (SVN服务器server端安装程序)

    **Subversion(SVN)** 是一个开源的版本控制系统,用于管理软件开发过程中代码的变更历史。它允许团队成员协作工作,跟踪每个更改,并能够轻松地回滚到之前的版本。`Setup-Subversion-1.8.10.msi` 是Subversion ...

    Apache-Subversion-1.14.2

    Apache Subversion(简称 SVN)是一个开源的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,共享和追踪项目代码的不同版本。下面是一些关于 Apache Subversion 的要点: 版本控制:SVN ...

    Subversion与CVS的比较

    ### Subversion与CVS的深度比较 #### 一、Subversion概述 Subversion,简称SVN,是一款开源的版本控制系统,旨在提供一个超越时间限制的文件和目录管理方案。如同一款“时间机器”,Subversion的核心功能在于记录...

    Setup-Subversion-1.6.6.msi以及客户端齐全了,含服务端安装说明。

    **Subversion(SVN)** 是一个开源的版本控制系统,用于管理软件项目中的源代码和其他文件的变更。它允许团队协作开发,跟踪每一次修改,并提供回滚到早期版本的功能。在给定的压缩包文件中,`Setup-Subversion-...

Global site tag (gtag.js) - Google Analytics