阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux SVN安装及配置图解教程

425次阅读
没有评论

共计 9525 个字符,预计需要花费 24 分钟才能阅读完成。

背景

自己有台云服务器,平时的一些学习资料就想通过 SVN 管理起来,在网上找了不少 Linux 搭建 svn 的教程,可是没有一篇完整的,感觉总缺点什么或者有点错误,后面自己经过综合与比较,并且多台服务器上面的测试,做了如下教程,供大家参考之后。

svn 服务器有 2 种运行方式

1. 独立服务器 (例如:svn://xxx.com/xxx);
2. 借助 apache。(例如:http://svn.xxx.com/xxx);
 为了不依赖 apache,选择第一种方式 - 独立的 svn 服务器。
svn 存储版本数据也有 2 种方式:
1.bdb;
2.fsfs。
 因为 BDB 方式在服务器中断时,有可能锁住数据(搞 ldap 时就深受其害,没法根治),所以还是 FSFS 方式更安全一点,我也选择这种方式。
我的系统环境:CentOS-6.2 + Php-5.4.3 + Nginx-1.3.0 + Mysql-5.5.25 + subversion-1.6.6

下载相关软件

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

编辑

1、查看是否安装了 svn 工具
 命令:rpm -qa | grep subversion
如果服务器已经安装了则不需要进行安装,如果没有安装可以进行全新的安装
2、首先检测系统有没有安装 SSL:
find / -name opensslv.h
如果找不到,就执行如下命令进行安装:
yum install openssl
 yum install openssl-devel
安装之后用 find / -name opensslv.h 命令找到 opensslv.h 所在的目录,即下列–with-openssl= 后面的路径,
3、解压 svn 安装文件
subversion-1.6.6.tar.gz
 subversion-deps-1.6.6.tar.gz
命令如下:

 

1
2
 
tar zxvf subversion-1.6.6.tar.gz
tar zxvf subversion-deps-1.6.6.tar.gz
 

tar 为解压命令,zxvf 为 tar 命令的参数,用于解压 tar.gz 格式压缩的文件。
 解压后生成 subversion-1.6.6 子目录,两个压缩包解压后都会自动放到此目录下,不用手动更改。
 进入解压子目录 cd subversion-1.6.6 进行编译。
4、编译:

./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 库,使用如下命令安装 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

安装

make
 make install
如果 make install 出现下面错误:
/home/upload/subversion-1.6.6/subversion/svnversion/.libs/lt-svnversion: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
 make: *** [revision-install] Error 127
解决办法:
1、编辑 /etc/ld.so.conf 文件
vi /etc/ld.so.conf
添加下面一行代码
/usr/local/lib
 2、保存后运行 ldconfig:
/sbin/ldconfig
注:ld.so.conf 和 ldconfig 用于维护系统动态链接库。
3、然后再安装
make && make install
测试是否安装成功

/usr/local/svn/bin/svnserve –version

如果显示如下,svn 安装成功:

svnserve, version 1.6.6 (r40053)
  compiled Dec 25 2012, 13:14:38
 
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.

4、为了方便下操作,把 svn 相关的命令添加到环境变量中:
echo“export PATH=$PATH:/usr/local/svn/bin/”>> /etc/profile
 source /etc/profile

配置 svn

1、建立 SVN 的根目录
mkdir -p /opt/svn/
 2、建立一个产品仓库
mkdir -p /opt/svn/tshop/
 svnadmin create /opt/svn/tshop/
如果你们的研发中心有多个产品组,每个产品组可以建立一个 SVN 仓库
3、修改版本配置库文件
vi /opt/svn/tshop/conf/svnserve.conf
修改后的文件内容如下:

### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository.  (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
 
### Visit http://subversion.tigris.org/ for more information.
 
[general]
### These options control access to the repository for unauthenticated
### and authenticated users.  Valid values are “write”, “read”,
### and “none”.  The sample settings below are the defaults.
anon-access = none # 注意这里必须设置,否则所有用户不用密码就可以访问
auth-access = write
### The password-db option controls the location of the password
### database file.  Unless you specify a path starting with a /,
### the file’s location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control.  Unless you specify a path
### starting with a /, the file’s location is relative to the the
### directory containing this file.  If you don’t specify an
### authz-db, no path-based access control is done.
### Uncomment the line below to use the default authorization file.
authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa.  The default realm
### is repository’s uuid.
realm = tshop
 
[sasl]
### This option specifies whether you want to use the Cyrus SASL
### library for authentication. Default is false.
### This section will be ignored if svnserve is not built with Cyrus
### SASL support; to check, run ‘svnserve –version’ and look for a line
### reading ‘Cyrus SASL authentication is available.’
# use-sasl = true
### These options specify the desired strength of the security layer
### that you want SASL to provide. 0 means no encryption, 1 means
### integrity-checking only, values larger than 1 are correlated
### to the effective key length for encryption (e.g. 128 means 128-bit
### encryption). The values below are the defaults.
# min-encryption = 0
# max-encryption = 256

对用户配置文件的修改是立即生效的,不必重启 svn。
4、开始设置 passwd 用户账号信息

vi /data/svn/repos/conf/passwd
修改完之后的内容如下:
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
### 在下面添加用户和密码,每行一组 username = password
[users]
# harry = harryssecret
# sally = sallyssecret
###=========== 下面是我添加的用户信息 ========#######
iitshare = password1
itblood = password2

5、开始设置 authz. 用户访问权限
vi /data/svn/repos/conf/authz
修改完之后的内容如下:

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
###  – a single user,
###  – a group of users defined in a special [groups] section,
###  – an alias defined in a special [aliases] section,
###  – all authenticated users, using the ‘$authenticated’ token,
###  – only anonymous users, using the ‘$anonymous’ token,
###  – anyone, using the ‘*’ wildcard.
###
### A match can be inverted by prefixing the rule with ‘~’. Rules can
### grant read (‘r’) access, read-write (‘rw’) access, or no access
### (”).
 
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil,
        Ltd./OU=Research Institute/CN=Joe Average
 
# [groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
 
# [/foo/bar]
# harry = rw
# &joe = r
# * =
 
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
 
###——————– 下面我新加的 ————————###
### 屏蔽掉上面的[groups] 因为在下面添加了
 
[groups]
devteam = iitshare, itblood #devteam 项目组包括两个用户 iitshare,itblood
 
[/]
iitshare = rw
itblood =
[tshop:/tb2c]
@devteam = rw
itblood =
 
[tshop:/tb2b2c]
@devteam = rw
itblood = r
 

其中,1 个用户组可以包含 1 个或多个用户,用户间以逗号分隔。
说明:

devteam = iitshare, itblood #devteam 项目组包括两个用户 iitshare,itblood
[/]
iitshare = rw #iitshare 对根目录有读写权限
itblood = #itblood 对根目录没有任何权限
#### 如果需要配置 tb2c、tb2b2c 项目的权限,前提条件是 tshop 仓库下面需要有这两个项目
#### 如果没有的话,tshop 都将不能访问
[tshop:/tb2c] #对 tshop 仓库的 tb2c 项目进行权限控制
@devteam = rw #控制 devteam 组对 tb2c 项目有读写权限
itblood = #限制 itblood 所有权限,其它用户有读写权限
[tshop:/tb2b2c] #对 tshop: 仓库的 tb2b2c 项目进行权限控制
@devteam = rw #限制 devteam 组对 tb2b2c 项目有读写权限
itblood = r #限制 itblood 只有读权限,其它用户有读写权限
 

6、注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启 svn。
 用户组格式:

[groups]
= ,
其中,1 个用户组可以包含 1 个或多个用户,用户间以逗号分隔。
版本库目录格式:
[< 版本库 >:/ 项目 / 目录]
@< 用户组名 > = < 权限 >
< 用户名 > = < 权限 >

其中,方框号内部分可以有多种写法:
 [/], 表示根目录及以下,根目录是 svnserve 启动时指定的,我们指定为 /home/svndata,[/]就是表示对全部版本库设置权限。
[tshop:/] 表示对版本库 tshop 设置权限;
[tshop:/abc] 表示对版本库 tshop 中的 abc 项目设置权限;
[tshop:/abc/aaa] 表示对版本库 tshop 中的 abc 项目的 aaa 目录设置权限;
 权限主体可以是用户组、用户或 *,用户组在前面加 @,* 表示全部用户。
 权限可以是 w、r、wr 和空,空表示没有任何权限。
7、建立启动 svn 的用户
useradd svn
根据提示, 为用户 svn 设置密码
 允许用户 svn 访问版本库:
chown -R svn:svn /opt/svn
 8、启动 svn:
 方式一:svnserve -d -r /opt/svn/ #默认的启动端口号为 3690
方式二:su – svn -c“svnserve -d –listen-port 9999 -r /opt/svn/”
其中:
su – svn 表示以用户 svn 的身份启动 svn;
- d 表示以 daemon 方式(后台运行)运行;
–listen-port 9999 表示使用 9999 端口,可以换成你需要的端口。但注意,使用 1024 以下的端口需要 root 权限;
-r /opt/svn 指定根目录是 /opt/svn。
9、检查是否启动
netstat -tunlp | grep svn
如果显示以下信息说明启动成功
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 10973/svnserve
 10、将 svn 加入到开机启动
 编辑 rc.local 文件:vi /etc/rc.d/rc.local
加入如下启动命令:
/usr/local/svn/bin/svnserve -d –listen-port 9999 -r /opt/svn
 11、如果想停止 svn,则使用如下命令:
killall svnserve
 12、如果想将 svn 作为服务:
 在 /etc/rc.d/init.d/ 目录下新建名为 svn 的文件
 并设置权限为 755:chmod 755 /etc/rc.d/init.d/svn
编辑 svn 文件:vi /etc/rc.d/init.d/svn, 在里面添加如下代码:

 
#!/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=/opt/svn
if [! -f “/usr/local/svn/bin/svnserve”]
then
    echo “svnserver startup: cannot start”
    exit
fi
case “$1” in
    start)
        echo “Starting svnserve…”
        /usr/local/svn/bin/svnserve -d –listen-port 9999 -r $SVN_HOME
        echo “Finished!”
        ;;
    stop)
        echo “Stoping svnserve…”
        killall svnserve
        echo “Finished!”
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo “Usage: svn {start | stop | restart} “
        exit 1
esac
 

之后便可以以 service svn start(restart/stop)方式启动 SVN。
 通过 web 方式访问 svn 有很多方法,请参阅配置 websvn 或配置 bsSvnBrowser 的方法

客户端访问

1、下载安装文件
window 64 位的话下载:TortoiseSVN-1.7.6.22632-x64-svn-1.7.4.msi
 window 32 位的话下载:TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi
具体的下载文件可以在网上下载下,一找一大堆
2、通过客户端进行访问
 地址如下:
svn://{your-server-ip}:9999/tshop/ 或者 svn://{your-server-ip}:3690/tshop/
注意:
 不要在浏览器中通过 http 的方式进行访问,如下地址:
http://{your-server-ip}:9999/tshop/ 或者 http://{your-server-ip}:3690/tshop/
那样肯定是不行的,因为你没有配置 http 的服务,上面是安装独立的 SVN 服务器

到此为止 Linux 搭建 SVN 的整个过程已经结束了,您是不是已经看的累了,那就休息休息休息吧,在安装和配置过程中有什么问题,请进行留言,我会及时做出回复

Ubuntu 14.04 下搭建 SVN 服务器 SVN://  http://www.linuxidc.com/Linux/2015-01/111956.htm

CentOS 6.2 SVN 搭建 (YUM 安装) http://www.linuxidc.com/Linux/2013-10/91903.htm

CentOS 6.5 部署 Apache+SVN  http://www.linuxidc.com/Linux/2013-12/94315.htm

Apache+SVN 搭建 SVN 服务器 http://www.linuxidc.com/Linux/2013-03/81379.htm

Windows 下 SVN 服务器搭建和使用 + 客户端重新设置密码 http://www.linuxidc.com/Linux/2013-05/85189p5.htm

Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN 数据 http://www.linuxidc.com/Linux/2013-05/84695.htm

Ubuntu Server 搭建 SVN 服务以及迁移方法 http://www.linuxidc.com/Linux/2013-05/84693.htm

Subversion (SVN) 的详细介绍:请点这里
Subversion (SVN) 的下载地址:请点这里

 本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-01/127293.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计9525字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7963589
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...