virtualbox的ubuntu虚拟机中搭建SVN服务器

一 安装SVN
    sudo apt-get install subversion                               

二 用自动脚本配置SVN服务器

SVN服务器的分为如下几步:
    1 在ubuntu上创建SVN用户及SVN用户组   
    2 创建SVN根目录及项目目录
    3 创建SVN数据仓库
    4 修改目录权限
    5 导入初始数据(可选)
    6 配置SVN用户权限
这下提供一个BASH脚本,可以完成上面6步工作的前面5步。“配置SVN用户权限”在下小节中将继续说明:

#!/bin/bash
###################################
# V1.0 
# 作用:完成,SVN数据库的初始化工作,已经在Ubuntu上通过了测试
# 使用方法: 可以直接在终端输入 sudo init_svn_server.sh 来运行本脚本,如果
#         你想修改一些关键的设置 如用户名什么的,可以在“关键变量定义”处修改
# 作者: Jackey77681571@126.com
###################################

#关键变量定义
SVN_USER=svnuser
SVN_GROUP=subversion
SVN_ROOT=/home/svn
PROJECT_DIR=svn_manager
IS_IMPORT=FALSE
#soruce file directory
LOCAL_DIR=/home/daydayup/work/project/svnmanager/src/source
RES_STR=`grep $SVN_USER /etc/passwd`

#添加svn管理用户及管理组
if [ -z "$RES_STR" ]; then
    echo "------------Add svn user-------------"
    sudo adduser "$SVN_USER"
    sudo addgroup "$SVN_GROUP"
    sudo addgroup "$SVN_USER" "$SVN_GROUP"
else
    echo "The user:($SVN_USER), is exist."
fi

RES_STR=`grep $SVN_GROUP /etc/group`
if [ -z "$RES_STR" ]; then
    echo "------------Add Group-------------"
    sudo addgroup "$SVN_GROUP"
    sudo addgroup "$SVN_USER" "$SVN_GROUP"
else
    echo "The group:($SVN_GROUP), is exist."
fi

RES_STR=`grep "$SVN_GROUP:.*:$SVN_USER" /etc/group`
if [ -z "$RES_STR" ]; then
    echo "------------Add user to group-------------"
    sudo addgroup "$SVN_USER" "$SVN_GROUP"
else
    echo "The user:($SVN_USER), has been readly in group:($SVN_GROUP)."
fi

#创建项目目录
if [ -d "$SVN_ROOT" ]; then
    echo "SVN Root:($SVN_ROOT), is exist."
else
    echo "------------Create svn root directory!-------------"
    sudo mkdir "$SVN_ROOT"
fi
cd "$SVN_ROOT"

if [ -d "$PROJECT_DIR" ]; then
    echo "Project:($PROJECT_DIR), is exist."
else
    echo "------------Create svn project directory!-------------"
    sudo mkdir "$PROJECT_DIR"
    #创建SVN文件仓库
    echo "create:""$SVN_ROOT/$PROJECT_DIR"
    sudo svnadmin create "$SVN_ROOT/$PROJECT_DIR"

    sudo chown -R "root:$SVN_GROUP" "$PROJECT_DIR"
    sudo chmod -R g+rws "$PROJECT_DIR"

fi

if [ -d "$LOCAL_DIR" ]; then

    if [ "TRUE" == "$IS_IMPORT" ]; then
	#In the way the LOCAL_DIR will not become the work space.
	svn  import -m "init import" "$LOCAL_DIR" "file://$SVN_ROOT/$PROJECT_DIR"
    else
	sudo svn co "file://$SVN_ROOT/$PROJECT_DIR" "$LOCAL_DIR"
    fi
fi

exit 0

三 配置权限文件
    进入SVN项目目录。上一小节的脚本所生的的项目目录就是“/home/svn/svn_manager”.在项目目录下有一个名为“conf”的子目录。对权置的设置工作,主要是修改该子目录下的三个文件:
authz
passwd
svnserve.conf

svnserve.conf 主要用来设置用户信息文件的文件名的及匿名访问的权限。我们打开 svnserve.conf 文件,后,通常首先要去“password-db = passwd” 及 “authz-db = authz”,这两句前面的注释即可(注意把空格也去掉)
password-db = passwd

作用就是把密码信息文件指定为同级目录下的“passwd”文件,这也是默认就会成成的密码文件。
authz-db = authz
这个是指定用信息信息文件,设定方法上面“password-db”差不同。
接着设置 鉴权用户及非鉴权用户的权限,同样也是要去注释:
anon-access = read
auth-access = write
不过我们通常会改成如下这样
anon-access = none
auth-access = write
这样非鉴权用户就无任何的访问权限了。

passwd文件主要用来设置用户名与密码的对应表。具体的设置方法可以参看本文件中已经有的例子。
authz 文件设置用户及用户组的权限,还有操作的目录。具体的设置方法可以参看本文件中已经有的例子。

四 设置virtualbox端口转发



看上图大家应该已经知道设置的要点了,这里只说明一下“子系统IP”就是在虚拟系统中查出的IP。可以在终端中输入“ifconfig”查询。“主机端口”与“子系统端口”并不要求相同,只是我为了方便记忆将其设置为一样罢了。

五 启动SVN服务
    sudo svnserve -d -r [服务的根目录] --listen-port [监听的端口号]
  -d [--daemon]            : 后台模式
  -r [--root] ARG           : 服务的根目录
  --listen-port ARG       : 监听端口
    我是这样启动服务的:


  sudo svnserve -d -r /home/svn/ --listen-port 8036

六 checkout代码
    svn checkout svn://127.0.0.1:8036/svn_manager --username mysvnuser --password mypassword

转载于:https://my.oschina.net/daoren/blog/110719

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值