歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 在WDCP一鍵安裝包的基礎上安裝SVN及實現nginx web同步更新

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

日期:2017/3/1 15:37:01   编辑:關於Linux
  • 安裝

    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論壇 ,轉載請注明~
Copyright © Linux教程網 All Rights Reserved