1. 程式人生 > >CentOS6.8搭建SVN與詳細配置

CentOS6.8搭建SVN與詳細配置

版本資訊

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,即可獲取原始碼包!