Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350702
  • 博文数量: 34
  • 博客积分: 251
  • 博客等级: 二等列兵
  • 技术积分: 419
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-21 15:50
文章分类

全部博文(34)

文章存档

2017年(5)

2016年(19)

2012年(10)

我的朋友

分类: 系统运维

2016-05-26 15:11:03

参考文档:

1.   

2.   

3.    http://sxlkk.iteye.com/blog/2264819

4.    http://blog.csdn.net/fax5201314/article/details/38020547

svn服务器有2种运行方式:

1.    独立服务器; (例如:svn://x.x.x.x/xxx)

2.    借助apache(例如:)

此文档基于独立服务器部署,不依赖apache

svn存储版本数据也有2种方式:

1.    BDB

2.    FSFS

BDB方式在服务器中断时,有锁住数据的可能,FSFS方式相对安全,本文档部署FSFS模式。

.环境

Server: CentOS-6.7-x86_64

Server IP: 172.18.11.212

Client: Win7 x86_64

.软件获取

Server

Subversion官网:

1.9.3版本下载:

Client

TortoiseSVN官网:

1.9.3 x86_64位置版本下载:

中文语言包(版本必须匹配,否则语言包不生效,客户端设置中找不到):

 

三.安装svn

1.    准备

系统检查

查看服务器系统是否已经安装svn

方式1rpm -qa | grep subversion

方式2ll /usr/bin/svn*          #查看是否有执行文件

方式3svnserve –version     #如果有执行文件,查看版本

依赖包

常规编译包

yum install autoconf libtool gcc gcc-c++ -y

openssloptional

openssl主要在客户机上通过serf使用或在apache服务器使用。

检测:find / -name opensslv.h

如果找不到可以进行yum安装或源码安装()

yum install openssl openssl-devel –y

安装之后找到opensslv.h的所在目录,编译svn时使用–with-openssl=带上路径。

zlib(必需)

zlib主要用作svn的二进制差异算法,算法取决于zlib压缩。

检测:rpm qa | grep zlib*

如果找不到可以进行yum安装或源码安装(,也可通过svn解压后的脚本获得)

yum install zlib zlib-devel –y

编译svn时使用–with-zlib=带上路径(针对非默认路径的源码安装)。

2.    安装svn

解压

将下载的subversion-1.9.3.tar.bz2放置于/usr/local/src目录,

cd /usr/local/src

tar -jxvf subversion-1.9.3.tar.bz2

cd subversion-1.9.3

配套依赖包

subversion-1.9.3目录内有1个可执行脚本get-deps.sh,可以下载版本相关的依赖包

./get-deps.sh

#执行之后subversion-1.9.3文件夹多出了aprapr-utilzlibserf(与客户端通过apache服务访问svn相关)sqlite-amalgamation等文件夹,其中aprapr-utilzlibsubversion必需依赖包,系统中可能已安装,但版本可能不匹配(尤其是apr,apr-util,所以使用此脚本下载的依赖包最佳)。

apr/apr-util

cd apr

./configure --prefix=/usr/local/apr

make

make install

cd ../apr-util

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make

make install

编译安装

cd ..

./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --without-berkeley-db

make

make install

#不使用bdb方式,预编译时可能会有告警

环境变量

svn的命令目录加入环境变量,

vim /etc/profile

 export PATH=/usr/local/svn/bin:$PATH

source /etc/profile

 

或者采用软链接的方式将svn的命令加入到环境变量中,如下,

ln -s /usr/local/svn/bin/* /usr/bin/

验证

svnserve --version

#返回版本信息即成功

3.    部署svn

创建版本库

mkdir -p /svn

#创建仓库根目录

mkdir -p /svn/svntest

svnadmin create /svn/svntest

#创建版本库svntest,如果有多个项目可建多个版本库

版本配置库文件

cd /svn/svntest/conf/

#版本库svntest的配置文件目录

vim svnserve.conf

19 anon-access = none                              #必须设置,否则所有用户不用密码就可以访问

20 auth-access = write

27 password-db = passwd

36 authz-db = authz

47 realm = svntest

#取消general项目下如上几行的注释t

#27/36/47行可以使用如上的相对路径(passwd/authz默认为版本库conf下文件,svntest为版本库svntest根目录),也可以指定绝对路径

#注意:每一行的都要顶头,不能有空格,否则报错

用户配置文件

cd /svn/svntest/conf/

vim passwd

[users]

# harry = harryssecret

# sally = sallyssecret

testuser = testsecret

#设置登录账号与密码

#对用户配置文件的修改立即生效,不需要重启服务

权限配置文件

cd /svn/svntest/conf/

做如下修改,其余默认配置可不变

vim authz

[groups]

admin = testuser

[svntest:/]

@admin = rw

#设置admin组,用户testuser加入admin组,1个用户组可含多个用户,用逗号隔离

#设置admin组对版本库svntest根目录及以下有读写权限,也可以针对单个用户设置,如 testuser = rw

#权限配置文件中的账户必须已在用户配置文件中定义,对权限配置文件的修改立即生效,不需要重启svn服务

authz文件语法

用户组格式

[groups]

= ,

其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔

版本库目录格式

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

其中,方框号内部分可以有多种写法:

[/],表示根目录及以下,根目录在svnserve启动时指定的,[/]表示对仓库根目录有设置权限;

[版本库:/] 表示对版本库xxx设置权限,如上文指定的svntest版本库;

[版本库:/项目] 表示对版本库xxx中的某项目设置权限;

[版本库:/项目/目录] 表示对版本库xxx中的某项目的某目录设置权限;

权限主体可以是用户组、用户或*,用户组在前面加@*表示全部用户;

权限可以是wrwr和空,空表示没有任何权限

启动svn

svnserve -d --listen-port 5690 -r /svn/

# -d表示以daemon方式运行

# --listen-port指定监控端口,不指定时默认是3690端口,通过端口可开启多个svn

# -r指定仓库根目录,注意不是某版本库根目录,根目录的设置与客户端登录地址有莫大的关系,如果设置不当,可能会导致登录的诸多问题

 

ps aux | grep svn

#验证

 

killall svnserve

#停止svn

开机启动svn

vim /etc/rc.d/init.d/svn

#!/bin/bash

# chkconfig: - 85 15

# description: svn server

SVN_HOME=/svn

if [ ! -f "/usr/local/svn/bin/svnserve" ]

then

echo "svnserver startup: cannot start"

exit

fi

case "$1" in

start)

echo "Starting svnserve…"

/usr/local/svn/bin/svnserve -d --listen-port 5690 -r $SVN_HOME

echo "Finished!"

;;

stop)

echo "Stoping svnserve…"

killall svnserve

echo "Finished!"

;;

restart)

$0 stop

$0 start

;;

*)

echo "Usage: svn { start | stop | restart } "

exit 1

esac

#注意修改shell中的相关设置,如变量SVN_HOME,端口等

#请不要删除# chkconfig: - 85 15# description: svn server,否则无法使用chkconfig加入服务,会提示service svn does not support chkconfig

 

chmod 755 /etc/rc.d/init.d/svn

[root@localhost conf]# chkconfig --add svn

[root@localhost conf]# chkconfig --level 35 svn on

#赋予启动脚本权限

 

也可以简单处置,如编辑rc.local文件

vim /etc/rc.d/rc.local

/usr/local/svn/bin/svnserve -d –listen-port 5690 -r /svn

iptables

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5690 -j ACCEPT

/etc/rc.d/init.d/iptables save

#打开相应的端口,请千万保存iptables设置

四.客户端TortoiseSVN

安装TortoiseSVN客户端及语言包,访问路径svn://ip:port

以下是简单的使用教程。

数据导入

选择本地需要导入到服务器端的文件目录,,右键—>TortoiseSVN导入,如下:

输入版本库地址,

 

首次使用需要输入用户名/密码,

数据检出

选择需要检出的目录,鼠标右键,SVN检出 -->导出

 

填写导出版本库URL与需要导出的目录,

更新与提交

如果版本有更新,选择相应的目录,右键-->SVN更新;

如果本地做了更改,需要上传到服务器,选择相应的目录,右键-->SVN提交。

建议每次本地要做更新提交时,先SVN更新到服务器端最新版本,在最新版本上做本地修改再提交。

添加文件/目录

如果在检出目录内新增了文件/目录,需要先添加,再SVN提交到版本库,如下,

 

如添加的文件符号变更如下,然后才能SVN提交到版本库。

删除文件/目录

如果需要删除服务器端文件/目录,不能使用本地删除,对删除的文件/目录,右键-->TortoiseSVN-->删除,回到上级目录,SVN提交

 

阅读(2943) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~