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了。