阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

svn+rsync实时发布程序

85次阅读
没有评论

共计 3920 个字符,预计需要花费 10 分钟才能阅读完成。

思路:svn 服务器钩子触发 rsync 同步脚本,同步 web 服务器上的 rsync 定义的模块。

==========================WEB 服务器(RSYNC)========================
第一步:安装 rsync
yum -y install rsync
第二步:配置
# 默认无该文件
#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
read only=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
tar zxvf subversion-1.7.4.tar.gz
cd subversion-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 && make install
第二步:创建 svn 库、配置好权限
1、创建库
mkdir /data/svndata
/usr/local/svn/bin/svnadmin create /data/svndata/a.test.cn
/usr/local/svn/bin/svnadmin create /data/svndata/b.test.cn
/usr/local/svn/bin/svnadmin create /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
chmod 700 post-commit
[root@CentOS-6 ~]# cat /data/svndata/ a.test.cn/hooks/post-commit
#!/bin/sh
# 下面这个变量实际上是 svn 库的绝对路径,未使用。
#REPOS=”$1″
# 下面这个变量实际上是每次 commit 后的版本,未使用。
#REV=”$2″
export LANG=en_US.UTF-8
/usr/local/svn/bin/svn update –username aaa –password “aaapwd” /data/web/a.test.cn
if [$? -eq 0]
then
 chown -R root.dev /data/web/atest.cn
 /bin/bash /shell/rsync-script/a.test.cn.sh > /dev/null 2>&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 目录中。
(完成)
注:添加库、修改权限、密码等不需要重启服务。

Rsync 的详细介绍 :请点这里
Rsync 的下载地址 :请点这里

推荐阅读:

利用 inotifywait 监控主机文件和目录 http://www.linuxidc.com/Linux/2013-03/81075.htm

利用 inotify+rsync 实现 Linux 文件批量更新 http://www.linuxidc.com/Linux/2012-01/52132.htm

inotify-tools+rsync 实时同步文件安装和配置 http://www.linuxidc.com/Linux/2012-06/63624.htm

rsync 同步完整配置 http://www.linuxidc.com/Linux/2013-06/85781.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计3920字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中