第一种安装方式:

svn下载:http://archive.apache.org/dist/subversion/

需要的包

yum install gcc gcc-c++

yum install expat-devel

yum install openssl-devel

http://labs.renren.com/apache-mirror//httpd/httpd-2.2.22.tar.gz //最好用2.2版本

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

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

subversion-1.6.18.tar.gz  、subversion-deps-1.6.18.tar.gz   这两个文件版本要是一样的,也要放在一个目录下,分别解压这两个文件。

解压这三个文件

tar zxvf httpd-2.2.22.tar.gz

tar zxvf subversion-1.6.18.tar.gz

tar zxvf subversion-deps-1.6.18.tar.gz

注:解压 subversion-deps-1.6.18.tar.gz 时, 会把这个文件解压到subversion-1.6.18文件夹下

下载地址:

httpd-2.2.22.tar.gz  下载地址:http://download.csdn.net/detail/yelang_110/8529403

subversion-1.6.18.tar.gz  下载地址:http://download.csdn.net/detail/yelang_110/8534379

subversion-deps-1.6.18.tar.gz  下载地址:http://download.csdn.net/detail/yelang_110/8534393

安装httpd

[root@localhost ~]# cd httpd-2.2.22

[root@localhost ~]# ./configure --enable-dav --enable-so --prefix=/usr/local/httpd

[root@localhost ~]# make && make install

[root@localhost ~]# /usr/local/httpd/bin/httpd -l //查看下是不是有 mod_dav.c 、mod_so.c 两个模块

安装subversion 并关联httpd

[root@localhost ~]# ./configure --with-apxs2=/usr/local/httpd/bin/apxs --prefix=/usr/local/svn

[root@localhost ~]# make && make install

注:这里出错:

checking for xml2-config… no

configure: error: no XML parser was found: expat or libxml 2.x required

[root@localhost ~]#yum install expat-devel

checking for openssl/opensslv.h... no

configure: error: We require OpenSSL; try --with-openssl

[root@localhost ~]#yum install openssl-devel

[root@localhost ~]# ls /usr/local/httpd/modules/

mod_authz_svn.so  mod_dav_svn.so //这里会多这两个文件

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so //httpd配置文件里也会多这两行配置

[root@localhost ~]# /usr/local/svn/bin/svnadmin create /usr/local/repos //

[root@localhost ~]# chown -R daemon:daemon /usr/local/repos/

[root@localhost ~]# chmod -R 700 /usr/local/repos/

//修改配置文件 最后一行添加

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf

<Location /repos>

DAV svn

SVNPath /usr/local/repos

</Location>

启动httpd

[root@bogon bin]# ./apachectl start

httpd: apr_sockaddr_info_get() failed for bogon

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

如果报这个错就修改hosts

vim /etc/hosts

把bogon主机名(hostname查询主机名)添加到 127.0.0.1 后面就不报错了

测试

svn认证文章:

http://topinking.iteye.com/blog/342831

认证选项

1、基本 HTTP 认证

最简单的客户端认证方式是通过 HTTP 基本认证机制,简单的使用用户名和密码来验证一个用户的身份。Apache提供了一个 htpasswd 工具来管理一个用户文件,这个文件包含用户名和加密后的密码,这些就是你希望赋予 Subversion 特别权限的用户。htpasswd 可以在 Apache 的 bin 安装目录下找到。具体使用方法如下

创建用户文件:

htpasswd -c -m /usr/local/httpd/conf/passwordfile username

添加新用户(-m 表示以MD5加密密码):

htpasswd [-m] /usr/local/httpd/conf/passwordfile Newusername

更改用户密码:

htpasswd [-m] /usr/local/httpd/conf/passwordfile username

删除用户(要用大写的 D ):

htpasswd –D /usr/local/httpd/conf/passwordfile username

接下来修改 httpd.conf,在 Location 标签中加入如下内容:

<Location /repos>

DAV svn

SVNPath /usr/local/repos

AuthType Basic

AuthName "svn repos"

AuthUserFile /usr/local/httpd/conf/passwordfile

Require valid-user

</Location>

说明:

AuthType Basic:启用基本的验证,比如用户名/密码对。

AuthName "svn repos":当一个认证对话框弹出时,出现在认证对话框中的信息。(最好用英文,TortoiseSVN 不支持中文,安装语言包除外。)

AuthUserFile E:/usr/Apache2.2/bin/passwd:指定E:\usr\Apache2.2\bin\passwd为用户文件,用来验证用户的用户名及密码。

Require valid-user:限定用户只有输入正确的用户名及密码后才能访问这个路径, Require user abc sli" 将只有用户文件中的 abc 和 sli 两个文件夹可以访问该版本库。

如果想要指定多个版本库,可以用多个 Location 标签,也可以使用 SVNParentPath 代替 SVNPath,例如在 e:\svn 下有多个版本库 repos1,repos2 等等,用如下方式指定:

<Location /repository>

DAV svn

SVNParentPath e:/svn

</Location>

“SVNParentPath e:/svn ” 表示 e:\svn 下的每个子目录都是一个版本库。可以通过 http://服务器IP/repository/repos1,http://服务器IP/repository/repos2 来访问。

有的时候也许不需要这样严格的访问控制,例如大多数开源项目允许匿名的读取操作,而只有认证用户才允许写操作。为了实现更为细致的权限认证,可以使用 Limit 和 LimitExcept 标签。例如:

<LimitExcept GET PROPFIND OPTIONS REPORT>

require valid-user

</LimitExcept>

以上配置将使匿名用户有读取权限,而限制只有 passwd 中配置的用户可以使用写操作。

2、严格的权限控制(本人整理)

1.新建版本库

[root@localhost ~]# /usr/local/svn/bin/svnadmin create /usr/local/repos //

[root@localhost ~]# chown -R daemon:daemon /usr/local/repos/

[root@localhost ~]# chmod -R 700 /usr/local/repos/

删除版本库自带的密码文件,权限控制文件

[root@localhost ~]# rm -fr /alidata1/repos/conf

2.httpd.conf,在 Location 标签中加入如下内容:

<Location /repos>

DAV svn

SVNPath /alidata1/repos

AuthType Basic

AuthName "svn repos"

AuthUserFile /alidata1/httpd/conf/passwordfile

AuthzSVNAccessFile /alidata1/httpd/conf/authz

Require valid-user

</Location>

AuthzSVNAccessFile 就是 /alidata1/repos 库的权限控制文件,AuthUserFile 是密码控制文件。

3.创建用户名跟密码

创建用户文件:

htpasswd -c -m /usr/local/httpd/conf/passwordfile username

添加新用户(-m 表示以MD5加密密码):

htpasswd [-m] /usr/local/httpd/conf/passwordfile Newusername

4.修改权限控制文件

[groups]

@t1=a,b,c

@t2=e,d

[/] //必须添加一条根目录,并且所有用户都能读取,不然用户登录不了

*=r

[/aa]

@t1=rw //对根目录下面的aa文件夹,a,b,c 这三个用户可以读写

@t2= //注意后面是空(不写任何数据),表示e,d 这两个用户对aa文件夹没有任何权限,也不能看见aa文件夹

3、用 mod_authz_svn 进行目录访问控制

首先需要让 Apache 将 mod_authz_svn 模块加载进来。在 Subversion 的安装目录中找到 mod_auth_svn 模块,将其拷贝到 Apache 安装目录的 modules 子目录下。修改 httpd.conf 文件,添加:

LoadModule authz_svn_module modules/mod_authz_svn.so

现在可以在 Location 标签中使用 authz 的功能了。一个基本的 authz 配置如下:

<Location /repository>

DAV svn

SVNParentPath e:/svn

# our access control policy

AuthzSVNAccessFile E:/usr/Apache2.2/bin/accesspolicy.conf

# try anonymous access first, resort to real

# authentication if necessary.

Satisfy Any

Require valid-user

# how to authenticate a user

AuthType Basic

AuthName "Subversion repository"

AuthUserFile E:/usr/Apache2.2/bin/passwd

</Location>

AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定。访问文件 accesspolicy.conf 的语法与svnserve.conf和 Apache 的配置文件非常相似,以(#)开头的行会被忽略;在它的简单形式里,每一小节命名一个版本库和一个里面的路径;认证用户名是在每个小节中的选项名;每个选项的值描述了用户访问版本库的级别:r(只读)或者rw(读写),如果用户没有提到或者值留空,访问是不允许的; * 表示所有用户,用它控制匿名用户的访问权限;@符号区分组和用户。如:

[groups]

committers = paulex, richard

developers = jimmy, michel, spark, sean

[/]

* = r

@committers = rw

[/branches/dev]

@developers = rw

[/tags]

tony = rw

[/private]

* =

@committers= r

使用 SVNParentPath 代替 SVNPath 来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。例如上例中 tony 将对所有版本库里的 /tags 目录具有读写权限。如果要对具体每个版本库配置,用如下的语法:

[groups]

project1_committers = paulex, richard

project2_committers = jimmy, michel, spark, tony, Robert

[repos1:/]

* = r

@ project1_committer = rw

[repos2:/]

* = r

@ project2_committer = rw

这样 repos1的 project1_committer 组只能对 repos1 版本库下的文件具有写权限而不能修改版本库 repos2 ,同样 repos2 的 project2_commiter 组也不能修改 repos1 版本库的文件。

====================================================================================================================

4、svn迁移

1. 将原来的Repository导出为一个文件dumpfile

> svnadmin dump F:\repository\test > test

2. 创建新的Repository, 可以用工具创建 也可以用命令创建

3. 将dumpfile导入到新的Repository

> svnadmin load  D:\repository\test  < test

本机SVN的快速迁移方法:

svnadmin hotcopy old_rep_path new_rep_path

====================================================================================================================

第二种安装方式:

安装subversion-1.7.6.tar.gz版本

下载apache运行环境依赖的包

1.apr包,下载地址:http://apr.apache.org/download.cgi

这边我下载的是 apr-1.4.6.tar.gz,放置在路径/root/dir_install/apr-1.4.6.tar.gz

tar zxvf apr-1.4.6.tar.gz 进行解压,生成apr-1.4.6

cd apr-1.4.6

./configure --prefix=/usr/local/apr

make && make install

安装完毕后,可以验证/usr/local/apr是否存在

问题:

安装apr报错rm: cannot remove `libtoolT': No such file or directory 解决方案

直接打开/usr/local/src/apr-1.4.6/configure  把 $RM "$cfgfile" 那行删除掉  (30048)

$RM "$cfgfile"  大约在 42302 行

然后再重新运行  ./configure  --prefix=/usr/local/apr  就可以了

2.apr-uitil包,下载地址:http://apr.apache.org/download.cgi

这边我下载的是apr-util-1.4.1.tar.gz,放置路径/root/dir_install/apr-util-1.4.1.tar.gz

tar zxvf apr-util-1.4.1.tar.gz进行解压,生成apr-util-1.4.1

cd apr-util-1.4.1

./configure --prefix=/usr/local/apu --with-apr=/usr/local/apr/bin/apr-1-config

make && make install

安装完毕后,可以验证/usr/local/apu是否存在

3.neon包,下载地址:http://www.webdav.org/neon/

这边我下载的是neon-0.29.6.tar.gz,放置路径/root/dir_install/neon-0.29.6.tar.gz

tar zxvf neon-0.29.6.tar.gz进行解压,生成neon-0.29.6

cd neon-0.29.6

./configure --prefix=/usr/local/neon

make && make install

安装完毕后,可以验证/usr/local/neon是否存在

4.pcre包,http://pcre.org/

tar zxvf pcre-8.12.tar.gz

cd  pcre-8.12

./configure --prefix=/usr/local/pcre

make && make install

安装完毕后,可以验证/usr/local/pcre是否存在

1.安装apache,下载地址http://httpd.apache.org/

这边我下载的是httpd-2.4.1.tar.gz,放置路径/root/dir_install/httpd-2.4.1.tar.gz

tar zxvf httpd-2.4.1.tar.gz进行解压,生成httpd-2.4.1

cd httpd-2.4.1

./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apu/bin/apu-1-config  --with-neon=/usr/local/neon/bin/neon-config --with-pcre=/usr/local/pcre/bin/pcre-config --enable-dav --enable-so -enable-maintainer-mode -enable-rewrite

make && make install

2.安装subversion-1.7.6.tar.gz

tar zxvf subversion-1.7.6.tar.gz

解压sqlite-amalgamation-3071602.zip文件把 sqlite3.c 拷贝到subversion-1.7.6下sqlite-amalgamation文件夹下,如果sqlite-amalgamation文件夹不存在手动创建个

./configure --with-apxs=/usr/local/httpd/bin/apxs --prefix=/usr/local/svn --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apu/bin/apu-1-config  --with-neon=/usr/local/neon/bin/neon-config --with-ssl

make && make install

安装完成后验证

[root@localhost ~]# ls /usr/local/httpd/modules/

mod_authz_svn.so  mod_dav_svn.so //这里会多这两个文件

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf    //如果这里没有就手动加上

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

报错:

# svnserve --version

svnserve: symbol lookup error: /usr/local/svn/lib/libsvn_subr-1.so.0: undefined symbol: apr_atomic_xchgptr

而subversion要求较高的版本,为此,我们需要删除系统自带的apr,apr-util这两个包!强行删掉!

# rpm -e --allmatches apr-util

error: Failed dependencies:

libaprutil-1.so.0()(64bit) is needed by (installed) subversion-1.4.2-4.el5_3.1.x86_64

libaprutil-1.so.0()(64bit) is needed by (installed) httpd-2.2.3-31.el5.centos.x86_64

libaprutil-1.so.0 is needed by (installed) subversion-1.4.2-4.el5_3.1.i386

# rpm -e --allmatches apr-util --nodeps

# rpm -e --allmatches apr --nodeps

不然svn的命令报错

启动apache的时候报错

/usr/local/http/bin/apachectl start

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.171.251.9. Set the 'ServerName' directive globally to suppress this message

修改http.conf 文件

搜索"#ServerName" 修改为 ServerName localhost:80

至此安装完成。

====================================================================================================================

转载于:https://blog.51cto.com/fangwei009/1624496

Linux下搭建高效的SVN相关推荐

  1. linux配置svn开启端口映射,linux 下搭建Subversion (SVN)

    本次操作主要通过虚拟机VMWARE安装linux进行搭建 前提准备: 用VMWARE搭建的SVN 为了让别的用户可以访问,首先需要进行端口映射(svn常用端口为3690),点击Vmware的" ...

  2. Linux下搭建jenkins+svn+http+maven自动化部署

    Linux下搭建jenkins+svn+http+maven自动化部署 服务器设置: 卸载redhat的yum,安装centos的yum,配置第三方yum 1.删除redhat原有的rpm -qa | ...

  3. Linux下搭建SVN服务器【亲测可用】

    Linux下搭建SVN服务器 简介 第一步:通过yum命令安装svnserve,命令如下: 第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置) 第三步:创建svn版本库 第四步:配置修 ...

  4. linux 8051 编译,[编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)

    星期二, 10. 七月 2018 01:01上午 - beautifulzzzz 一.SDCC(Small Device C Compiler)编译环境搭建 SDCC是一个小型设备的C语言编译器,该编 ...

  5. linux下搭建hadoop环境步骤分享

    linux下搭建hadoop环境步骤,需要的朋友可以参考下 1.下载hadoop包 wget http://apache.freelamp.com/hadoop/core/stable/hadoop- ...

  6. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  7. linux下搭建redis并解决无法连接redis的问题

    linux下搭建redis并解决无法连接redis的问题 参考文章: (1)linux下搭建redis并解决无法连接redis的问题 (2)https://www.cnblogs.com/bestmy ...

  8. linux下搭建mrbs会议室预定管理系统

    linux下搭建mrbs会议室预定管理系统 linux下搭建mrbs会议室预定管理系统 Meeting Room Booking System (MRBS) 是一个基于 PHP/MySQL 开发的,使 ...

  9. linux下搭建hexo环境

    最近对搭建个人博客比较感兴趣,但是刚搭建好next主题基本博客,电脑就坏了,借了一台电脑继续搞,不想在他电脑中弄太多环境,所以我准备在自己电脑的服务器上搭建hexo环境 服务器环境: (1)cento ...

最新文章

  1. 云计算如何重塑和简化大规模IT资产
  2. linux -bash: ipconfig: command not found 解决方法
  3. vue 对象里面放数组刷新问题_Vue 数组和对象更新,但是页面没有刷新的解决方式...
  4. Java高级语法笔记-接口(interface)
  5. 我是一个请求,我该何去何从
  6. fastadmin model关联模型 关联查询问题
  7. 应用管理系列 — 怎么管理Sybase数据库
  8. 13数据库表空间回收
  9. 1.Chrome开发者工具不完全指南(一、基础功能篇)
  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_5_InputStreamReader介绍代码实现...
  11. HTML标记大全参考手册
  12. 图片的二进制数据库存储和显示
  13. 如何组织一个高效的开发团队?
  14. MFC中ShowWindow函数
  15. java 计算0.1 0.2,为什么0.1+0.2不等于0.3?原来编程语言是这么算的……
  16. android应用开发-从设计到实现 2-4 文字的使用
  17. [坑]微信支付首次支付成功,第二次调用失败
  18. 如何用LaTeX写一个PPT
  19. java判断点与线与面的关系_高中数学必修二点线面的位置关系与线面平行判定及其性质(精华试题版)...
  20. python带你获取视频及弹幕数据~知识点满满(含完整源代码)

热门文章

  1. android高级编程-android高级应用
  2. UpdateData函数(转)
  3. DataList在无数据记录时显示类似GridView空模板(EmptyDataTemplate)
  4. Android强制设置横屏或竖屏
  5. AWS开源Firecracker,一种运行多租户容器服务的新虚拟化技术
  6. MYSQL 查询数据排序数据和分组数据
  7. MySQL数据类型--------字符串类型实战
  8. centos 6.8 源码安装 erlang/otp 19.0.2
  9. socket编程:I/O模型
  10. 国庆双节长假旅游出行必装的手机软件