在WDCP一鍵安裝包的基礎上安裝SVN及實現nginx web同步更新

來源:互聯網
上載者:User

  • 安裝

    1.查看是否安裝cvs
    rpm -qa | grep subversion


    2.安裝
    yum install subversion


    3.測試是否安裝成功
    /usr/bin/svnserve --version
    如提示以下內容,說明已安裝成功
    --------------------------------------
    svnserve,版本 1.6.11 (r934486)
       編譯於 Apr 11 2013,17:28:04


    著作權 (C) 2000-2009 CollabNet。
    Subversion 是開放原始碼軟體,請參閱 http://subversion.tigris.org/ 網站。
    此產品包含由 CollabNet(http://www.Collab.Net/) 開發的軟體。


    下列版本庫後端(FS) 模組可用:


    * fs_base : 模組只能操作BDB版本庫。
    * fs_fs : 模組與文字檔(FSFS)版本庫一起工作。


    Cyrus SASL 認證可用。
    --------------------------------------------------------------
    二、配置
    1、建立一個目錄:repos 可用於儲存SVN所有檔案
    mkdir -p /opt/svndata/repos
    注意,這裡的目錄(項目名稱)路徑可以更改,格式如下:
    mkdir -p 目錄路徑(如:mkdir -p /www/svn/project)


    2、建立一個版本倉庫(使用svnadmin create 目錄倉庫路徑與上面建立的目錄要一致)
    svnadmin create /opt/svndata/repos


    3、修改svn版本庫的設定檔
    vi /opt/svndata/repos/conf/svnserve.conf


    按以下格式內容修改,其中realm的值為項目名稱,本例中即為repos。
    [general]
    anon-access = none
    auth-access = write
    password-db = /opt/svndata/project/conf/passwd
    authz-db = /opt/svndata/project/conf/authz
    realm = repos
    注意:對使用者設定檔的修改立即生效,不必重啟svn。


    4、添加使用者
    vi /opt/svndata/repos/conf/passwd
    要添加SVN使用者非常簡單,只需在/opt/svn/project/conf/passwd檔案添加一個形如“username=password”的條目就可以了。
    為了測試,我添加了如下內容:
    [users]
    # harry = harryssecret
    # sally = sallyssecret
    pm = pm_pw
    server_group = server_pw
    client_group = client_pw
    test_group = test_pw


    5、修改使用者存取原則
    vi /opt/svndata/repos/conf/authz
    記錄使用者的存取原則,以下是參考:
    [groups]
    project_p = pm
    project_s = server_group
    project_c = client_group
    project_t = test_group


    [project:/]
    @project_p = rw
    * =


    [project:/server]
    @project_p = rw
    @project_s = rw
    * =


    [project:/client]
    @project_p = rw
    @project_c = rw
    * =


    [project:/doc]
    @project_p = rw
    @project_s = rw
    @project_c = rw
    @project_t = rw
    * =
    以上資訊表示,只有pm有根目錄的讀寫權,server_group能訪問server目錄,client_group能訪問client目錄,所有人都可以訪問doc目錄。
    當然,以上是比較複雜的許可權控制,如果只是測試,可以簡單些。建立一個使用者組,把所有的使用者都放到一個使用者組,如下:
    [groups]
    admin = pm,server_group,client_group,test_group


    [/]
    @admin = rw
    關於許可權的控制,本文不詳情敘述,大家可以去諮詢度娘。


    5、啟動svn服務
    svnserve -d --listen-port 3690 -r /opt/svndata/repos (以root使用者在運行)
    假如有多重專案同時在開發的話,可以通過不同連接埠可以開啟多個SVN服務,使用TortoiseSVN操作時記得加上連接埠號碼。


    6、測試svn伺服器


    進入網站根目錄
    cd /www/web/repos/public_html
    svn co svn://127.0.0.1:3690 /www/web/repos/public_html --username pm --password pm_pw


    會出現以下認證的提示
    -----------------------------------------------------------------------
    注意!  你的密碼,對於認證域:


       <svn://127.0.0.1:3690> repos


    只能明文儲存在磁碟上!  如果可能的話,請考慮配置你的系統,讓 Subversion
    可以儲存加密後的密碼。請參閱文檔以獲得詳細資料。


    你可以通過在“/root/.subversion/servers”中設定選項“store-plaintext-passwords”為“yes”或“no”,
    來避免再次出現此警告。
    -----------------------------------------------------------------------
    儲存未加密的密碼(yes/no)?


    輸入“yes” 斷行符號,因為版本倉庫還沒有添加任何檔案,所以取出版本為0,如下:
    取出版本 0。


    三、配置post-commit,實現自動同步svn版本庫檔案到web目錄


    為了可以在修改完代碼提交到SVN伺服器後,WEB伺服器直接同步處理.需要配置SVN的鉤子,進入hooks目錄,
    cd /opt/svndata/repos/hooks
    ls
    可以看到有一個post-commit.tmpl檔案,這是一個模板檔案,複製一份放在此目錄下,命名為post-commit,並將其使用者組設為www,並設定為可執行:
    cp post-commit.tmpl post-commit
    chown www:www post-commit
    chmod +x post-commit
    這樣就有了訪問www目錄的許可權。
    裡面原有的代碼全部注釋掉.這裡可以執行shell命令,每次commit完成後都會調用此檔案.
    檔案內容參考以下:
    vi post-commit


    #!/bin/sh
    export LANG=zh_CN.UTF-8
    REPOS="$1"
    REV="$2"
    SVN_PATH=/usr/bin/svn
    WEB_PATH=/web/web/repos/public_html
    LOG_PATH=/tmp/svn_update.log
    #/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
    echo "\n\n\n##########開始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH
    echo `whoami`,$REPOS,$REV >> $LOG_PATH
    $SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH
    chown -R www:www $WEB_PATH
    說明:
    1、#!/bin/sh 說明是執行shell命令 /*設定環境變數,如果沒有設定可能會出現update報錯*/
    2、export LANG=zh_CN.UTF-8 是為瞭解決svn post commit 中文亂碼。
    如果你是GBK編碼可能會提示:Error output could not be translated from the native locale to UTF-8
    這是用戶端和伺服器編碼的問題,預設是utf-8,可嘗試設定export LANG=zh_CN.GBK或者export LANG=en_US.UTF-8
    #執行更新操作
    3、svn update –username 你版本庫的使用者名稱 –password 使用者名稱的密碼 svn://你的IP地址:連接埠 /web/web/repos/public_html
    4、chown -R www:www $WEB_PATH 變更檔夾屬主為適合Web Server的
    裡面原有的代碼全部注釋掉.這裡可以執行shell命令,每次commit完成後都會調用此檔案。
 
            本文教程摘自 wdlinux論壇 ,轉載請註明~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.