關於SVN+sersync實時同步到遠程服務器的思路

關於SVN實時同步到遠程服務器的方案

公司裏有2臺測試服務器,一 臺裏面是開發的庫文件,另一臺是用來測試的。現在開發的提交了文件之後,每次需要手動的更新到另一臺服務器上,很麻煩,所以有了這個方案,不過還沒測試過 大量文件的時候會不會有什麼問題。估計svn大量文件的時候會卡死,本文只是做一個測試,講的是一個思路,哪位童鞋有更好的思路聯繫我哦。

思路:首先在SVN庫服務器上建立一個目錄,利用svn自帶的post-commit來把提交的文件同步到該目錄,然後利用sersrnc實時同步到遠程的服務器。

環境:SVN服務器:192.168.2.199

           Web測試服務器:192.168.2.117

首先在199上面安裝svn,安裝過程不再描述,在/var/svn/test建立一個test庫,用import把文件上傳到庫裏面,新建一個目錄/datacheckout把該庫遷出到/data目錄

199上面安裝sersync

解壓sersync2.4_32bit_binary.tar.gz

進入到GNU-Linux-x86目錄

修改confxml.xml

修改這3行文件,

<host hostip="localhost" port="8008">表示本機IP和端口

<localpath watch="/data">           要監控本機的目錄,

 <remote ip="192.168.2.117" name="web"/> 要推送的遠程服務器的IP和模塊的名稱

<auth start="true" users="test" passwordfile="/etc/rsync.pas"/>

啓用密碼驗證,指定驗證用戶名和密碼文件的位置

然後創建/etc/rsync.pas配置文件,裏面寫入test用戶的密碼,然後更改該文件的權限爲600

Chmod 600 /etc/rsync.pas

然後在192.168.2.117裏面安裝rsync

rsync-3.0.9.tar.gz

./configure  --prefix=/usr/local/rsync && make && make install

編輯rsync的配置文件,默認位置問/etc/rsyncd.conf

uid=root                   //rsync運行的用戶

gid=root                    //rsync運行的組

max connections=36000        //最大連接數

use chroot=no                 //不啓用chroot

port=873                      //端口

log file=/var/log/rsyncd.log        //日誌文件

pid file=/var/run/rsyncd.pid        //pid文件

lock file=/var/run/rsyncd.lock       //鎖文件

[web]            //模塊的名稱

path = /www/test      //測試服務器網站的路徑

ignore errors = yes     //忽略錯誤

read only = no        //該目錄可讀可寫

auth users = test       //需要的用戶名

secrets file = /etc/rsyncd.secrets   //密碼文件存放的位置

然後創建/etc/rsyncd.secrets密碼文件,裏面寫入用戶名和密碼可以寫入多個用戶

Test:test

更改該文件的權限爲600 chmod 600 /etc/rsyncd.secrets

然後啓動守護進程/usr/local/rsync/bin/rsync –daemon

再在192.168.2.199上面啓動sersync

這個時候199上面的/data目錄和117上面的/www/test目錄已經同步了,在199上面更改/data目錄下面的文件就會同步更新到117上面的/www/test目錄裏面了

現在需要做的就是如何讓開發人員在提交的時候更新到測試服務器

首先在199上面把庫文件遷出到/data目錄下

Svn checkout svn://192.168.2.199/test /data

遷出之後,/data目錄已經有文件了,這個時候去查看117上面的/www/test目錄裏面也是有文件的。

test庫下面有一個hooks文件夾,裏面有svn的鉤子

我們可以藉助這個鉤子來觸發當提交的時候,把文件同步更新到/data目錄下面,然後sersync把該文件同步到遠程服務器上

hooks目錄下面

Cp pre-commit.tmpl post-commit

post-commit這個文件就是當提交之後會執行的動作,編輯該文件

vim post-commit

export LANG=zh_CN.UTF-8         //指定編碼

WEB=/data/                   //定義一個被更新的目錄

SVN=/usr/local/subversion/bin/svn    //定義SVN程序的路徑

$SVN update $WEB --username wugang --password 2011110 //執行svn update命令,後面是指定用戶和密碼

然後給post-commit可執行權限,然後重啓svn

這個時候當svn提交的時候,會通過該腳本同步到本地服務器的/data目錄,然後sersync服務會把/data目錄同步到遠程測試服務器的/www/test目錄下面。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章