centos7搭建SVN服务器

在CentOS7上配置SVN服务器

 

(注意:整个过程最好切换到root用户下操作)

一.     安装

[root@version-server ~]$ yum install subversion

[root@version-server ~]$ svnserve --version

svnserve, version 1.7.14 (r1542130)

   compiled Apr 11 2018, 02:40:28

 

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.

二.     建立版本库

subversion的默认版本库位置在/var/svn,如果var下没有看到svn文件夹,就mkdir。

(如果想调整位置,可以修改配置文件/etc/sysconfig/svnserve中的OPTIONS,比如改为OPTIONS="-r /opt/svn",并创建对应文件夹:mkdir -p /opt/svn。)

用svnadmin命令建立版本库(比如库名是ducuments):

[root@version-server ~]$ svnadmin create /var/svn/documents

[root@version-server ~]$ ll /var/svn/documents/

total 8

drwxr-xr-x. 2 root root  54 Jan  3 04:21 conf

drwxr-sr-x. 6 root root 233 Jan  3 04:21 db

-r--r--r--. 1 root root   2 Jan  3 04:21 format

drwxr-xr-x. 2 root root 231 Jan  3 04:21 hooks

drwxr-xr-x. 2 root root  41 Jan  3 04:21 locks

-rw-r--r--. 1 root root 229 Jan  3 04:21 README.txt

三.     配置

打开版本库documents的配置文件:vim /var/svn/documents/conf/passwd,在[users]节点下配置一个用户test1,密码为test1pass:

[users]
test1 = test1pass

打开版本库documents的配置文件:vim /var/svn/documents/conf/authz,新增[documents:/]节点,并配置gdcni为读写权限:

[documents:/]
test1 = rw

(或者可以这样做:

[groups]
g1 = test1,test2,test3
g2 = test4,test5,test5

[documents:/]
@g1 = rw    #读写权限
@g2 = r     #只读权限

当然,指定版本库可以继续深入到其中的子文件夹,如:

[documents:/doc1])

打开版本库documents的配置文件:vim /var/svn/documents/conf/svnserve.conf,修改[general]节点下如下配置:

[general]
anon-access = none      #控制非鉴权用户访问版本库的权限
auth-access = write     #控制鉴权用户访问版本库的权限
password-db = passwd    #指定用户名口令文件名
authz-db = authz        #指定权限配置文件名
realm = documents       #指定版本库的认证域,即在登录时提示的认证域名称

四.     启动svn服务

  • 启动服务:
 [root@version-server ~]$ svnserve -d -r /var/svn/

(注:关闭命令是pkill svnserve)

  • 检查是否启动成功:
[root@version-server ~]# ps aux | grep svn
root       7388  0.0  0.0 185116  1216 ?        Ss   04:30   0:00 svnserve -d -r /var/svn/
root       7393  0.0  0.0 112708   976 pts/0    S+   04:43   0:00 grep --color=auto svn
  • 查看端口占用(如果系统不认识netstat命令,就yum install net-tools):
[root@version-server ~]$ netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      9550/svnserve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6719/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7111/master
tcp6       0      0 :::22                   :::*                    LISTEN      6719/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      7111/master
  • 设置为开机自启动:

先编写一个启动脚本:

[root@version-server ~]$ vim /etc/init.d/svn

内容为:

#!/bin/bash
function start()
{
svnserve -d -r /var/svn/
}
function stop()
{
pkill svnserve
}
case "$1" in
start)
    start
;; 
stop)
    stop
;; 
restart)
    stop
    start
;;
*)
echo "Usage : start | stop | restart"
exit 1
;;
esac

然后添加权限:

[root@version-server ~]$ chmod +x /etc/init.d/svn

并添加系统服务:

[root@version-server ~]$ systemctl daemon-reload
[root@version-server ~]# chkconfig --level 2345 svn on

现在可以直接用如下命令启动或停止服务:

[root@version-server ~]$ systemctl start svn
[root@version-server ~]$ systemctl stop svn

或直接重启试试了!

五.     用PC客户端测试

  • https://tortoisesvn.net/downloads.html 下载tortoiseSVN客户端,并安装;
  • 启动时输入如下格式的版本库路径(比如版本库不是上面创建的documents,而是之前一次测试失败时所使用的helloworld):

 

 如果出现如下连接失败提示,就检查一下防火墙配置:

 

 

[root@version-server ~]$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: em1
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

没有看到3690端口,那就添加:

[root@version-server ~]$ firewall-cmd --permanent --add-port=3690/tcp
success
[root@version-server ~]$ firewall-cmd --reload
success
  • 此时再连接,就弹出用户名密码界面:

 

输入之前配置的test1/test1pass,打开成功!

另外,如果出现Can‘t open file ‘/var/svn/documents/format‘: Permission denied的错误,那就需要关闭selinux了。

posted @ 2019-01-03 19:36  鸟瞰的鸟  阅读(256)  评论(0编辑  收藏  举报