利用SVN搭建测试服务器
本文最后更新于 5487 天前,其中的信息可能已经有所发展或是发生改变。

在正规的团队开发流程中,测试服务器测试是必不可少的一个环节,如何简单快捷的部署测试服务器将是本文的重点。本文的实际环境是CentOS + PHP + MySQL + SVN,将通过两种不同的途径来实现部署测试服务器的最终目的。

第一种,post-commit
post-commit本身是SVN系列钩子中的一个,是为了更方便对SVN使用中的常见操作进行处理,
建立测试服务器的步骤如下
在hooks目录,创建post-commit文件, 并将其内容定义为类似如下

#!/bin/sh
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

<?php
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服务器负载》:https://kimi.pub/390.html

综合以上两种方式,其目的都是通过将SVN检出,并放置在相应的web目录下来实现的。这两种相互比较而言,post-commit更为简单快捷,无需更多的操作,但是对权限控制力度很小,只要有SVN的提交权限就有部署测试服务器的权限;PHP方式相比麻烦一些,但是对用户权限的控制可以专门定制相应的程序来实现,几乎可以实现任何角色对权限的控制。

在实际的使用过程中,我们目前对应用的APP调试以及合作性质的研发采用第一种方式;如果对SVN需要比较多权限控制的话,推荐采用第二种,可以囊括测试,部署,上线等各个环节。在和新浪的一个合作中,采用这种异地开发方式。

评论

  1. lulu
    15年前
    2009-3-19 20:54:05

    恩~~

  2. 独自流浪
    15年前
    2009-3-20 9:12:37

    最近有这方面需求,水水放出的真是,传说中的及时雨……

  3. 15年前
    2009-3-25 21:15:19

    其实利用post-commit,再结合svnlook和lftp,能写出很强大的脚本的。

  4. 学习者
    14年前
    2009-11-17 17:03:54

    svn 通过post-commit 后 目录的权限问题好像可以自动控制 你把目录的权限设置好 你先 svn checkout检出后 再 svn update 一下 可以随时保持目录权限了
    我做的svn 就是跟web访问的目录同步更新的 权限问题不存在更改

    • 博主
      学习者
      14年前
      2009-12-14 11:33:19

      @学习者, :)

  5. centerqi
    14年前
    2010-6-02 12:51:06

    此思路很不错,我遇到了相同的问题,就是svn与测试服务器的同步
    我想了一下,如果公司很多人同时开发的话,这种方法也存在问题,
    不知像micrsoft和google这样的大公司是怎么解决此类问题的?

    • 博主
      centerqi
      14年前
      2010-6-12 23:32:38

      @centerqi, 他们肯定有更加复杂的解决方案

      • centerqi
        Kimi
        14年前
        2010-6-13 9:04:03

        @kimi, 有更加复杂的解决方案是一定的,这就是一个开发管理和软件过程的问题,现在团队的开发人员多起来了,开发管理做的不好,那效率大大降低了

  6. aweber
    14年前
    2010-7-14 13:00:50

    这样的话,多人开发是不是不好呢。因为很难避免大家修改的地方会不会冲突,而且每次修改本地svn的话都要更新一次,而且会经常碰到冲突的情况。还有你测试的效果往往会因为别人svn的commit而发生改变。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇