<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    VIRGIN FOREST OF JAVA
    不要埋頭苦干,要學習,學習,再學習。。。。。
    powered by R.Zeus

    原文:http://www.onlamp.com/pub/a/bsd/2005/05/12/FreeBSD_Basics.html
    作者:Dru Lavigne, author of BSD Hacks
    翻譯:di_feng_ro@hotmail.com

    最近一個客戶聘請了一個網絡開發團隊來幫助他的工作過度的網管。他們要求我安裝一個版本控制系統,這個系統能夠保證團隊中的任何成員避免無意中修改別人的文件,并且能夠給予管理員恢復文件到任何版本的機制。

    我的第一個想法就是Subversion。因為它是我寫BSD Hacks 時和編輯器一起用的版本控制系統。在Ports Collection中搜索一下之后發現,Subversion需要好幾個相關的port。比如,esvn看起來相當適合客戶端,因為它的GUI終端能夠運行在Unix,Mac OS X以及Windows中。對于一個對Unix技術掌握不深的網絡開發團隊而言,當他們需要把數據存貯在FreeBSD服務器上而從非FreeBSD系統讀取時,esvn是非常好的選擇。

    前期準備

    在我的想法中,只允許開發團隊的成員具有權限訪問倉庫是非常重要的。同時,我們把倉庫放在和目前的web服務器分開的操作系統上,當web管理員看到適合的文件時,由他負責把文件從倉庫復制到web服務器上。

    為了實現這個目的,先對已存在的你想放到版本控制系統下的目錄結構做一個備份,然后把它安全發送到倉庫服務器。在我的例子中,我把web服務器上www目錄的數據備份到一臺內網服務器 192.168.2.2上。

    # tar czvf - /usr/local/etc/www/data | ssh dru@192.168.2.2 "cat > www.tar.gz"

    下一步是在倉庫服務器上建立一個svn組,并把已存在的需要訪問倉庫的用戶加到這個組中。比如,當我創建svn組后,我在/etc/group加入這句話把已存在的web管理員用戶加進去:

    # vi /etc/group
    svn:*:3690:webadmin

    然后,新建一個用戶svn。如果有必要,你還需創建所有要訪問倉庫系統的用戶帳號(如果他們還沒有創建)。要保證每個用戶是svn的成員并且有密碼和可用的shell。我使用sysinstall為新的網絡工程師建立用戶帳號。完成以后,我雙擊svn組的成員。大概就象這樣:

    # grep svn /etc/group
    svn:*:3690:webadmin,devel1,devel2

    處理 umask

    在安裝Subversion之前,我們先看看svn用戶的umask。在我的FreeBSD系統上,它是這樣的:

    # su -l svn
    % umask
    022

    在UNIX中,用戶umask值決定了新建目錄或文件的默認權限。這是通過關閉某些權限達到的。如果你記得:

    r = 4
    w = 2
    x = 1

    你應該看得出這個umask沒有對用戶(svn)關閉任何權限(0);它對組(svn)關閉了寫權限(2);它對其他組用戶關閉了寫權限(2)。

    因為svn組的成員必須能夠寫入倉庫,所以把umask中關于組的 2 改為 0。甚至如果你不想讓其他組成員知道這個倉庫的存在,你可以把關于其他組成員的 2 改為 7。

    修改用戶svn的shell配置比較簡單。如果用戶使用 csh:

    % vi ~svn/.cshrc

    ,那么找到umask那行并把它改為 002 或 007。如果你的svn用戶不用csh,修改你的shell配置文件。如果你把你的修改保存在 ~svn/.cshrc (或別的地方),別忘了告訴shell:

    % source ~svn/.cshrc

    再敲一次 umask 命令,以保證你的修改有效。

     

    安裝Subversion ,并讓它擁有正確的umask

    如果你選擇一個002的umask,那么當你從ports collection生成Subversion的時候,你能把一個wrapper編譯進去。如果你選擇一個007的umask或安裝已預編譯好的Subversion,那就要創建一個wrapper腳本來保證你的Subversion二進制文件使用你的umask值。

    使用wrapper編譯,使其umask值為002:

    # cd /usr/ports/devel/subversion
    # make -DWITH_SVNSERVE_WRAPPER install clean

    或者,你可以安裝已預編譯的二進制代碼包

    # pkg_add -r subversion

    注意:無論使用何種方法,安裝之前都應該把這篇文章看完!因為你可以發現一些額外的讓你感興趣的編譯選項!

    如果你不在wrapper中編譯,請移動你的代碼到相應的位置,并創建你自己的wrapper腳本:

    # mv /usr/local/bin/svn /usr/local/bin/svn.orig
    # vi /usr/local/bin/svn
    #!/bin/sh
    #wrapper script to set umask to 007 on subversion binaries
    umask 007
    /usr/local/bin/svn.orig "$@"

    設置你的umask值為002或007,使它和syn用戶的umask值一樣。別忘了設置你的wrapper腳本為可執行的:

    # chmod +x /usr/local/bin/svn


    創建倉庫

    既然環境搭好了,那你就可以創建倉庫了。用svn用戶登錄以保證svn用戶和svn組擁有你在倉庫中創建的文件。在 /usr/home/svn/目錄中,鍵入:

    % svnadmin create repository

    在這個例子中,我的倉庫名為repository。你可以選擇任何對你有幫助的名字。svnadmin create 僅僅創建了Subversion工具所需要的目錄結構。

    % ls -F repository
    README.txt dav/ format locks/
    conf/  db/ hooks/

    注意目錄db是默認生成的。因為Subversion使用數據庫跟蹤倉庫中文件的變化,所以你必須把你的數據放到數據庫中。然后,我把備份文件解壓縮,這樣就有的一些可以放進去的數據。但是要注意這么做的時候,不要把備份文件直接恢復到~svn/repository目錄下。(記得否,它是個數據庫)。相反,我新建了個目錄結構:

    % pwd
    /usr/home/svn

    % mkdir www && cd www
    % mkdir branches tags trunk
    % cd trunk
    % tar xzvf /full/path/to/www.tar.gz .
    % cd

    這樣,svn用戶的主目錄結構像這樣:

    % ls -F ~svn
    repository/ www/


    導入數據

    下一步,應該把~svn/www/的數據導入到Subversion服務器了。為了實現這個目的,可以使用 svn import 命令:

    % svn import www file:///usr/home/svn/repository/www -m "initial import"

    svn import 是svn的許多命令中用戶可以使用的一條。鍵入 svn help 可以看到所有可以使用的命令的名字。如果你在svn和help中插入命令,比如 svn import help,你就可以看到那條命令的語法幫助。在svn import后面的是包含要導入數據的目錄的名字(www)。你的數據不一定非得在相同的目錄下,它僅僅是定義了到數據的完整路徑,但必須保證你的svn組用戶擁有訪問導入數據的權限。注意:如果你已經導入的數據,原始數據就沒有必要留在硬盤上了。在我的例子中,我使用了這條命令:

    rm -Rf www。

    接下來,請注意當我定義倉庫的完整路徑時所使用的語法。Subversion支持多URL模式或者RA(repository access)模塊。檢驗你的Subversion支持哪種模式:

    #svn --version
    svn, version 1.1.3 (r12730)
       compiled Mar 20 2005, 11:04:16

    Copyright (C) 2000-2004 CollabNet.
    Subversion is open source software, see
    http://subversion.tigris.org/
    This product includes software developed by CollabNet (http://www.Collab.Net/).

    The following repository access (RA) modules are available:

    * ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
      - handles 'http' schema
      - handles 'https' schema
    * ra_local : Module for accessing a repository on local disk.
      - handles 'file' schema
    * ra_svn : Module for accessing a repository using the svn network protocol.
      - handles svn schema

    因為我想要在本地路徑訪問倉庫,所以我使用了file:/// 模式。我還可以在這URL后面加上www,因為我想訪問倉庫中名為www的目錄。當然,你能在同一個倉庫中導入多個目錄結構,并且用容易記住的名字命名。

    最后,我使用了 -m 消息開關把注釋:"initial import"加入倉庫日志中。如果我不包括這個參數,svn將使用默認編輯器(vi)打開日志并要求我填入注釋,否則無法進入下一步。

    這是非常關鍵的一個地方。安裝一個版本控制系統的全部原因是為了允許許多用戶修改文件,并且有可能是并發的。每一個用戶都應該負責任的記錄清楚他們對哪些文件作了哪些改動。你的工作就是讓他們明白為什么svn命令總是提示他們加入注釋。

    確定如何訪問倉庫

    恭喜你!你現在擁有了一個可以工作的倉庫!現在到了仔細比較各種不同的URL模式并選出最適合你需求的訪問方法的最好的時間。

    免費電子文檔Version Control with Subversion第六章詳細介紹了各種可能的配置。你可以在編譯FreeBSD port的時候,在 make 命令后添加參數 -DWITH_BOOK,把書安裝上。

    如果你的用戶通過本地或ssh登錄系統,可以使用 file:/// 訪問。因為用戶對于倉庫時本地(local)的,所以這種情況下,系統不會打開一個 TCP/IP端口監聽Subversion連接。然而,它卻要求每個用戶有一個活動的shell帳號并且假定你的用戶可以登錄Unix服務器。和別的shell帳戶一樣,其安全性能由這幾方面決定:用戶密碼的健壯性;倉庫權限以及組成員的正確配置。讓用戶通過ssh登錄系統并不保證session已被加密。

    另一種方案是把Subversion整合進apache服務器。默認情況下,Subversion 的FrssBSD port支持SSL編譯,這意味著你的用戶可以在瀏覽器中使用 https:// 模式訪問倉庫。然而,如果你的apache版本是2.X而不是1.X,要記得在編譯的時候把參數-DWITH_MOD_DAV_SVN 加入到 make后面。

    如果你考慮讓用戶通過瀏覽器訪問,要先仔細閱讀Subversion文檔關于apahce httpd配置部分,然后你要配置不少東西。幸運的是,文檔很完整!

    第三種方案時使用 svnserve 監聽網絡連接。文檔建議采用這種模式,無論是通過inetd還是獨立進程。這
    種模式允許匿名訪問或者已授權的用戶訪問,任何方式都通過CRAM-MD5加密。客戶通過svn:// 訪問svnserve。

    我認為匿名訪問是不恰當的,所以我依照配置選項使用CRAM-MD5。然而,我很快發現我的系統上沒有安裝CRAM-MD5。在Google上搜索關于把CRAM-MD5整合進Subversion服務器的資料,但是沒有找到。我就決定嘗試最后一種方法。

    那就是在“隧道模式(tunnel mode)”中調用svnserve,這種模式可以讓你的用戶除了受你在/etc/ssh/sshd_config中的配置約束外,還可以通過正常的SSH機制認證。比如,我可以使用AllowUsers關鍵字控制哪些用戶授權訪問系統。注意,這種模式使用svn+ssh://訪問倉庫。

    這種方法的好處是我可以使用已有的認證體制而不需要用戶必須是倉庫系統帳戶。然而,這種模式中的網絡連接是沒有加密的;使用SSH只是為了授權。如果你的數據是敏感的,那么你應該讓你的用戶通過ssh登錄后使用file:// 訪問,或者使用https:// 訪問,不過必須正確配置好Apache。

    如果你決定使用svnserve服務器并且在wrapper中編譯,它將生成一個名為svnserve.bin的二進制文件。你必須這么做用戶才能訪問倉庫:

    # cp /usr/local/bin/svnserve.bin /usr/local/bin/svnserve

    因為它是Subversion服務器的一部分。在下一期專欄中,我將介紹如何客戶端如何訪問倉庫。


    Dru Lavigne 是渥太華Marketbridge Technologies 的講師和Open Protocol Resource的維護人員。

    posted on 2005-08-21 16:33 R.Zeus 閱讀(233) 評論(0)  編輯  收藏 所屬分類: SERVER

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 97无码人妻福利免费公开在线视频| 亚洲国产最大av| g0g0人体全免费高清大胆视频| 国产午夜免费福利红片| 色窝窝亚洲av网| 免费人成在线观看网站品爱网日本| 久久精品国产亚洲AV未满十八| 国产色爽免费视频| 国产成人久久精品亚洲小说| 九月婷婷亚洲综合在线| 精品多毛少妇人妻AV免费久久| 国产日韩成人亚洲丁香婷婷| 免费无码又爽又刺激一高潮| 国产成人亚洲精品青草天美| 99精品热线在线观看免费视频| 亚洲男人的天堂在线| 久久精品女人天堂AV免费观看| 亚洲AV无码一区二区三区久久精品 | 综合亚洲伊人午夜网| www在线观看播放免费视频日本| 在线亚洲精品自拍| 亚洲成人免费电影| 亚洲乱码中文字幕在线| 亚洲婷婷国产精品电影人久久 | 8x网站免费入口在线观看| 亚洲国产成+人+综合| 免费真实播放国产乱子伦| 一级毛片试看60分钟免费播放| 亚洲国产成人高清在线观看 | 免费一级毛片一级毛片aa| 一级毛片免费视频网站| 久久精品国产亚洲av麻| 免费无码精品黄AV电影| 人妻仑乱A级毛片免费看| 老司机亚洲精品影院| 国产精品深夜福利免费观看| 国产色无码精品视频免费| 亚洲人成电影网站久久| 国产亚洲精品国看不卡| 91在线视频免费看| baoyu116.永久免费视频|