最近想在VPS上搭建一个SVN服务,方便在外面使用时存放代码。

上次介绍过在Windows上搭建SVN服务器,这次来谈谈在Linux上搭建吧,系统是CentOS。

网上有不少教程,可是没有一篇完整的,总会缺点什么或者有点错误,经过综合与比较,并多番测试,做了如下教程,仅供菜鸟参考哈。

svn服务器有2种运行方式:
1.独立服务器 (例如:svn://xxx.com/xxx);
2.借助apache。(例如:http://svn.xxx.com/xxx);
为了不依赖apache,选择第一种方式-独立的svn服务器。
svn存储版本数据也有2种方式:
1.bdb;
2.fsfs。
因为bdb方式在服务器中断时,有可能锁住数据,所以还是fsfs方式更安全一点,我也选择这种方式。

1.下载subversion安装包之后解压,进入subversion目录

wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz
tar xfvz subversion-1.6.6.tar.gz
tar xfvz subversion-deps-1.6.6.tar.gz
cd subversion-1.6.6

2.编译
首先检测系统有没有安装SSL:

find / -name opensslv.h

如果找不到,就执行如下命令进行安装:

yum install openssl
yum install openssl-devel

安装之后用find / -name opensslv.h命令找到opensslv.h所在的目录,即下列--with-openssl=后面的路径,
编译:

./configure --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db

注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db。

如果编译时报如下错误:

no acceptable C compiler found in $PATH

则使用如下命令安装gcc后再编译:

yum -y install gcc

如果最后出现下面WARNING,我们直接忽略即可,因为不使用BDB存储。

configure: WARNING: we have configured without BDB filesystem support
You don't seem to have Berkeley DB version 4.0.14 or newer
installed and linked to APR-UTIL. We have created Makefiles which
will build without the Berkeley DB back-end; your repositories will
use FSFS as the default back-end. You can find the latest version of
Berkeley DB here:
http://www.sleepycat.com/download/index.shtml

3.安装
为避免出现以下错误

error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

先执行以下操作:
(1)、编辑/etc/ld.so.conf文件:

vi /etc/ld.so.conf

添加下面一行:

/usr/local/lib

(2)、保存后运行ldconfig:

/sbin/ldconfig

注:ld.so.conf和ldconfig用于维护系统动态链接库。

安装

make && make install

安装完成,执行以下命令测试:

/usr/local/svn/bin/svnserve --version

为了方便下操作,下面将SVN的BIN添加到PATH:

vi /etc/profile

倒数第二行添加:

PATH=/usr/local/svn/bin:$PATH

保存后,使其立即生效:

source /etc/profile

4.配置svn
建立版本库目录,可建多个:

mkdir -p /home/svndata/repos

建立版本库:

svnadmin create /home/svndata/repos

修改版本库配置文件:

vi /home/svndata/repos/conf/svnserve.conf

内容修改为:

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = repos

注意:对用户配置文件的修改立即生效,不必重启svn。

添加用户及密码:

vi /home/svndata/repos/conf/passwd

添加如下代码并保存:

[users]
wll = 123456

配置svn用户访问权限:

vi /home/svndata/repos/conf/authz

注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
= ,
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/home/svndata,[/]就是表示对全部版本库设置权限。
[repos:/] 表示对版本库repos设置权限;
[repos:/abc] 表示对版本库repos中的abc项目设置权限;
[repos:/abc/aaa] 表示对版本库repos中的abc项目的aaa目录设置权限;
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。
权限可以是w、r、wr和空,空表示没有任何权限。
示例:

[groups]
admin = wll
[/]
@admin = rw
# [repos:/abc/aaa]
# king = rw
# [repos:/pass]
# king =

svn配置完毕。

建立启动svn的用户:

useradd svn
passwd svn

根据提示,为用户svn设置密码。
允许用户svn访问版本库:

chown -R svn:svn /home/svndata

启动svn:

su - svn -c "svnserve -d --listen-port 9999 -r /home/svndata"

其中:
su - svn表示以用户svn的身份启动svn;
-d表示以daemon方式(后台运行)运行;
--listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限;
-r /home/svndata指定根目录是/home/svndata。

5.将svn加入到开机启动
编辑rc.local文件:

vi /etc/rc.d/rc.local

加入如下启动命令:

/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata

如果想停止svn,则使用如下命令:

killall svnserve

如果想将svn作为服务:
在/etc/rc.d/init.d/目录下新建名为svn的文件并设置权限为755,并添加如下代码:

#!/bin/bash
# build this file in /etc/rc.d/init.d/svn
# chmod 755 /etc/rc.d/init.d/svn
# centos下可以用如下命令管理svn: service svn start(restart/stop)
SVN_HOME=/home/svndata
if [ ! -f "/usr/local/svn/bin/svnserve" ]
thenecho "svnserver startup: cannot start"exit
fi
case "$1" instart)echo "Starting svnserve..."/usr/local/svn/bin/svnserve -d --listen-port 9999 -r $SVN_HOMEecho "Finished!";;stop)echo "Stoping svnserve..."killall svnserveecho "Finished!";;restart)$0 stop$0 start;;*)echo "Usage: svn { start | stop | restart } "exit 1
esac

6.连接SVN
安装TortoiseSVN,重启系统。
启动TortoiseSVN并在地址栏中输入svn://192.168.x.x:9999/repos
根据提示输入用户名与密码后就可以使用版本控制啦。

开篇请允许我一段废话:公司最近用了台linux做服务器,还要做版本控制来控制共享文件以及程序。也许,这在软件公司可能是司空见惯的事情,但是对于一个面向物流机械制造以及工控的国企来说,也许是一个不小的改进了。负责服务器支持以及版本控制的事情自然落到我的身上。首先,我想到的是利用大学里学过的CVS,本来Windows上很简单的事情,但是到了Linux上,一切就变得麻烦了。按照网上的教程走,CVS服务器的安装与启动都ok,但该死的init命令死活不过,老是说2702端口拒绝访问,对此上网查了,不少人碰到,但没有一个人真正提出解决方案的。于是乎,在网上看到了一个解决方案——SVN,救星啊。比之CVS好伺候多了。

言归正传,下面开始介绍在Linux下,SVN服务器的安装,安装的是网上目前最新的1.5.5版本

方案一:以下内容我参照了网上的相关安装手册,感谢原作者的辛勤劳动:

以root用户登陆系统。
(1)安装Apache
#cd httpd-2.2.11#./configure --enable-dav --enable-so --enable-maintainer-mode
#make
#make install

/*注意当安装Berkeley DB是提供了版本库的一种存储格式,Berkeley DB是Oracle提供的一种嵌入式数据库格式,不装也不所谓,而且重要的是与Apr-util相冲突!*/
安装Berkeley DB
#cd db-4.4.20 /build_unix/
#../dist/configure --prefix=/usr/local/bdb
#make
#make install
(2)解压subversion-deps-1.5.5.tar.gz

内含apr、apr-util、neon、serf、zlib四个包

安装neon、serf、zlib——1)./configure 2)make 3)make install

安装apr :

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

make && make install

安装apr-util

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

注意:./configure前要先cd到压缩包解压后的目录内

安装Subversion(不用BerkeleyDB)
#tar -zxvf subversion-1.2.3.tar.gz
#cd subversion-1.2.3
#./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config

#make
#make install

/* 你可以用以下命令检验subversion是否安装成功 */
#svnadmin --version

顺便说一下:linux下的创建目录、用户、组、修改权限等等,都是可以在linux的窗体系统中直接操作的,类似win32。

——————————————————————————华丽的分割线————————————————————————————————

在http://www.subversion.org.cn/?action-viewnews-itemid-85下载最新的版本,subversion-1.5.5与subversion-deps-1.5.5必须都下载,而且要先安装subversion-deps-1.5.5,两者关系经我查阅是如下的关系(再次转载,谢谢原创者的贡献):

subversion服务器是不需要apache的,但是可以使用apache,视具体情况来选择。

1、如果只要通过file://或svn://来访问,则不需要apache,只安装svn即可,使用svnserve来作为服务。

2、如果你要建立一个可以通过http://或https://来访问的版本库服务器,则你需要使用apache。

基于apache配置,请看http://bbs.iusesvn.com/thread-158-1-1.html 。

客户端

在windows下,不管你要访问的是什么类型的服务器,只要安装一个TortoiseSVN就可以了,开发者已经帮你搞定一切。

在类Linux系统下,如果你通过file://或svn://来访问,则只要编译安装svn就可以,

如果通过http://访问,则要同neon编译,

如果通过https://访问,则要同带ssl支持的neon编译,

不论怎样,都要同apr和apr-util编译。

neon、apr、apr-util也很容易获得,目前发布的subversion代码都会有一个叫做subversion-deps-xxx的文件,比如1.4.3的就是subversion-deps-1.4.3.tar.bz2

——————————————————————————华丽的分割线————————————————————————————————

1) BerkeleyDB 版本不能大于 4.3.否则同样会出现以下错误.

configure: error: APR-UTIL was installed independently, it won’t be
possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4
主要是apr-util 暂时不支持4.4的版本.(我当时用的4.7.25,当然不行啦。以上原因参考网络教程)
2)提示configure: WARNING: we have configured without BDB filesystem support
大概是不能创建db格式的版本库;就是BerkeleyDB 没装,没关系采用filesystem一样保存

今天有个同事在搞SVN服务器,SVN服务器我也算比较熟的了,他在配置的时候遇到了一个问题,就是包函authz这个配置文件老是有问题,以前我装SVN的时候,是和apache结合的http://blog.51yip.com/server/291.html,我那同事装的呢,是单独的没有和apache结合,权限配置有很大的不同。所以晚上回来,我在自己的电脑上装一个。

一,安装要的软件

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

svn的官方网址是http://subversion.tigris.org

上面二个压缩文件解压后会放到同一个文件下,不要另建文件夹

二,安装独立svn

1,解压安装

  1. tar zxvf subversion-1.6.1.tar.gz
  2. tar zxvf subversion-deps-1.6.1.tar.gz
  3. cd subversion-1.6.1/
  4. ./configure --prefix=/usr/local/svn
  5. make && make install

到这儿就安装好了。安装独立svn,它也考虑到将来有可能会和apache结合,所以安装的时候,它把和apache结合要用到的模块都放到/usr/lib/httpd/modules,部分提示如下
Libraries have been installed in:
/usr/lib/httpd/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and

2,查看svn信息

[root@BlackGhost bin]# /usr/local/svn/bin/svnserve --version
svnserve, version 1.6.1 (r37116)
compiled Jul  7 2010, 23:06:21

Copyright (C) 2000-2009 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 back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

3,将svn的bin目录加到环境变量中去

[root@BlackGhost /]# PATH=$PATH:/usr/local/svn/bin
[root@BlackGhost /]# export PATH
[root@BlackGhost /]# svn
svn            svnadmin       svnlook        svnsync
svn2abs        svndumpfilter  svnserve       svnversion

三,建立仓库,配置svn

1,建个svn的根目录,因为项目不只一个

[zhangy@BlackGhost ~]$ mkdir -p /home/zhangy/www    #-p的意思是说如果没有父目录建之

2,建个仓库

[zhangy@BlackGhost ~]$ mkdir -p /home/zhangy/www/repos

[zhangy@BlackGhost www]$ svnadmin create /home/zhangy/www/repos/

3,导入数据

[zhangy@BlackGhost ~]$ svn import ./svntest file:///home/zhangy/www/repos -m "Initial repository test"
Adding         svntest/test.php

Committed revision 1.

4,修改svnserve.conf

[root@BlackGhost conf]# vi svnserve.conf

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

5,目录控制文件authz

[root@BlackGhost conf]# vi authz
[groups]

admin= zhangy

[repos:/]
@admin = rw
* = r

6,修改用户密码文件passwd

[root@BlackGhost conf]# vi passwd

[users]
zhangy = *****

四,启动和简单测试

1,启动svn

[root@BlackGhost www]# svnserve -d -r /home/zhangy/www

在这里特别的要注意,/home/zhangy/www是仓库的根目录,不要和[repos:/]目录重叠了。如果重叠是会提示你以下错误

[zhangy@BlackGhost checkout]$ svn co svn://127.0.0.1/
svn: Authorization failed

2,测试svn

a),checkout

[zhangy@BlackGhost checkout]$ svn co svn://127.0.0.1/repos
Authentication realm: <svn://127.0.0.1:3690> 3d0c32b1-3841-4518-b6b1-dcdb6c7ed716
Password for 'zhangy':
-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

<svn://127.0.0.1:3690> 3d0c32b1-3841-4518-b6b1-dcdb6c7ed716

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/home/zhangy/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
A    repos/test.php
Checked out revision 1.

checkout的时候会出现Store password unencrypted,解决办法

vi /home/zhangy/.subversion/servers

找到以下内容,注释去掉并改成yes就行了

# store-plaintext-passwords = no

b),add 和submit

[zhangy@BlackGhost repos]$ svn add aaa.php
A         aaa.php
[zhangy@BlackGhost repos]$ svn commit aaa.php -m "ok"
Adding         aaa.php
Transmitting file data .
Committed revision 2.

svn的操作有很多,在这儿就不多说了。

在Linux下,SVN服务器的安装相关推荐

  1. linux下svn服务器的安装配置和使用

    2019独角兽企业重金招聘Python工程师标准>>> 安装环境: centos 一,安装必须的软件包. yum install subversion mod_dav_svn 二,基 ...

  2. Linux下SVN服务器同时支持Apache的http和https及svnserve独立服务器三种模式且使用相同的访问权限账号...

    1.在服务器上安装配置SVN服务: 2.配置SVN服务同时支持Apache的http和svnserve独立服务器两种模式访问: 3.Apache的http和svnserve独立服务器两种模式使用相同的 ...

  3. Linux下SVN服务器的搭建

    Linux下SVN服务器的搭建 宗旨:技术的学习是有限的,分享的精神是无限的. 1.下载工具(下载地址:) subversion-1.6.1.tar.gz subversion-deps-1.6.1. ...

  4. Linux下svn服务器迁移

    Linux下svn服务器迁移 1.介绍迁移方式: 1.由于项目工作需要进行svn服务器的迁移,对此简要介绍svn服务器的迁移方案. 2.主要迁移方式: svnadmin dump svnadmin h ...

  5. linux下svn服务器搭建及使用

    文章目录 1. 安装svn客户端 2. 安装svn服务器 3. 在svn目录下创建版本库 4. 修改版本库配置文件 4.1 修改 authz 文件 4.2 设置密码 passwd 4.3 修改 svn ...

  6. Linux下SVN服务器迁移(详细版)

    最近因公司测试环境需要做迁移,除了应用需要迁移外,项目中平时用到的软件都得迁,涉及到nginx,redis , active MQ ,jenkins 以及SVN.SVN的迁移涉及到了代码的同步,在网上 ...

  7. Linux下SVN服务器支持Apache的http和svnserve独立服务器

    2019独角兽企业重金招聘Python工程师标准>>> 说明 服务器操作系统:CentOS 6.6 关闭防火墙,SElinux 实现 1.在服务器上安装配置SVN服务: 2.SVN服 ...

  8. Linux下SVN服务器搭建(CentOS+Subversion)

    svn(subversion)是近年来崛起的版本管理工具,是CVS的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件.svn服务器有2种运行方式:独立服务器和借助apache等web服务 ...

  9. linux svn 面板,Linux下SVN服务器搭建(CentOS+Subversion)

    安装 (centos下yum即可方便的完成安装) # yum install subversion 测试安装是否成功: # svnserve --version 回车显示版本说明安装成功 建立版本库 ...

  10. Linux下svn服务端安装配置

    早上看到一篇文章把VC(版本控制)讲的很好,狂神聊Git,SVN是集中式版本控制中心,git是分布式版本控制,Svn配置和使用: 安装svn yum -y install subversion 输入s ...

最新文章

  1. 无参数实例化Configuration对象以及addResource无法加载core-site.xml中的内容
  2. 北邮国院c语言期末考试题,北邮C语言复习题2014.ppt
  3. 【LeetCode从零单排】No 191.Number of 1 Bits(考察位运算)
  4. Python实训day10am【Python中的地址引用、os模块】
  5. 国产手机都会用鸿蒙吗,华为鸿蒙系统已经发布,小米等国产手机会使用鸿蒙系统吗?来看看...
  6. Mac-安装Homebrew报错error: could not lock config file .git/config:
  7. list选取多个元素 python_【幼儿园级】0基础学python一本通(上)——AI未来系列1...
  8. Python Socket(未编辑)
  9. U盘/硬盘/移动硬盘专家
  10. 2014年物联网Internet of Things应用简介
  11. 汇编语言程序设计 实验6 分支程序设计
  12. 阿里云香港服务器和大陆服务器区别及选择
  13. 项目管理中成本管理相关指标
  14. Windows 8如何关闭自动维护_-Chaz-_新浪博客
  15. asterisk cdr mysql_在asterisk中添加CDR sqlite支持
  16. 计算机Web书籍推荐
  17. 深入理解React:懒加载(lazy)实现原理
  18. 可以批量制作吊牌标签上的条码标签打印软件
  19. 一个男人,给他女朋友的男朋友的一封信
  20. allegro 问题

热门文章

  1. openedx 修复课程grades文件下载bug
  2. FFmpeg将图像数据编码为H264视频
  3. 微信小程序————setData()方法的使用和注意事项
  4. qt data和setData
  5. 强化学习丨有限马尔可夫决策过程学习总结
  6. 我给东软JAVA培训学生的建议简历模板
  7. 在线教育有什么优势?
  8. LaTex学习笔记——TeXworks使用常见问题(一)
  9. 好用的微信管理工具有哪些
  10. HTTP协议相关的问题