版本信息
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项:
- anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、“read"和"none”。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:read
- auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、“read"和"none”。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:write
- password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:passwd
- authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz
- 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
-
该文件由[groups]配置段和若干版本库路径权限段组成:
[groups]配置段格式:<用户组>=<用户列表>
用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号",“分隔,引用用户组时要使用前缀”@"。 -
版本库路径权限段格式:
[<版本库名>:<路径>]如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。
可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:[/tmp] -
版本库路径权限段中配置行格式有如下三种:
<用户名> = <权限>
<用户组> = <权限>
* = <权限>其中,""表示任何用户;权限的取值范围为’’、‘r’和’rw’,’'表示对该版本库路径无任何权限,'r’表示具有只读权限,'rw’表示有读写权限。
注意:每行配置只能配置单个用户或用户组。
Demo:
[groups]
tt = admin,wuxiaoru
[itoo_ner:/trunck]
@tt= rw
\* =
[/branches/basic]
wuxiaoru = rw
\* = r
svn命令介绍
- 将整个svn仓库checkout到本地目录
$ svn checkout svn://192.168.100.68:3690 /mnt/dir1/ --username test --password 123456 - 检出不带有隐藏文件.svn的目录
$ svn export svn://localhost:3690 /mnt/dir2/ --username test --password 123456
目录dir2必须不存在,否则检出时报错 - 提交
$ svn add index.php
$ svn commit -m “”
add只是告诉SVN服务器要添加文件了,commit才是真正上传文件的操作 - 更新
$ 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,即可获取源码包!