系统环境:centos7.2
一、安装 svnserve
通过 yum 命令安装 svnserve,命令如下:
yum-yinstallsubversion此命令会全自动安装 svn 服务器相关服务和依赖,安装完成会自动停止命令运行
若需查看 svn 安装位置,可以用以下命令:
rpm-qlsubversion二、创建版本库目录
(此仅为目录,为后面创建版本库提供存放位置)
选择在 var 路径下创建版本库,当前处于根目录下,一次性创建如下:
mkdir/var/svnrepos三、创建 svn 版本库
在第二步建立的路径基础上,创建版本库,命令如下:
svnadmin create /var/svnrepos/xxxx(xxxx 为你预期的版本库名称,可自定义,比如 CPPI)
创建成功后,进入 xxxx 目录下
cd/var/svnrepos/xxxx进入目录,可以看见如下文件信息:
total24drwxr-xr-x2root root4096May213:48 conf drwxr-sr-x6root root4096May213:48 db -r--r--r--1root root2May213:48formatdrwxr-xr-x2root root4096May213:48 hooks drwxr-xr-x2root root4096May213:48 locks -rw-r--r--1root root229May213:48 README.txt下面是这些目录的详细讲解
四、配置修改
进入已经创建好的版本库目录下,也就是前文说创建的 xxxx,进入 conf
cd/var/svnrepos/xxxx/confconf 目录下,一共存放三份重要的配置文件,如下:
total12-rw-r--r--1root root1080May213:48 authz -rw-r--r--1root root309May213:48passwd-rw-r--r--1root root3090May213:48 svnserve.confauthz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn 服务器配置文件
1.编辑 authz 文件
(注意:[/]也是必须的)
[/] 表示根目录,即 /var/svnrepos
luo = rw 表示用户 luo 对根目录具有读写权限。
2.编辑 passwd 文件
如上所示,用户名为:luo,认证密码为:luo123456
3.编辑 svnserve.conf 文件
(注意:配置的前面不能有空格,一定要顶格写)
anon-access = none:表示禁止匿名用户访问。
auth-access = write:表示授权用户拥有读写权限。
password-db = passswd:指定用户名口令文件,即 passwd 文件。
authz-db = authz:指定权限配置文件,即 authz 文件。
realm = /var/svnrepos:指定认证域,即 /var/svnrepos 目录。
五、防火墙开启
(这里以 iptable 防火墻为例)
多数情况下服务器安装完成,配置完成后,无法连接 svn 服务器,均是防火墙问题【注意:如果是阿里云,腾讯云的服务器,还需在安全组添加端口开启规则】
vi/etc/sysconfig/iptables添加配置信息
firewall-cmd--zone=public --add-port=3690/tcp--permanentfirewall-cmd--reload#重启防火墙 (一般我们在开放完新的端口后,需要重新启动防火墙)firewall-cmd --list-ports#查看已经开放的端口保存退出
六、启动 svn 服务器
svnserve-d-r/var/svnrepos启动成功后,可用 ps -aux 查看服务启动是否成功
ps-ef|grep'svnserve'七、客户端访问 svn 服务器
在 windows 客户端,输入地址:svn://ip 地址:3690/xxxx (iP 地址为你 linux 的 ip,xxxx 为前文创建的版本库名称,3690 为 svn 默认端口)
弹出输入用户名和密码,输入即可访问
或者在 linux 服务器输入命令测试:
svn co svn://ip地址:3690/xxxx如下为例子:
遇到的问题小结:
问题 1:执行 svn 命令:svn co svn://ip 地址:3690/xxxx 报错如下
这是因为修改 svnserve.conf 时,打开注释时,配置的前面有空格,应该顶格写。修改后即可
问题 2:输入账号密码后,提示 svn: Authorization failed 解决办法
把 authz 文件 [/] 改为 [] 试试