svn+钩子程序+rsync 自动化同步代码

svn+钩子程序+rsync 自动化同步代码
实验环境如下:
     IP地址            服务器功能             路径                           同步机制
192.168.3.206          svn               svn路径:/data/svn                 rsync客户端
192.168.3.210          代码服务器        代码目录:/data/html               rsync服务端
注:用户提交svn代码后,svn会自动把数据放在/data/rsync目录,然后把/data/rsync数据自动更新到代码服务器/data/html目录
一、svn安装配置
svn服务器操作如下:
1、安装     
yum install -y subversion
svnversion --version #判断是否安装成功
#创建用户以及组
groupadd svn
useradd svn -g svn   -s /sbin/nologin
#有了SVN软件后还需要建立SVN库。
mkdir -p /data/svn
cd  /data/svn
svnadmin create coding
chown -R svn.svn coding
2、配置
#账号密码、分组、控制
2.1先设置authz
vim /data/svn/coding/conf/authz
[groups]
manage = system_svn,liuzhuang
coding = system_svn,test01
[/]
@manage = rw
[coding:/]
@coding = rw
[coding:/test]
@coding = rw

注:这里分成两个组,分别是manage,coding,都有读写权限.
2.2再设置passwd
vim /data/svn/coding/conf/passwd
#添加下面内容
system_svn = PASS             #此用户是svn连接用户
liuzhuang = pass123
test01 = pass123

#格式为:用户名=密码

2.3最后设定svnserve.conf
vim /data/svn/coding/conf/svnserve.conf
#找到下面内容需修改成下面一样就OK.
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = password #密码文件路径
authz-db = authz   # 访问控制文件
realm = coding # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

注:以上配置文件需要放在文本最顶端,前面不能有空格,不然会报错。
3、连接
svnserve -d -r /data/svn
echo " svnserve -d -r /data/svn" >>/etc/rc.local  #开机自动启动svn服务
#修改监听端口如下
svnserve -d -r /data/svn --listen-port 3391
这样同一台服务器可以运行多个svnserver
svn://192.168.3.206:3690/coding  #输入用户和密码就可以成功提交svn代码了.
如果能够正常使用,到这里说明svn服务搭建ok.

二、rsync安装配置
代码服务器操作如下:
mkdir -p /data/html    #建立代码目录
1、下载rsync版本
cd  /root/soft
wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
2、解压rsync
tar  zxvf  rsync-3.0.7.tar.gz  
cd rsync-3.0.7
./configure --prefix=/usr/local/rsync
make &&make install  
useradd coding   -s /sbin/nologin  #建立rsync用户coding
3、安装配置rsync
默认安装完,/etc下没有rsyncd.conf这个文件,不过我们可以新建:
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[svn_coding]                 #同步的模块名字
read only =  false       #false表示可以修改这个模块的内容,yes表示不能修改这个模块的内容
path = /data/html  #同步的模块目录
comment = svn_coding
auth users = coding           #同步的用户
secrets file = /etc/rsync_svn.pas    #同步密码文件
hosts allow = 192.168.3.0/24  #允许访问的rsync ip段
4、设置rsync服务器端同步密钥
vim   /etc/rsync_svn.pas
coding:coding_123   
#(表示用户名:密码)
chmod 600   /etc/rsync_svn.pas   #更改权限。
5、rsync启动守护进程
/usr/local/rsync/bin/rsync --daemon
echo "/usr/local/rsync/bin/rsync --daemon" >>/etc/rc.local   #开机自动启动rsync服务
svn服务器操作如下:
mkdir -p /data/rsync  #建议同步代码目录
mkdir -p /data/rsync_log #建议同步代码log目录
chmod 777 /data/rsync_log
1、密码设置
echo ‘coding_123‘ >/etc/rsync_svn.pas
chmod 600  /etc/rsync_svn.pas
2、从客户端更新文件到服务端
echo ‘hello‘ >/data/rsync/hello.txt    #建立测试文件
yum install -y rsync #安装rsync命令
rsync -avz --progress /data/rsync/  [email protected]::svn_coding --password-file=/etc/rsync_svn.pas

#/data/rsync/表示客户端推送文件的目录,coding表示用户名,192.168.3.210表示服务端ip,svn_coding表示服务端的模块名字
3、进入代码服务器/data/html目录,查看是否有hello.txt文件,有表示rsync安装ok.

三、svn钩子程序配置

svn服务器操作如下:
1、目录建立及准备
cd /data/rsync
svn co svn://192.168.3.206:3690/coding    #第一次需要拉文件到/data/rsync目录,第一个root是系统密码,后面才是连接svn的用户和密码
2、钩子程序编写
vim /data/svn/coding/hooks/post-commit

#!/bin/bash
export LANG=zh_CN.UTF-8
svn=/usr/bin/svn
svn_rsync=/data/rsync/coding/      #同步钩子程序的目录
rsync=/usr/bin/rsync
password_file=/etc/rsync_svn.pas   #密码文件
coding_server1=192.168.3.210::svn_coding   #rsync相关模块参数
log=/data/rsync_log/rsync.log
exclude=/data/rsync_log/exclude.list
date_start=$(date +%s)
for svn_dir in `svnlook dirs-changed /data/svn/coding/`
do
    $svn update --username=system_svn --password=‘PASS‘ $svn_rsync/$svn_dir
done
if [ $? == 0 ]
then
   
 $rsync -vaztpH  --timeout=90 $svn_rsync [email protected]$coding_server1 
--password-file=$password_file --exclude-from=$exclude >> $log
fi
date_end=$(date +%s)
echo $((date_end-date_start)) >>/data/rsync_log/time.log

chmod 777  /data/svn/coding/hooks/post-commit
3、测试
 用户在svn任意提交代码,看能否自动更新到代码服务器。如果看到代码数据已更新表示ok.

总结:这套svn自动更新成功,是参考彪哥写的钩子程序。彪哥是大神哇。我们只能膜拜了。

svn+钩子程序+rsync 自动化同步代码

时间: 2024-11-08 22:50:19

svn+钩子程序+rsync 自动化同步代码的相关文章

centos7配置svn钩子hooks脚本自动同步代码到项目目录

由于项目需要,svn提交后的代码希望再测试服务器上测试,每次提交后还要手动去svn update一次 十分麻烦,配置好svn钩子以后就省去了这些麻烦. 进入svn版本库目录找到hooks目录找到文件post-commit.tmpl 复制出一个命名为post-commit的文件,并修改权限为可执行权限 命令如下: cd /var/data/svndata/myproject/hooks cp post-commit.tmpl post-commit chmod 755 post-commit vi

svn钩子自动化同步代码提交任务

##############################################################第一种方式:svn服务端  也是rsync的客户端web        是rsync的服务端svn服务端执行:[[email protected] ~]#sh yum-svn02.sh[[email protected] ~]#mkdir /var/www/bbs -p[[email protected] ~]#svn checkout http://192.168.13.

使用SVN钩子运行PHP更新服务器代码的注意事项

想通过本地提交代码到SVN服务器,同时同步测试服务器的代码 使用SVN钩子,运行服务器的php文件 代码如下: <?php header("Content-Type: text/html; charset=utf-8"); header("Cache-Control:no-cache,must-revalidate"); $username = '用户名'; $password = '密码'; $target_dir = '路径'; exec("su

在linux服务器centos上使用svn同步代码到项目中

一.需求 1.在多人开发过程中代码的管理以及版本的控制是一个很重要的问题,因为在开发过程中我们可能会同时更改过某个文件或者更改过多个文件, 这会导致我们很容易发生错误.所以我们需要一个方式去管理我们的代码. 二.解决方案 1.使用svn管理代码 2.使用git管理代码 这两种代码管理方式的差异性我看过的这个文章写的很详细http://blog.csdn.net/jackjia2015/article/details/50607408,有兴趣可以看看,这里就不不 谈他们的差异性了,毕竟本文章的是讲

使用svn钩子脚本控制svn库的实时备份

Svn镜像库实时同步实现 一, 配置rsync的同步机制先实现能手动同步 环境:svn源码库 192.168.115.120 Svn镜像库 192.168.115.121 1,在源码库中配置rsync服务 (配置文件默认没有需要手动建立 /etc/rsyncd.cong) 上面 [ UGOR]就是要更新的模块,然后启动服务 rsync –deamo查看服务状态lsof –I 873 注:认证账户格式为 用户:密码,文件权限为 600, (rsync.pass) 2,在镜像库中同步内容执行 rsy

利用SVN钩子同步程序注意事项

暂时记下,此文章内容稍后验证. 前言:其实利用SVN实时同步到WEB服务器即时展现出来的文章已经到处都是,但是我在做的时候 还是有不少的小问题,很多文章也没有提出来过,还有同步也是,我还是记录下自己做过的尤其是一些细节,时间一长又会忘掉了. 同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上. 知识点:1.SVN的ho

rsync+inotify实现代码实时同步

rsync rsync是lunix系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. 优点: 1).可以镜像保存整个目录树和文件系统. 2).可以很容易做到保持原来文件的权限.时间.软硬链接等等. 3).无须特殊权限即可安装. 4).快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件.rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽. 5).安全:可以使用s

svn学习之一(svn独立服务器搭建)svn钩子了解

SVN实战笔记#####################################################xingxing qq:1218761836 qq群:150181442##################################################### SVN实战  目录SVN实战    1一.SVN简介    1二.SVN运行方式    12.1 svn的访问模式3种    1三.SVN数据格式    23.1 svn 档案库数据格式    2四.

rsync数据同步工具指南

一.     rsync简介 remote synchronize,rsync是一款开源的.快速的.多功能的.可实现全量或增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作系统平.官方网站:http://www.samba.org/ftp/rsync/rsync.html 一个rsync相当于scp,cp,rm,而且还优于他们每一个命令 二.     特性 支持拷贝特殊文件如链接文件,设备等. 可以有排除指定文件或目录同步的功能,相当于打包