利用SVN搭建测试服务器

在正规的团队开发流程中,测试服务器测试是必不可少的一个环节,如何简单快捷的部署测试服务器将是本文的重点。本文的实际环境是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服务器负载》:http://www.ccvita.com/390.html

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

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

时间: 2024-11-09 18:28:06

利用SVN搭建测试服务器的相关文章

分享下使用 svn,测试服务器代码自动更新、线上服务器代码手动更新的配置经验

分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2

分享一个生产环境中利用SVN上线代码的脚本

本文讲述的是利用SVN+RSYNC上线代码的生产案例,适用于小型公司及企业,让运维从频繁的上线代码中解脱出来.以下对应的web服务器也适用于Windows服务器及Linux服务器 REPOS="$1" REV="$2" export LANG=zh_CN.UTF-8 export RSYNC_PASSWORD=RSYNC_PASSWORD RSYNC_USER=RSYNC_USER PROJECT_NAME=`basename $REPOS` SVN_DIR=/sv

Apache2+SVN搭建代码版本控制系统

1 安裝Apache2服务器 1.1 安装 #sudo  apt-get install apache2 1.2 重启 #sudo service apache2 restart 1.3 设置字符编码 #sudo gedit etc/apache2/conf.d/charset 找到#AddDefaultCharset UTF-8,将前面的#去掉(使用UTF-8编码). 1.4 确认安装成功 通过浏览器访问http://127.0.0.1 或者 http://localhost/会出现如下提示:

MyEclipse使用技巧(包括使用快捷键,智能提示,颜色配置,svn搭建,优化配置等) (转的)

转自:http://blog.163.com/magicc_love/blog/static/185853662201111101210847/ 1.安装 2.注册 3.配置 window ----> preferences (1)配置 JDK java--->Installed JREs --> Add ---> JRE name ---> JRE home directory ---> <ok> (2)配置字符编码 General --> Work

利用Jersey搭建Rest的Web服务

传统模式下,一般利用servlet+jsp来完成前后台的交互,但是现在随着技术的进步,利用rest总线作为数据访问一种方式成为一种流行.本片博文主要利用Jersey搭建rest服务,并且利用mybatis作为数据库访问方式构建一个从前台到后台交互并且实现数据持久化的一个完整架构. 1,首先构建一个maven web项目,项目结构如下: 其中pom.xml文件中的dependency如下: <dependencies> <!--jersey --> <dependency>

利用Hexo搭建Github的个人主页

背景: 近期在跟圈内朋友谈一件事情: **搭建一个关于DICOM协议的中文社区,以开源书籍的模式,自发翻译DICOM官方最新标准.以DICOM协议为切入点,通过阅读.研究.到最后翻译,更加全面掌握标准,尤其是加深对医疗行业的了解. 随着国内新医改的逐步深入,各行各业的创业者开始涉足医疗行业,无论出于颠覆旧有体制和现行标准,还是出于对DICOM标准了解不足的角度,未来新的医疗大环境下必然需要标准的更新,或新的标准.称之为DICOMX.X也好,称之为XXX也罢.充分研读现有标准,实时关注当下新需求,

ubuntu 16.04利用docker搭建java+tomcat+nginx反向代理/动静分离

ubuntu 16.04利用docker搭建java+tomcat+nginx反向代理 新建两个docker容器 docker run -it --name Tomcat-mysql -v /mnt:/mnt -p 8866:80 -p 33006:3306 ubuntu /bin/bash docker run -itd --name webserver -p 8888:80 -v /mnt/:/mnt/ ubuntu /bin/bash [email protected]:~# docker

linux下svn 搭建

linux 下SVN搭建加自动提交更新到指定目录 一.安装 #yum install subversion    yum安装SVN #mkdir -p /opt/svn/repos    创建svn目录 #svnadmin create /opt/svn/repos  生成SVN配置文件 二.编辑配置文件 #vim /opt/svn/repos/conf/passwd [users]# harry = harryssecret# sally = sallyssecretnxeon = 123用户

利用SVN钩子同步程序注意事项

暂时记下,此文章内容稍后验证. 前言:其实利用SVN实时同步到WEB服务器即时展现出来的文章已经到处都是,但是我在做的时候 还是有不少的小问题,很多文章也没有提出来过,还有同步也是,我还是记录下自己做过的尤其是一些细节,时间一长又会忘掉了. 同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上. 知识点:1.SVN的ho