共计 5716 个字符,预计需要花费 15 分钟才能阅读完成。
CentOS 7 下 SVN 的安装及基础配置介绍
一、实践环境
二、安装操作系统
三、安装 SVN
四、基础配置
五、启动 SVN
六、客户端访问
七、常见问题排查
一、实践环境
CentOS 7 操作系统(CentOS-7-x86_64-DVD-1503-01.iso)
下载地址:http://ftp.riken.jp/Linux/centos/7/isos/x86_64/
二、安装操作系统
软件选择(SOFTWARE SELECTION):
三、安装 SVN
[root@localhost ~]# yum install subversion
查看是否安装安装成功
[root@localhost ~]# svnserve –version
svnserve, version 1.7.14 (r1542130)
compiled Jun 9 2014, 18:54:44
Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
Cyrus SASL authentication is available.
四、基础配置
创建一个空文件夹, 例如 svn,作为所有版本库的根目录
[root@localhost ~]# mkdir -p /svn/
进入 svn 目录,创建版本库,比如 repo
[root@localhost ~]# cd /svn/
[root@localhost svn]# svnadmin create –fs-type fsfs repo
# 查看 repo 目录文件
[root@localhost svn]# cd repo/
[root@localhost repo]# ls
conf db format hooks locks README.txt
[root@localhost repo]# cd conf/
[root@localhost conf]# ls
authz passwd svnserve.conf
文件说明:
1、svnserve.conf 文件
该文件用于控制 svnserve 守护进程 (svnserve daemon) 的配置,以便访问 svn 版本库。如果仅是通过 http:// 或者 file:URLs 方式访问版本库,则与该文件配置不起作用。
[general]结点
anon-access(匿名访问)和 auth-access(认证访问)选项, 分别用于控制未认证用户和与认证用户对 svn 版本库的访问,其可选值包含 write,read,none,如果设置为 none 则无对版本库的读写访问权限;设置为 write 则有可读可写权限;设置为 read 则只有读权限。
password-db 用于控制密码数据库文件的位置,除非指定了一个带符号‘/’的路径,否则文件的位置为包含该配置文件的相对路径,如果开启了 SASL,则该文件配置不起作用。
authz-db 选项控制基于路径访问控制的认证规则的位置。除非指定了带‘/’的路径,否则该文件位置为包含该配置文件的相对位置。如果不指定 authz-db, 则没有基于路径的访问控制。
realm 选项指定了版本库的认证域(authentication realm)。如果两个版本库有同样的认认证域(authentication realm),他们应该有相同的密码数据库,反之亦然。缺省的 realm 为版本库的 uuid
force-username-case 选项,在 authz-db 文件配置的规则下,让 svnserve 比较用户名之前,规范化用户名大小写(case-normalize)。合法值有 lowser 转小写;upper 转大写;none 采用默认的,不进行大小写转化。
[sasl]结点
用于指定是否为认证使用 Cyrus SASL 类库。默认的 false。如果 svnserve 不带 Cyrus SASL 支持编译的,那么该小节会被忽略。运行 ’svnserve –version,查找如下行 ’Cyrus SASL authentication is available.’ 则表示支持。
该选项指定了想让 SASL 提供的安全级别,0 表示加密,1 表示仅集成检查,大于 1 的的值是和用于加密的有效密匙长度相关的。(e.g. 128 代表 128-bit 加密). 默认值如下
# min-encryption = 0
# max-encryption = 256
2、password 文件
该文件为 svnserve 密码文件实例,每行代表一个 svn 用户账户
[users]
用户名 1 = 用户密码 1
用户名 2 = 用户密码 2
……
用户名 n = 用户密码 n
3、authz 文件
该文件为 svnserve 认证实例文件,定义路径和版本库 (可选) 的认证
其中每一行记录可能代表
1)单个用户
2)定义的一组用户([groups]节点中定义的
3)定义的一个别名([aliases]节点中定义的
4)使用 $authenticated token 的所有认证用户
5)仅使用 $anonymous token 的匿名用户
6)* 任何人
[aliases]
暂时只知道是设置别名,但是具体是怎么定义的,不是很清楚,先不管吧
[groups]
自定义分组名 1 = 用户 1, 用户 2,……
自定义分组名 2 = 用户 3, 用户 4,……
……
自定义分组名 n = 用户 n1, 用户 n2,……
说明:用户名之间用英文逗号分隔
[repository_name:dir_path]
用户名 1 = 权限 1
用户名 2 = 权限 2
……
用户名 n = 权限 n
@自定义分组名 1 = 权限 1
@自定义分组名 2 = 权限 2
……
@自定义分组名 n = 权限 n
& 别名 1 = 权限 1
& 别名 2 = 权限 2
……
& 别名 n = 权限 n
* = 权限
[dir_path]
用户名 1 = 权限 1
用户名 2 = 权限 2
……
用户名 n = 权限 n
@自定义分组名 1 = 权限 1
@自定义分组名 2 = 权限 2
……
@自定义分组名 n = 权限 n
& 别名 1 = 权限 1
& 别名 2 = 权限 2
……
& 别名 n = 权限 n
* = 权限
说明:
1) [repository_name:dir_path]表示名为 repository_name 的版本库的 dir_path 目录, 比如 [repo:/]表示 repo 版本的库的根目录
举例:
svn 版本库目录结构为:/svn/repo,,其中 /svn 为所有版本库的根,repo 为其中一个版本库名称,启动方式:svnserve -d -r /svn/,
那么可以如下设置
[repo:/] / 代表 /svn/
[repo:/test1]
[repo:/test1/test2]
如果只有一个版本库,等效做法如下
[/]
[/test1]
[/test1/test2]
其中,test1,test2 都是通过 svn 客户端创建的目录
3) 权限可为 r、w、rw,分别代表只可读,只可写,可读可写,这里 r、w、rw 只针对 dir_path 最后层级的目录生效
例:
[repo:/test1/test2]
shouke = rw
那么 svn:192.168.1.103/test1 进行访问,会提示认证失败
4) 别名,用户名,自定义分组不分先后顺序
5) * = 权限,如果无任何权限则不填写,直接 * =,这里,* 表示除了指定的用户,自定义分组,别名之外的任何人
修改 svnserve.conf 配置
[root@localhost conf]# vim svnserve.conf
找到如下内容
[general]
……(略)
# anon-access = read
# auth-access = write
改成如下内容
[general]
……(略)
anon-access = none
auth-access = write
找到如下内容
#password-db = passwd
改成如下内容
password-db = password
找到如下内容
# authz-db = authz
改成如下内容
authz-db = authz
找到如下内容
[sasl]
……(略)
# use-sasl = true
改成如下内容
[sasl]
……(略)
use-sasl = true
新增 svn 用户
[root@localhost conf]# useradd shouke
[root@localhost conf]# passwd shouke
Changing password for user shouke.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost conf]# vim passwd
说明:用户密码 123456
修改 password 配置文件
找到如下内容,
[users]
# harry = harryssecret
# sally = sallyssecret
在其下新增带背景色内容,如下
[users]
# harry = harryssecret
# sally = sallyssecret
shouke=123456
修改 authz 配置文件
[root@localhost conf]# vim authz
……(略)
找到如下内容
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
在其下新增一行内容,如下
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
group1 = shouke
找到如下内容
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
在其下新增内容,如下
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[repo:/]
@group1 = rw
五、启动 SVN
[root@localhost conf]# svnserve -d -r /svn/
说明:-d 表示以 daemon 的方式运行,-r dir_path 表示把 dir_path 当作版本库的根目录,比如 /svn/repo,svn://192.168.1.103/repo,访问的就是 /svn/repo
查看
[root@localhost conf]# netstat -antp | grep svn
tcp 00 0.0.0.0:36900.0.0.0:* LISTEN 8474/svnserve
说明:如上,默认端口为 3690
六、客户端访问
测试客户端版本:TortoiseSVN-1.9.1.26747-win32-svn-1.9.1.1441852914.msi
七、常见问题排查
1.Unable to connect to repository at url‘svn://…’No repositroy found at snv://……,如下
说明:访问方式不对,
1)类似 svnserve -d -r /svn/ 方式(即指定路径作为根目录)开启的 svn 服务,正确的访问方式 svn://192.168.1.103/repo 即 svn://ip[:port]/repository_name
2)不指定路径作为版本库的跟目录里,svnserve -d 方式开启的 svn 服务,正确的访问方式 svn://192.168.1.103/svn/repo 即 svn://[:port]/path_of_repository
2、please wait while the repository browser is initializing
说明:防火墙阻止了端口,解决方法(centos7 下测试),开放端口
[root@localhost conf]# firewall-cmd –permanent –zone=public –add-port=3690/tcp
success
[root@localhost conf]# firewall-cmd –reload
success
3、类似如下,目标计算机积极拒绝或者
说明:服务器 svnserve 未开启.
Ubuntu 14.04 下搭建 SVN 服务器 SVN:// http://www.linuxidc.com/Linux/2015-01/111956.htm
CentOS 7 下安装 iF.svnadmin 实现 Web 方式管理 SVN(源码安装)http://www.linuxidc.com/Linux/2016-08/134214.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
CentOS 6.6 搭建 SVN 服务器 http://www.linuxidc.com/Linux/2016-12/137864.htm
CentOS 7.2 下 Nginx+MySQL+PHP-FPM+SVN 配置 Walle 自动化部署系统详解 http://www.linuxidc.com/Linux/2016-11/137703.htm
Subversion (SVN) 的详细介绍:请点这里
Subversion (SVN) 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138636.htm