一,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: <http://yoursvnserver:80> 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 Edge 详细安装与使用手册 #### 一、Subversion Edge 下载与安装 ##### 1.1 下载地址 Subversion Edge 的下载地址为:[http://www.collab.net/svnedge](http://www.collab.net/svnedge)。 ##### ...
Subversion(简称svn)是一个广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。这个"subversion-1.6.1.tar.gz"文件是Subversion 1.6.1版本的服务器端源码包,特别设计用于Linux操作系统。源码包意味着你...
Subversion是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改...
Subversion 服务器的安装和配置 Subversion 是一个开源的版本控制系统,可以帮助开发者和项目团队管理和跟踪代码的变更。下面将详细介绍 Subversion 服务器的安装和配置流程。 一、 准备工作 在开始安装 ...
Subversion(SVN)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的更改历史。在CentOS操作系统上安装Subversion,特别是对于最小化安装的系统,可能需要手动安装必要的RPM包。以下是关于...
Subversion 是一个开源的版本控制系统,它用于管理文件和目录的变更历史,使得多人协作开发成为可能。在给定的压缩包文件中,包含了 `subversion-1.7.2.tar.gz` 和 `subversion-deps-1.6.1.tar.gz` 两个文件,它们是...
Subversion Edge是一款强大的工具,用于管理和配置Subversion版本控制系统,集成了CollabNet Subversion和Apache HTTP Server,提供了一个用户友好的Web界面,使得在Windows和Linux(CentOS)平台上安装、配置和管理...
Subversion(SVN)是一个广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。这个"subversion-1.14.2.tar.gz"文件是一个压缩包,包含了Subversion 1.14.2版本的源代码。这个版本的发布可能包含了一些新特性、...
Subversion 是一个自由/开源的版本控制系统。也就是说,在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和...
Apache Subversion(简称SVN)是一个开源的版本控制系统,用于管理软件项目的源代码和其他文件的变更。这个"Apache-Subversion-1.14.0.zip"压缩包包含的是Subversion 1.14.0版本的命令行工具,适用于Windows操作系统...
Linux环境下搭建Subversion(简称svn)服务器,主要涉及到两个方面:一是Subversion自身服务的搭建,二是与Apache服务器的集成。Subversion是一个开源的版本控制系统,用于跟踪文件和目录的变更,便于团队协作开发。...
**Subversion(SVN)** 是一个开源的版本控制系统,用于管理软件开发过程中代码的变更历史。它允许团队成员协作工作,跟踪每个更改,并能够轻松地回滚到之前的版本。`Setup-Subversion-1.8.10.msi` 是Subversion ...
Apache Subversion(简称 SVN)是一个开源的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,共享和追踪项目代码的不同版本。下面是一些关于 Apache Subversion 的要点: 版本控制:SVN ...
### Subversion与CVS的深度比较 #### 一、Subversion概述 Subversion,简称SVN,是一款开源的版本控制系统,旨在提供一个超越时间限制的文件和目录管理方案。如同一款“时间机器”,Subversion的核心功能在于记录...
**Subversion(SVN)** 是一个开源的版本控制系统,用于管理软件项目中的源代码和其他文件的变更。它允许团队协作开发,跟踪每一次修改,并提供回滚到早期版本的功能。在给定的压缩包文件中,`Setup-Subversion-...