利用subversion,usvn,rsync,cwrsyn,管理Windows Server IIS 站點文件的更新(3)

SVN服務器上


創建完項目後,可以在

usr/local/ data/www/svn/svn/下看到目錄www_skybug_com目錄,此時,該項目是個空項目。在svn客戶端將站點文件提交,提交地址

http://svnserverIP/svn/www_skybug_com/trunk/

提交完站點文件後,

mkdir /usr/local/ data/www_skybug_com
chown apache:apache / /usr/local/ data/www_skybug_com
chmod 0755 /usr/local/ data/www_skybug_com
cd /usr/local/ data/www_skybug_com
svn checkout http://svnserverip/www_skybug_com/trunk/ --usernmae skybug --password ****** --no-auth-cache

測試檢出正常。

Windows server 服務器上安裝cwRsyncServer

下載地址:

https://www.itefix.no/i2/content/cwrsync-free-edition

默認安裝後,進入

C:\ICW\etc下,編輯fstab文件

在最後一行添加

e:/webroot/www.skybug.com/  /www.skybug.com/  ntfs override,binary,noacl 0 0

可以理解這一行爲e:/webroot/www.skybug.com掛載到/www.skybug.com/  具體參照cygwin文檔http://cygwin.com/cygwin-ug-net/using.html


如果沒有這個sync傳過來的目錄文件會都沒有權限。

編輯C:\ICW\rsyncd.conf

use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
uid=0
gid=0
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[www_skybug_com]
#port= 878
path = /www.skybug.com
read only = false
transfer logging = yes
use chroot=no
list = yes
hosts allow =192.168.x.y 192.168.x.z
auth users=skybug
secrets file = /cygdrive/c/icw/passwd

編輯c:\icw\passwd文件(沒這個文件自己創建一個)

內容爲

skybug:*****(密碼)

重啓rsync服務。

SVN服務器上

編輯鉤子程序,讓客戶端提交後自動把站點文件checkupdate /usr/local/data/www.skybug.com/目錄下,然後rsync提交到windows服務器上


#!/bin/sh
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
SVN=/usr/bin/svn
RSYNCPASSWD=/usr/local/ data /rsyncpasswd/password
WEBDIR=/usr/local/ data /www.skybug.com/
RSYNC=/usr/bin/rsync
LOG=/var/log/httpd/snvcom.log
WEBIP="192.168.x.y"
export LANG=en_US.UTF-8
# 自動update 站點文件到 svn服務器的檢出目錄中
$SVN update $WEB --username skybug --password ****** --no-auth-cache
#如果上述檢出動作執行成功,則:
if [ $? == 0 ]
then
    echo ""     >> $LOG
    echo `date` >> $LOG
    echo "##############################" >> $LOG
    chown -R apache:apache $WEBDIR
    chmod -R 0755 $WEBDIR
    $RSYNC -vzrztopg   --exclude-from=$WEBDIR/exclude.list $WEBDIR skybug@$WEBIP::www_skybug_com --password-file=$RSYNCPASSWD >> $LOG
fi
echo "$1 ,$2,OK" >>$LOG
chown apache:apache . /post-commit

如果需要同步多個WEB服務器,把WEBIP做成數組,然後再循環執行$RSYNC斷的命令既可

其中--exclude-from=$WEB/exclude.list是指哪些目錄文件不同步。按照實驗環境該文件內容爲

.svn

/exclude.list

如果站點上有用戶上傳的文件,顯然用戶上傳的目錄也應該在該列表中。


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