文档章节

SVN 使用hooks 自动更新到远程的web目录下

求学ing
 求学ing
发布于 2013/09/24 16:03
字数 1035
阅读 11595
收藏 19

环境: A机器192.168.1.10  作为SVN的服务端     (环境 apache svn ssh)

环境: B机器 192.168.1.20    (环境 nginx php ssh svn 作为客户端)

目的:开发人员上传代码到A机器时, 会自动更新到B机器上nginx代理服务器的web目录,  以便开发人员直接访问.

环境搭建:

A机器apache+svn环境的配置. http://my.oschina.net/denglz/blog/89183

配置好以后svn的基础功能(检出/更新 等)已经可以实现了! 

主要的配置文件有

httpd.conf: apache的配置文件需要添加svn模块.

authz.conf: 版本库的权限控制文件!

passwd.conf: svn用户的密码文件!

B机器nginx + php 环境的配置. 

php可以用yum安装能解析就行, nginx安装很简单.

--------------------------------------------------------------------------------

下面是A机器环境的具体介绍!

A机器apache配置文件httpd.conf中svn模块的内容

<Location /svn>
DAV svn
#SVNListParentPath on
SVNParentPath /data/svn/
SVNListParentPath on
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/passwd.conf      #在这里已经指出了svn用户密码文件的位置
AuthzSVNAccessFile /data/svn/authz.conf  #在这里已经指出限制版本库权限文件的位置
Require valid-user
</Location>

注意!!! 运行apache的用户是www.

A机器上版本库的位置

[root@A /]# ls /data/svn/    #/data/svn 是版本库的主目录
admin  authz.conf  passwd.conf    

#admin是一个版本库权限是777这样是不安全的但是方便所以..!    authz.conf 和 passwd.conf 也在 /data/svn目录里面! 

A机器用户的添加

/usr/local/apache2/bin/htpasswd -m /data/svn/passwd.conf  deng用户名

[root@A /]# cat /data/svn/passwd.conf
www:$apr1$1g7Hhl1.....加密......        #添加后的用户名和密码在passwd.conf文件里.

A机器版本库的权限设置

[root@ProjectServer /]# cat /data/svn/authz.conf
[admin:/]
deng = rw

环境介绍完毕现在先实现svn在本机上的自动更新吧!

scp /data/svn/admin/hooks/post-commit.tmpl /data/svn/admin/hooks/post-commit   复制一份post-commit    (每当有提交请求的时候都有执行post-commit)

修改vim /data/svn/admin/hooks/post-commit  注销原有的内容!添加如下内容

export LANG=en_US.UTF-8  
SVN=/usr/bin/svn  #必须写绝对路径
STATIC_DIR=/web/root/wwwdeng  #注意权限问题
$SVN update  $STATIC_DIR --username deng --password 123456 --no-auth-cache    #必须加上--no-auth-cache不然会报错!!

还有就是/data/svn/admin/hooks/post-commit 默认使用的shell类型是sh,最好改成bash

这样就实现了自动更新到本地的 /web/root/wwwdeng目录了, 看网上好多文章还修改了/data/svn/admin/conf目录下的三个文件,这是因为我们用的是apache+ svn 用户密码文件和定义库权限的文件在apache配置文件里的svn模块中已经指定了,所以这三个文件我就不需要在修改了, 他们需要修改是因为她们只安装了svn,没有和apache整合在一起!! (apache和svn整合在一起的用户名密码文件中的密码是经过加密的!)


注意系统用户www对post-commit文件要有可执行权限,并且对/web/root/wwwdeng目录要有写的权限!! 注意!!! 运行apache的用户是www,svn通过apache实现检出和提交.


svn更新到远程机器的web目录下. (实现远程更新主要用的是ssh无密码登陆)

首先实现 A机器通过ssh无密码登陆B机器,

参考http://blog.csdn.net/lin_fs/article/details/7309714   写的很详细!  #

实现ssh无密码访问后,修改A机器的post-commit文件   

vim /data/svn/admin/hooks/post-commit   #注释掉所有内容,只添加下面一行内容!

/usr/bin/ssh -l root  192.168.127.183 "/bin/bash /home/www/svnup.sh"    #svnup.sh

#post-commit 文件里面不仅仅可以写svn的更新脚本,写其它的也行!(开始我还以为只能写svn的更新命令呢!! 唉.....),

然后在B机器的/home/www/目录创建svnup.sh可执行文件

vim /home/www/svnup.sh

/usr/bin/svn update /web/root/code   #就这一行内容!

#整体来说是,如果admin版本库有提交请求的时候自动会执行post-commit,post-commit可执行文件通过ssh来让远程机器自动更新svn.


主要注意!  post-commit 的权限,和 svnup.sh的权限!!!!


© 著作权归作者所有

求学ing
粉丝 12
博文 174
码字总数 72348
作品 0
昌平
私信 提问
加载中

评论(3)

chinadiyer
chinadiyer

引用来自“求学ing”的评论

不好意思刚看到...
是的都要安装
确切一点是:B机器只是使用svn客户端的功能.A机器是svn服务器.
3ks
求学ing
求学ing 博主
不好意思刚看到...
是的都要安装
确切一点是:B机器只是使用svn客户端的功能.A机器是svn服务器.
chinadiyer
chinadiyer
hi,是不是两台机器都要安装svn ?
svn提交自动同步到web服务器

同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器...

wddqing
2014/02/20
3.4K
0
Svn结合hook实现自动更新及多Project管理更新

一、hook简单介绍 为了方便管理员控制提交的过程 ,Subversion提供了hook机制。当特定的事件发生时,相应的 hook会被调用,hook其实就相当于特定事件的处理函数。每个hook会得到与它所处理的...

mind-blowing
2016/03/20
3.3K
3
SVN 配置自动更新WEB服务器

SVN 配置自动更新WEB服务器 最近有个小项目,需要用SVN来进行版本控制。 项目组的同僚有8个人,大家都在本地开发,然后提交到服务器——服务器就是其中一台机器。专门安排一个测试员来进行项...

真座山雕
2012/11/09
505
0
Ubuntu下SVN安装和配置

一、SVN安装 1.安装包 1.$ sudo apt-get install subversion 2.创建项目目录 $ sudo mkdir /home/xiaozhe/svn $ cd /home/xiaozhe/svn/ $ sudo mkdir mypro 3.创建svn文件仓库 $ sudo svnad......

charley158
2013/12/03
81
0
liunx 搭建svn服务器并实现钩子自动更新到web项目

1:检查系统有没有安装svn # rpm -qa subversion 2: 如果没有安装采取安装svn # yum install subversion 3: 创建版本库 # mkdir /opt/svn # svnadmin create /opt/svn/project1 4: 配置版本库......

whole_stack_coder
2018/07/31
24
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot Actuator监控应用

微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现异常如何快速定位便成...

zw965
17分钟前
4
0
高性能最终一致性框架Ray之基本概念原理

一、Actor介绍 Actor是一种并发模型,是共享内存并发模型的替代方案。 共享内存模型的缺点: 共享内存模型使用各种各样的锁来解决状态竞争问题,性能低下且让编码变得复杂和容易出错。 共享内...

程序员修BUG
18分钟前
4
0
如何去掉子集合功能中的按钮?

解决方案: 1、找到子集合字段 2、打开字段详细信息,在辅助配置里面进行配置 加入JEPaaS技术交流群,了解更多

JEPaaS云平台
19分钟前
5
0
创龙TI KeyStone C66x多核定点/浮点DSP TMS320C665x + Xilinx Artix-7 FPGA处理器;

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
21分钟前
4
0
hbuilder打包常用android权限配置

常用android权限配置 - 开启相机权限 - 允许程序通过WiFi或移动基站的方式获取用户错略的经纬度信息 - 允许程序通过GPS芯片接收卫星的定位信息 - 允许程序获取模拟定位信息,一般用于帮助开发...

小草先森
22分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部