virtualbox的ubuntu虛擬機中搭建SVN服務器

一 安裝SVN
    sudo apt-get install subversion                                shell

二 用自動腳本配置SVN服務器 數據庫

SVN服務器的分爲以下幾步:
    1 在ubuntu上建立SVN用戶及SVN用戶組   
    2 建立SVN根目錄及項目目錄
    3 建立SVN數據倉庫
    4 修改目錄權限
    5 導入初始數據(可選)
    6 配置SVN用戶權限
這下提供一個BASH腳本,能夠完成上面6步工做的前面5步。「配置SVN用戶權限」在下小節中將繼續說明: ubuntu

#!/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 bash

做用就是把密碼信息文件指定爲同級目錄下的「passwd」文件,這也是默認就會成成的密碼文件。
authz-db = authz
這個是指定用信息信息文件,設定方法上面「password-db」差不一樣。
接着設置 鑑權用戶及非鑑權用戶的權限,一樣也是要去註釋:
anon-access = read
auth-access = write
不過咱們一般會改爲以下這樣
anon-access = none
auth-access = write
這樣非鑑權用戶就無任何的訪問權限了。 服務器

passwd文件主要用來設置用戶名與密碼的對應表。具體的設置方法能夠參看本文件中已經有的例子。
authz 文件設置用戶及用戶組的權限,還有操做的目錄。具體的設置方法能夠參看本文件中已經有的例子。 svn

四 設置virtualbox端口轉發
測試



看上圖你們應該已經知道設置的要點了,這裏只說明一下「子系統IP」就是在虛擬系統中查出的IP。能夠在終端中輸入「ifconfig」查詢。「主機端口」與「子系統端口」並不要求相同,只是我爲了方便記憶將其設置爲同樣罷了。 spa

五 啓動SVN服務
    sudo svnserve -d -r [服務的根目錄] --listen-port [監聽的端口號]
  -d [--daemon]            : 後臺模式
  -r [--root] ARG           : 服務的根目錄
  --listen-port ARG       : 監聽端口
    我是這樣啓動服務的: code


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

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

相關文章
相關標籤/搜索