在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
如果站點上有用戶上傳的文件,顯然用戶上傳的目錄也應該在該列表中。