CentOS7 下搭建svn服務器

1、yum安裝subversion
    1. 安裝apache

subversion yum install subversion


    2. 查看安裝版本,檢查安裝是否成功bash

svnserve --version


    3. 查看安裝位置  服務器

rpm -ql subversion

2、建立版本庫
        1. 建立用於存放版本庫的目錄less

mkdir -p /www/sdb1/subversion

        2. 建立svn版本庫tcp

svnadmin create /www/sdb1/subversion

        3. 建立完後,版本庫目錄下會生成一些文件,進入conf目錄下ide

            conf目錄中authz文件是權限控制文件;svn

            conf目錄中passwd是賬號密碼文件;ui

            conf目錄中svnserve.conf是SVN服務配置文件this

                

  4. 修改passwd文件,加入用戶,格式就是「用戶名=密碼」,如:  admin = 123日誌

  5. 修改authz文件,加入用戶權限:

    [/] 

    admin = rw

   這就表示admin用戶對版本庫根目錄有讀寫權限(即最高權限了),權限配置方式在authz文件註釋中有詳細說明

  6. svnserve.conf裏面經常使用的配置有設置匿名用戶(默承認讀)、受權用戶(默認讀寫)的讀寫權限,以及指定帳號文件(默認passwd)、權限文件(默認authz)的路徑等

        

### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository.  (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)

### Visit http://subversion.apache.org/ for more information.

[general]
### The anon-access and auth-access options control access to the
### repository for unauthenticated (a.k.a. anonymous) users and
### authenticated users, respectively.
### Valid values are "write", "read", and "none".
### Setting the value to "none" prohibits both reading and writing;
### "read" allows read-only access, and "write" allows complete 
### read/write access to the repository.
### The sample settings below are the defaults and specify that anonymous
### users have read-only access to the repository, while authenticated
### users have read and write access to the repository.
# 匿名用戶權限(none:拒絕, write:讀寫, read:只讀權限)
anon-access = none
# 鑑權用戶訪問
auth-access = write
### The password-db option controls the location of the password
### database file.  Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
# 用戶信息配置文件(也能夠是絕對路徑)
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control.  Unless you specify a path
### starting with a /, the file's location is relative to the the
### directory containing this file.  If you don't specify an
### authz-db, no path-based access control is done.
### Uncomment the line below to use the default authorization file.
# 權限配置文件
authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa.  The default realm
### is repository's uuid.
# 認證空間名,版本庫所在目錄,配置權限時指定名也是這個
# realm = My First Repository
### The force-username-case option causes svnserve to case-normalize
### usernames before comparing them against the authorization rules in the
### authz-db file configured above.  Valid values are "upper" (to upper-
### case the usernames), "lower" (to lowercase the usernames), and
### "none" (to compare usernames as-is without case conversion, which
### is the default behavior).
# force-username-case = none

[sasl]
### This option specifies whether you want to use the Cyrus SASL
### library for authentication. Default is false.
### This section will be ignored if svnserve is not built with Cyrus
### SASL support; to check, run 'svnserve --version' and look for a line
### reading 'Cyrus SASL authentication is available.'
# use-sasl = true
### These options specify the desired strength of the security layer
### that you want SASL to provide. 0 means no encryption, 1 means
### integrity-checking only, values larger than 1 are correlated
### to the effective key length for encryption (e.g. 128 means 128-bit
### encryption). The values below are the defaults.
# min-encryption = 0
# max-encryption = 256

  7. 啓動svn版本庫 svnserve -d -r  /www/sdb1/subversion

   其中,-r 的做用是設置根目錄路徑,好比這樣設置後在訪問時輸入svn://x.x.x.x/就會直接到個人svn目錄下(固然在svn目錄下是找不到版本庫的)。換句說話,若是啓動版本庫時命令爲svnserve -d -r  /www/sdb1/subversion,則訪問svn://x.x.x.x/就能直接到版本庫內。

3、開啓和關閉服務

svnserve -d -r /www/sdb1/subversion #開啓
killall svnserve #關閉
ps aux | grep svnserve #查看是否運行

4、常見問題
  1. 注意打開端口的訪問權限。svn服務的默認端口爲3690 

        CentOS7 以前版本iptables 防火牆:

CentOS7 以前版本iptables 防火牆
iptables -I INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT #開放端口 
service iptables save #保存 iptables 規則(如不能保存請使用其餘方法保存)

        CentOS7  版本 firewalld 防火牆:

CentOS7  版本 firewalld 防火牆:
添加(--permanent永久生效,沒有此參數重啓後失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent    
從新載入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp

        2. 客戶端svn上傳後,原始文件在服務器的什麼位置
        SVN服務器端不是簡單將上傳的文件一個一個存放起來的;SVN服務器端默認採用的FSFS格式是將每次commit的內容增量方式存放的,每一個增量包存成1個文件,這個增量包中包括了此次commit的所有數據。也就是說你不可能在服務器端存放該版本庫的文件夾下找到你上傳的某個文件。

        SVN服務器版本庫有兩種格式,

            一種爲FSFS,

            一種爲BDB

        把文件上傳到SVN版本庫後,上傳的文件再也不以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中。

        若是是FSFS格式,這些數據存放在版本庫的db目錄中,裏面的revs和revprops分別存放着每次提交的差別數據和日誌等信息 。
        3. 怎把指定文件夾上傳到SVN服務器
        通常來講新建項目是在服務器端操做的,每一個項目做爲一個獨立的版本庫進行管理。固然你能夠能夠把這個項目看成服務器上某個版本庫下面的一個文件夾進行管理,可是會致使這個項目的版本號看起來是不連續的,由於SVN是用版本號標註整個版本庫的狀態。
        你若是肯定想把這個項目當成某個版本庫的一個文件夾進行管理的話,那麼就這麼作:
        首先,用TSVN檢出那個版本庫到本地;而後,將這個項目複製到本地這個版本庫的某個文件夾下面;
最後,用TSVN增長並提交這個文件夾。

        SVN在服務器端的存儲方式和客戶端是不同的,因此在服務器端是看不到源文件的。服務器端有兩種存儲方式FSFS和BDB,目前默認都是FSFS。

        要導入文件有兩種作法:         一、用import指令,將客戶端文件夾導入到服務器端         二、先checkout空庫到客戶端,而後將要導入的文件夾放入客戶端checkout產生的空文件夾,而後執行add將這些文件夾歸入SVN控制,最後執行commit上傳到服務器

相關文章
相關標籤/搜索