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

简介:

环境: 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的权限!!!!





     本文转自yzy121403725 51CTO博客,原文链接:http://blog.51cto.com/lookingdream/1831614 ,如需转载请自行联系原作者




相关文章
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
164 0
|
4月前
|
存储 安全 C++
C++ LibCurl实现Web隐藏目录扫描
LibCurl是一个开源的免费的多协议数据传输开源库,该框架具备跨平台性,开源免费,并提供了包括HTTP、FTP、SMTP、POP3等协议的功能,使用libcurl可以方便地进行网络数据传输操作,如发送HTTP请求、下载文件、发送电子邮件等。它被广泛应用于各种网络应用开发中,特别是涉及到数据传输的场景。本章将是`《C++ LibCurl 库的使用方法》`的扩展篇,在前一篇文章中我们简单实现了LibCurl对特定页面的访问功能,本文将继续扩展该功能,并以此实现Web隐藏目录扫描功能。
28 0
C++ LibCurl实现Web隐藏目录扫描
|
4月前
|
小程序 Linux Shell
SVN配置服务器自动更新
使用svn做版本控制服务器,其实还是比较方便的,不管是从搭建还是配置上,相对于git,都要简单很多。 Linux如何搭建SVN服务器,请移步《Centos7安装SVN》
51 0
|
7月前
|
存储 Apache 文件存储
Apache On Windows 如何使用阿里云NAS作为WEB站点目录
在Windows操作系统运行Apache WEB服务器的用户如何使用阿里云NAS共享作为WEB 站点目录。
210 0
|
7月前
|
Java 数据库
为什么WEB-INF目录是必须要有的?
为什么WEB-INF目录是必须要有的?
50 0
|
8月前
|
Linux 数据安全/隐私保护 Windows
https、虚拟目录、用户控制搭建web实验
https、虚拟目录、用户控制搭建web实验
|
9月前
|
数据可视化 前端开发 JavaScript
python+Django+Mysql+Echarts数据可视化实战教程(2):Django环境下web目录的配置
python+Django+Mysql+Echarts数据可视化实战教程(2):Django环境下web目录的配置
184 0
|
10月前
|
Linux Windows
svn 钩子 hooks 的 pre-commit 配置递交文件格式,文件大小,备注必填
svn 钩子 hooks 的 pre-commit 配置递交文件格式,文件大小,备注必填
|
20天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
1月前
|
Web App开发 前端开发 开发工具
介绍Web开发的基础知识
介绍Web开发的基础知识
29 7