使用svn钩子自动部署脚本到web目录

原理:在svn服务端编写post-commit钩子,当svn客户端更新svn时,服务端会自动执行钩子脚本,在web目录自动执行svnup命令同步最新文件。


1.搭建svn服务

sudo yum install -y subversion

sudo mkdir -p /data/svn/repositories

sudo svnadmin create /data/jrjsrv/svn/repositories

cd /data/jrjsrv/svn/repositories/conf

sudo vim authz

在尾部加入

[/]
qiang.deng=rw


sudo vim passwd

加入

[users]
qiang.deng=123456

sudo vim svnserve.conf

加入

[general]
anon-access=none
#使授权用户有写权限
auth-access=write
##密码数据库的路径
password-db=passwd
##访问控制文件
authz-db=authz
##认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/data/svn/repositories

启动svn服务:

sudo svnserve -d -r /data/svn/repositories

2.客户端向svn://192.168.1.1/project(服务器地址)导入项目源码

3.在web目录签出文件

sudo svn co svn://192.168.1.1 /data/www/htdocs

4. 编写钩子脚本

sudo vim /data/svn/repositories/hooks/post-commit

#!/bin/sh
REPOS="$1"
REV="$2"

export.UTF-8 #字符集,与服务器一致,可执行locale命令查看
WEB_PATH=/data/www/htdocs/
echo `date`,`whoami`,$REPOS,$REV >> /data/svn/repositories/hooks/svn_hook.log
svn update svn://192.168.1.1/ $WEB_PATH  --username qiang.deng --password 123456 --no-auth-cache
chown -R apache:apache /data/www/htdocs/
chmod -R 755 /data/www/htdocs/


如果要同步多台服务器的web目录,可以使用rsync命令,如下


#!/bin/sh
REPOS="$1"
REV="$2"

export.UTF-8 #字符集,与服务器一致,可执行locale命令查看
WEB_PATH=/data/www/htdocs/
echo `date`,`whoami`,$REPOS,$REV >> /data/svn/repositories/hooks/svn_hook.log
svn update svn://192.168.1.1/ $WEB_PATH  --username qiang.deng --password 123456 --no-auth-cache
cd /data/www/htdocs/
/usr/bin/rsync --timeout=30 -Ravz --exclude-from=/data/svn/repositories/exclude/htdocs.list ./*  192.168.1.2::htdocs
/usr/bin/rsync --timeout=30 -Ravz --exclude-from=/data/svn/repositories/exclude/htdocs.list ./*  192.168.1.3::htdocs

chown -R apache:apache /data/www/htdocs/
chmod -R 755 /data/www/htdocs/


htdocs.list是存放不被同步的文件,包括子目录下出现此类文件都不会被同步

往htdocs.list加入

.svn

这样只要包含.svn的目录都不会被同步


5.体验与感想:

使用这种方式部署代码非常方便,开发调试起来感觉很棒,只用提交客户端即可自动部署。多人同时开发因为在svn控制下也不会出现代码覆盖的情况。但是由于目录下的svn文件容易暴露,以上面的例子,不能把192.168.1.1作为生产环境服务器,但是192.168.1.2、192.168.1.3却不存在这个问题,这时候我们可以把192.168.1.1作为只能内部访问的环境,可以随时在上面排查线上问题。





            

转载于:https://my.oschina.net/u/554660/blog/398721

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值