SVN 使用 hooks 自动更新代码到远程的web目录下
2013-12-18 10:53
453 查看
环境: 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环境的配置. /article/3445714.html配置好以后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的权限!!!!
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的权限!!!!
相关文章推荐
- SVN 使用hooks 自动更新到远程的web目录下
- SVN 使用hooks 自动更新到远程的web目录下
- Linux CentOS SVN 设置钩子hooks/post-commit来同步更新服务器web目录,实现代码自动部署
- svn钩子(hooks)自动部署代码到web目录
- svn提交自动更新服务器端web项目测试站点(使用svn的hooks实现)
- svn钩子(hooks)自动部署代码到web目录
- SVN利用post-commit hooks自动同步代码到生产环境,解决大数量文件更新同步问题
- 通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)
- windows,linux下SVN实现自动更新WEB目录
- 通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
- linux服务器安装svn与自动更新上传文件到web目录
- svn配置钩子自动更新web目录
- 通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
- 使用 SVN Hook 实现服务器端代码自动更新
- 通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
- svn利用hooks自动更新远程服务器上的项目
- 使用 SVN Hook 实现服务器端代码自动更新
- linux下svn使用(三) - svn高级应用 - 自动更新web服务器
- SVN使用hooks自动更新
- windows下svn的搭建以及实现自动更新web目录