CentOS6.8搭建SVN与详细配置

版权声明:转载请标明出处! https://blog.csdn.net/weixin_38642130/article/details/84504544

版本信息

centos6.8
apr-1.6.5.tar.gz
apr-iconv-1.2.2.tar.gz
apr-util-1.6.1.tar.gz
sqlite-autoconf-3250300.tar.gz
zlib-1.2.11.tar.gz
scons-2.5.1.tar.gz
serf-1.3.9.tar.bz2
subversion-1.9.9.tar.gz

获取源码包方法,文章结尾有说明!

环境准备

$ yum install -y gcc gcc-c++
上传源码包到/usr/local/software目录下

安装依赖

安装apr
$ cd /usr/local/software
$ tar -zxvf apr-1.6.5.tar.gz 
$ cd apr-1.6.5
$ ./configure --prefix=/usr/local/apr && make && make install && echo "say ok"
$ cd ..
安装apr-util
$ yum install -y expat-devel
$ tar -zxvf apr-util-1.6.1.tar.gz 
$ cd apr-util-1.6.1
$ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install && echo "say ok"
$ cd ..
安装sqlite
$ tar -zxvf sqlite-autoconf-3250300.tar.gz 
$ cd sqlite-autoconf-3250300
$ ./configure --prefix=/usr/local/sqlite && make && make install && echo "say ok"
$ cd ..
安装zlib
$ tar -zxvf zlib-1.2.11.tar.gz 
$ cd zlib-1.2.11
$ ./configure --prefix=/usr/local/zlib && make && make install && echo "say ok"
$ cd ..
安装scons
$ tar -zxvf scons-2.5.1.tar.gz 
$ cd scons-2.5.1
$ python setup.py install --prefix=/usr/local/scons && echo "say ok"
$ cd ..
安装serf
$ yum -y install openssl openssl-devel
$ tar -jxvf serf-1.3.9.tar.bz2 
$ cd serf-1.3.9
$ /usr/local/scons/bin/scons PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util/ && /usr/local/scons/bin/scons install && echo "say ok"
$ cp /usr/local/serf/lib/libserf-1.so* /usr/local/lib
$ cd ..

安装svn

$ tar -zxvf subversion-1.9.9.tar.gz 
$ cd subversion-1.9.9
$ ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-sqlite=/usr/local/sqlite/ --with-zlib=/usr/local/zlib/ --with-serf=/usr/local/serf/ --enable-mod-activation && make && make install && echo "say ok"

设置环境变量

$ echo "export PATH=/usr/local/svn/bin:$PATH" >> /etc/profile
$ source /etc/profile

查看svn版本

$ svn --version

可能报错:svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or directory
是因为安装的sert库未被找到,解决办法:
$ vi /etc/ld.so.conf.d/sert.conf
/usr/local/serf/lib
$ /sbin/ldconfig -v

创建svn仓库

$ mkdir -p /svn/project
$ svnadmin create /svn/project/
$ cd /svn/project/
$ ll	#目录结构如下

    drwxr-xr-x. 2 root root 4096 Nov 25 10:37 conf
    drwxr-sr-x. 6 root root 4096 Nov 25 10:37 db
    -r--r--r--. 1 root root    2 Nov 25 10:37 format
    drwxr-xr-x. 2 root root 4096 Nov 25 10:37 hooks
    drwxr-xr-x. 2 root root 4096 Nov 25 10:37 locks
    -rw-r--r--. 1 root root  246 Nov 25 10:37 README.txt

svn配置

$ cd /svn/project/conf
$ vi authz	#编辑权限配置文件

	[/]
	test = rw
	
$ vi passwd	#配置svn访问用户

	test = 123456
	
$ vi svnserve.conf

        [general]
        anon-access = none		#禁止匿名访问
        auth-access = write		#授权用户写权限
        password-db = passwd		#用户密码文件
        authz-db = authz		#授权登录文件
        realm = project			#每个svn项目认证名,建议写项目名
        
$ svnserve -d -r /svn/project/ --listen-port 3690		#启动svn服务
这里svnserve是直接指向仓库/svn/project,也可以指向/svn,然后在访问服务器路径时后面加上/project路径即可,如svn://192.168.100.68:3690/project

添加svn到系统服务

$ cd /svn/project
$ vi svnserved3690


#!/bin/bash
#chkconfig: - 85 15
#description: svn server
#centos下可以用如下命令管理svn: service svn start(restart/stop)
SVN_HOME=/svn/project
SVNSERVE=/usr/local/svn/bin/svnserve
if [ ! -f $SVNSERVE ]
then
    echo "svnserver startup: cannot start"
    exit
fi
case "$1" in
    start)
        echo "Starting svnserve..."
        $SVNSERVE -d --listen-port 3690 -r $SVN_HOME
        echo "Successfully!"
        ;;
    stop)
        echo "Stoping svnserve..."
        killall svnserve
        echo "Successfully!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: svn { start | stop | restart } "
        exit 1
esac


$ chmod +x svnserved3690
$ cp svnserved3690 /etc/init.d/
$ chkconfig --add svnserved3690	#添加到系统服务

连接svn

svnserve是SVN自带的轻型服务器,客户端通过使用svn://或svn+ssh://为前缀的URL来访问svnserve服务器,实现远程访问svn版本库。
SVN在服务器端的存储方式和客户端是不一样的,所以在服务器端是看不到源文件的。服务器端有两种存储方式FSFS和BDB,目前默认都是FSFS。
在这里插入图片描述
可能报错:

svn: E170013: Unable to connect to a repository at URL 'svn://192.168.100.68'
svn: E215004: Authentication failed

检查防火墙是否放行,端口是否被监听,进程是不是在运行,如果都不是这些原因,那么极大可能是因为,conf下面的配置文件前面取消注释的时候有空格,去掉空格就行了,这个svn服务搭建对配置空格要求特别严格,有些需要空格,有些必须每空格,不然总是出错。

svnserver配置文件详解

svnserve配置文件通常由3个文本文件组成:
1)svn服务配置文件:在conf目录下,文件名为svnserve.conf
配置项分为以下5项:

  1. anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、“read"和"none”。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:read
  2. auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、“read"和"none”。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:write
  3. password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:passwd
  4. authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz
  5. realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。

Demo:svn服务配置文件的内容如下:

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /var/svn/Health_net_V1.0

说明:设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为conf目录下的passwd,权限配置文件为版本库conf目录下的authz,版本库的认证域为:/var/svn/Health_net_V1.0

2)用户名口令文件:在conf目录下,文件名为passwd
该文件由一个[users]配置段组成,格式:<用户名>=<口令> 注:口令为未经过任何处理的明文。
Demo:

[users]
admin = admin
wuxiaoru = anne

说明:该文件中配置了两个用户admin和wuxiaoru,口令分别为:admin和anne。

3)权限配置文件,在conf目录下,文件名为authz

  1. 该文件由[groups]配置段和若干版本库路径权限段组成:
    [groups]配置段格式:<用户组>=<用户列表>
    用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号",“分隔,引用用户组时要使用前缀”@"。

  2. 版本库路径权限段格式:
    [<版本库名>:<路径>]如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。
    可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:[/tmp]

  3. 版本库路径权限段中配置行格式有如下三种:
    <用户名> = <权限>
    <用户组> = <权限>
    * = <权限>

    其中,""表示任何用户;权限的取值范围为’’、‘r’和’rw’,’'表示对该版本库路径无任何权限,'r’表示具有只读权限,'rw’表示有读写权限。
    注意:每行配置只能配置单个用户或用户组。
    Demo:

[groups]
	tt = admin,wuxiaoru
[itoo_ner:/trunck]
	@tt= rw
	\* =
[/branches/basic]
	wuxiaoru = rw
 	\* = r

svn命令介绍

  1. 将整个svn仓库checkout到本地目录
    $ svn checkout svn://192.168.100.68:3690 /mnt/dir1/ --username test --password 123456
  2. 检出不带有隐藏文件.svn的目录
    $ svn export svn://localhost:3690 /mnt/dir2/ --username test --password 123456
    目录dir2必须不存在,否则检出时报错
  3. 提交
    $ svn add index.php
    $ svn commit -m “”
    add只是告诉SVN服务器要添加文件了,commit才是真正上传文件的操作
  4. 更新
    $ svn update /dri1 --username test --password 123456

参考链接:
1、Centos6.5系统源码方式安装Subversion1.9.5
https://www.cnblogs.com/liuxf88/p/6402670.html
2、centos7源码编译安装Subversion 1.9.5
https://www.cnblogs.com/jkko123/p/6358461.html
3、svnserver配置文件详解
https://blog.csdn.net/wxr15732623310/article/details/70303586
4、TortoiseSVN更换或重置登录用户
https://blog.csdn.net/mad1989/article/details/24998279
5、SVN命令详解
https://www.cnblogs.com/hk315523748/p/6178273.html

源码包下载链接:https://download.csdn.net/download/weixin_38642130/10806894

关注微信公众号“微圈网络”,回复关键字svn,即可获取源码包!

猜你喜欢

转载自blog.csdn.net/weixin_38642130/article/details/84504544