利用SVN搭建测试服务器
在正规的团队开发流程中,测试服务器测试是必不可少的一个环节,如何简单快捷的部署测试服务器将是本文的重点。本文的实际环境是CentOS + PHP + MySQL + SVN,将通过两种不同的途径来实现部署测试服务器的最终目的。
第一种,post-commit
post-commit本身是SVN系列钩子中的一个,是为了更方便对SVN使用中的常见操作进行处理,
建立测试服务器的步骤如下
在hooks目录,创建post-commit文件, 并将其内容定义为类似如下
export LANG=en_US.UTF-8
svn checkout --username kimi --password password svn://10.0.0.8/projects/ /wwwroot/projects.ismole.net
chown www:www /wwwroot/projects.ismole.net -Rf
说明:
1. #!/bin/sh 说明是执行shell命令
2. export LANG=en_US.UTF-8是为了解决svn post commit 中文乱码,设置本地化编码。不过SVN默认是UTF-8编码。如果字符集符合并且不设置将会出现错误,而执行不成功,错误标识为svn: Can’t convert string from native encoding to ‘UTF-8′
3. svn checkout –username kimi –password password svn://10.0.0.8/projects/ /wwwroot/projects.ismole.net 执行SVN检出操作
4. chown www:www /wwwroot/projects.ismole.net -Rf 更改文件夹属主为适合Web Server的。
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件。
第二种,PHP检出SVN
header("Cache-Control:no-cache,must-revalidate");
$handle = popen('svn checkout --username kimi --password password svn://10.0.0.8/projects/ /wwwroot/projects.ismole.net', 'r');
$read = stream_get_contents($handle);
echo "<pre>";
printf($read);
echo "< /pre>"
pclose($handle);
?>
其实这种方式只是利用PHP来执行linux命令,不过多描述。参考《PHP监控linux服务器负载》:http://www.ccvita.com/390.html
综合以上两种方式,其目的都是通过将SVN检出,并放置在相应的web目录下来实现的。这两种相互比较而言,post-commit更为简单快捷,无需更多的操作,但是对权限控制力度很小,只要有SVN的提交权限就有部署测试服务器的权限;PHP方式相比麻烦一些,但是对用户权限的控制可以专门定制相应的程序来实现,几乎可以实现任何角色对权限的控制。
在实际的使用过程中,我们目前对应用的APP调试以及合作性质的研发采用第一种方式;如果对SVN需要比较多权限控制的话,推荐采用第二种,可以囊括测试,部署,上线等各个环节。在和新浪的一个合作中,采用这种异地开发方式。
恩~~
最近有这方面需求,水水放出的真是,传说中的及时雨……
其实利用post-commit,再结合svnlook和lftp,能写出很强大的脚本的。
svn 通过post-commit 后 目录的权限问题好像可以自动控制 你把目录的权限设置好 你先 svn checkout检出后 再 svn update 一下 可以随时保持目录权限了
我做的svn 就是跟web访问的目录同步更新的 权限问题不存在更改
@学习者, :)
此思路很不错,我遇到了相同的问题,就是svn与测试服务器的同步
我想了一下,如果公司很多人同时开发的话,这种方法也存在问题,
不知像micrsoft和google这样的大公司是怎么解决此类问题的?
@centerqi, 他们肯定有更加复杂的解决方案
@kimi, 有更加复杂的解决方案是一定的,这就是一个开发管理和软件过程的问题,现在团队的开发人员多起来了,开发管理做的不好,那效率大大降低了
这样的话,多人开发是不是不好呢。因为很难避免大家修改的地方会不会冲突,而且每次修改本地svn的话都要更新一次,而且会经常碰到冲突的情况。还有你测试的效果往往会因为别人svn的commit而发生改变。
回复留言
水水语录
一毛两毛三毛四毛等于一块
最新日志
分类列表
文章归档
关键词
Apache 媳妇 配置 感慨 PHP技术 MySQL Memcache 优化 PHP类 css PHP 迪拜 陈陈 调优 Linux 生活 MySQL优化 FireFox Discuz! Nginx 缓存 性能 Rewrite MooPHP框架 JavaScript WordPress插件 WordPress MySQL效率 风骚 生日 奇矩互动 负载 视频 blog程序 IE6 分析 yy 高负载 ZIP IE7 服务器 正则表达式 常用 防盗链 Cookie
Copyright © 2010 平凡的世界 Themes Design by 平凡的世界. Base on justintadlock.com.
Powered by WordPress. 19 queries. 0.161 seconds.