CentOS系统下svn+rsync实时发布程序
时间:2014-03-04 00:05 来源:linux.it.net.cn 作者:IT网
思路:svn服务器钩子触发rsync同步脚本,同步web服务器上的rsync定义的模块。
==========================WEB服务器(RSYNC)========================
第一步:安装rsync
yum -y installrsync
第二步:配置
#默认无该文件
#vim /etc/rsyncd.conf
uid=root
gid=root
use chroot=no
max connections=200
timeout=600
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[a.test.cn]
path=/data/web/a.test.cn/
#exclude=conf/*.php
comment = this ia a.test.cn
ignore errors
readonly=false
list=false
hosts allow=172.31.0.12
hosts deny=*
auth users=test
secrets file=/shell/rsync-passwd/rsync.passwd
注:use chroot=no 时,同步后DES的文件主或组如果有,则显示名,即使ID不一样;
use chroot=yes时,如果两台机器同名的ID不同,则服务端只会显示SRC的ID,造成权限问题。
编辑rsync的用户认证配置文件
# cat /shell/rsync-passwd/rsync.passwd
test:test123
#chmod 600 /shell/rsync-passwd/rsync.passwd
第三步:启动rsync服务
/usr/bin/rsync--daemon
echo"/usr/bin/rsync --daemon">>/etc/rc.local
第四步:客户端测试(172.31.0.12上)
# cat /shell/rsync-passwd/rsync.passwd
test:test123
#chmod 600 /shell/rsync-passwd/rsync.passwd
rsync-vzrtopgl --progress --delete --exclude=.svn /data/web/a.test.cn/test@172.31.0.15::a.test.cn --password-file=/shell/rsync-passwd/rsync.passwd
或
RSYNC_PASSWORD=test123 rsync-vzrtopgl --progress --delete --exclude=.svn/data/web/a.test.cn/ test@172.31.0.15::a.test.cn
(完成)
注:修改配置文件和用户密码不需要重启服务
===========================SVN服务器==============================
第一步:安装subversion
tarzxvf subversion-1.7.4.tar.gz
cdsubversion-1.7.4
#下载apr,并执行buildconf生成需要的文件
svn co http://svn.apache.org/repos/asf/apr/apr/branches/1.3.x apr
./apr/buildconf
#下载apr-util,并执行buildconf生成需要的文件
svn co http://svn.apache.org/repos/asf/apr/apr-util/branches/1.3.x apr-util
./apr-util/buildconf
#下载sqlite3.c,解压后放到subversion解压的源码目录中,只确保有sqlite3.c即可。
# ll sqlite-amalgamation/
total 5004
-rw-r--r-- 1 root root 5121966 Dec 17 11:34 sqlite3.c
./configure--prefix=/usr/local/svn
make&& makeinstall
第二步:创建svn库、配置好权限
1、创建库
mkdir/data/svndata
/usr/local/svn/bin/svnadmincreate /data/svndata/a.test.cn
/usr/local/svn/bin/svnadmincreate /data/svndata/b.test.cn
/usr/local/svn/bin/svnadmincreate /data/svndata/c.test.cn
2、配置密码和权限文件
mkdir/data/svnpasswd
#cat /data/svnpasswd/passwd
[users]
aaa=aaapwd
bbb=bbbpwd
ccc=cccpwd
xxx=xxxpwd
yyy=yyypwd
zzz=zzzpwd
#cat /data/svnpasswd/authz
[groups]
a.test.cn = aaa
b.test.cn = bbb
c.test.cn = ccc
other = xxx,yyy,zzz
[a.test.cn:/]
@a.test.cn=r w
xxx=r
*=
[b.test.cn:/]
@b.test.cn=rw
yyy=r
*=
[c.test.cn:/]
@c.test.cn=rw
@other=r
*=
3、配置所有svn库使用上面的用户和权限来集中管理权限。
修改所有库中的conf/svnserve.conf为以下内容
[general]
anon-access = none
auth-access = write
password-db = /data/svnpasswd/passwd
authz-db = /data/svnpasswd/authz
# realm = My First Repository
# force-username-case = none
[sasl]
# use-sasl = true
# min-encryption = 0
# max-encryption = 256
4、启动服务
/usr/local/svn/bin/svnserve-d --listen-port 4399 -r /data/svndata
echo"/usr/local/svn/bin/svnserve -d --listen-port 4399 -r /data/svndata">>/etc/rc.local
5、配置钩子文件(第个库根据需要单独的配置)原理:每次commit,触发post-commit脚本。确保有执行权限。
拷贝模板文件为post-commit
chmod700 post-commit
[root@centos-6 ~]# cat /data/svndata/ a.test.cn/hooks/post-commit
#!/bin/sh
#下面这个变量实际上是svn库的绝对路径,未使用。
#REPOS="$1"
#下面这个变量实际上是每次commit后的版本,未使用。
#REV="$2"
exportLANG=en_US.UTF-8
/usr/local/svn/bin/svnupdate --username aaa --password "aaapwd"/data/web/a.test.cn
if[ $? -eq0 ]
then
chown-R root.dev /data/web/atest.cn
/bin/bash/shell/rsync-script/a.test.cn.sh > /dev/null2>&1
fi
6、配置钩子文件触发的脚本
[root@centos-6 ~]# cat /shell/rsync-script/a.test.cn.sh
#/bin/bash
IP="172.31.0.15"
Auth_module="a.test.cn"
Localdir="/data/web/a.test.cn/"
Auth_user="test"
Passwd_file="/shell/rsync-passwd/rsync.passwd"
Exc=" --exclude=.svn"
rsync-vzrtopgl --progress --delete ${Exc} ${Localdir} $Auth_user@${IP}::${Auth_module} --password-file=${Passwd_file}
访问rsync密码文件,权限必须为600,root.root
[root@centos-6 ~]# cat /shell/rsync-passwd/rsync.passwd
test123
7、测试
客户端在a.test.cn库中提交文件,查看是否实时同步到rsync服务器定义的web目录中。
(完成)
注:添加库、修改权限、密码等不需要重启服务。
(责任编辑:IT)
思路:svn服务器钩子触发rsync同步脚本,同步web服务器上的rsync定义的模块。
==========================WEB服务器(RSYNC)========================第一步:安装rsyncyum -y installrsync第二步:配置#默认无该文件#vim /etc/rsyncd.confuid=rootgid=rootuse chroot=nomax connections=200timeout=600pid file=/var/run/rsyncd.pidlock file=/var/run/rsync.locklog file=/var/log/rsyncd.log[a.test.cn]path=/data/web/a.test.cn/#exclude=conf/*.phpcomment = this ia a.test.cnignore errorsreadonly=falselist=falsehosts allow=172.31.0.12hosts deny=*auth users=testsecrets file=/shell/rsync-passwd/rsync.passwd注:use chroot=no 时,同步后DES的文件主或组如果有,则显示名,即使ID不一样;use chroot=yes时,如果两台机器同名的ID不同,则服务端只会显示SRC的ID,造成权限问题。编辑rsync的用户认证配置文件# cat /shell/rsync-passwd/rsync.passwdtest:test123#chmod 600 /shell/rsync-passwd/rsync.passwd第三步:启动rsync服务/usr/bin/rsync--daemonecho"/usr/bin/rsync --daemon">>/etc/rc.local第四步:客户端测试(172.31.0.12上)# cat /shell/rsync-passwd/rsync.passwdtest:test123#chmod 600 /shell/rsync-passwd/rsync.passwdrsync-vzrtopgl --progress --delete --exclude=.svn /data/web/a.test.cn/test@172.31.0.15::a.test.cn --password-file=/shell/rsync-passwd/rsync.passwd或RSYNC_PASSWORD=test123 rsync-vzrtopgl --progress --delete --exclude=.svn/data/web/a.test.cn/ test@172.31.0.15::a.test.cn(完成)注:修改配置文件和用户密码不需要重启服务===========================SVN服务器==============================第一步:安装subversiontarzxvf subversion-1.7.4.tar.gzcdsubversion-1.7.4#下载apr,并执行buildconf生成需要的文件svn co http://svn.apache.org/repos/asf/apr/apr/branches/1.3.x apr./apr/buildconf#下载apr-util,并执行buildconf生成需要的文件svn co http://svn.apache.org/repos/asf/apr/apr-util/branches/1.3.x apr-util./apr-util/buildconf#下载sqlite3.c,解压后放到subversion解压的源码目录中,只确保有sqlite3.c即可。# ll sqlite-amalgamation/total 5004-rw-r--r-- 1 root root 5121966 Dec 17 11:34 sqlite3.c./configure--prefix=/usr/local/svnmake&& makeinstall第二步:创建svn库、配置好权限1、创建库mkdir/data/svndata/usr/local/svn/bin/svnadmincreate /data/svndata/a.test.cn/usr/local/svn/bin/svnadmincreate /data/svndata/b.test.cn/usr/local/svn/bin/svnadmincreate /data/svndata/c.test.cn2、配置密码和权限文件mkdir/data/svnpasswd#cat /data/svnpasswd/passwd[users]aaa=aaapwdbbb=bbbpwdccc=cccpwdxxx=xxxpwdyyy=yyypwdzzz=zzzpwd#cat /data/svnpasswd/authz[groups]a.test.cn = aaab.test.cn = bbbc.test.cn = cccother = xxx,yyy,zzz[a.test.cn:/]@a.test.cn=r wxxx=r*=[b.test.cn:/]@b.test.cn=rwyyy=r*=[c.test.cn:/]@c.test.cn=rw@other=r*=3、配置所有svn库使用上面的用户和权限来集中管理权限。修改所有库中的conf/svnserve.conf为以下内容[general]anon-access = noneauth-access = writepassword-db = /data/svnpasswd/passwdauthz-db = /data/svnpasswd/authz# realm = My First Repository# force-username-case = none[sasl]# use-sasl = true# min-encryption = 0# max-encryption = 2564、启动服务/usr/local/svn/bin/svnserve-d --listen-port 4399 -r /data/svndataecho"/usr/local/svn/bin/svnserve -d --listen-port 4399 -r /data/svndata">>/etc/rc.local5、配置钩子文件(第个库根据需要单独的配置)原理:每次commit,触发post-commit脚本。确保有执行权限。拷贝模板文件为post-commitchmod700 post-commit[root@centos-6 ~]# cat /data/svndata/ a.test.cn/hooks/post-commit#!/bin/sh#下面这个变量实际上是svn库的绝对路径,未使用。#REPOS="$1"#下面这个变量实际上是每次commit后的版本,未使用。#REV="$2"exportLANG=en_US.UTF-8/usr/local/svn/bin/svnupdate --username aaa --password "aaapwd"/data/web/a.test.cnif[ $? -eq0 ]thenchown-R root.dev /data/web/atest.cn/bin/bash/shell/rsync-script/a.test.cn.sh > /dev/null2>&1fi6、配置钩子文件触发的脚本[root@centos-6 ~]# cat /shell/rsync-script/a.test.cn.sh#/bin/bashIP="172.31.0.15"Auth_module="a.test.cn"Localdir="/data/web/a.test.cn/"Auth_user="test"Passwd_file="/shell/rsync-passwd/rsync.passwd"Exc=" --exclude=.svn"rsync-vzrtopgl --progress --delete ${Exc} ${Localdir} $Auth_user@${IP}::${Auth_module} --password-file=${Passwd_file}访问rsync密码文件,权限必须为600,root.root[root@centos-6 ~]# cat /shell/rsync-passwd/rsync.passwdtest1237、测试客户端在a.test.cn库中提交文件,查看是否实时同步到rsync服务器定义的web目录中。(完成)注:添加库、修改权限、密码等不需要重启服务。(责任编辑:IT) |