在SVN服务器上
创建完项目后,可以在
usr/local/ data/www/svn/svn/下看到目录www_skybug_com目录,此时,该项目是个空项目。在svn客户端将站点文件提交,提交地址
http://svnserverIP/svn/www_skybug_com/trunk/
提交完站点文件后,
1
2
3
4
5
|
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文件
在最后一行添加
1
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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服务器上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/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
|
1
|
chown
apache:apache .
/post-commit
|
如果需要同步多个WEB服务器,把WEBIP做成数组,然后再循环执行$RSYNC断的命令既可
其中--exclude-from=$WEB/exclude.list是指哪些目录文件不同步。按照实验环境该文件内容为
.svn
/exclude.list
如果站点上有用户上传的文件,显然用户上传的目录也应该在该列表中。
本文转自天山三害 51CTO博客,原文链接:http://blog.51cto.com/skybug/1343623,如需转载请自行联系原作者