什么是安全发布网站后期构建的最佳方式?

时间:2008-08-20 15:26:29

标签: .net windows deployment iis-6

那么,根据您的经验,最好的方式是什么?在构建自动化工具中是否存在可编写脚本/可触发的安全方法?

编辑:我应该提到这是windows / .net,我将部署到iis6

8 个答案:

答案 0 :(得分:6)

对于某些项目,我使用Capistrano推出生活。它建立在ruby之上,使部署脚本编写超级简单并使用ssh。

在其他项目中,我有一个很小的部署应用程序,它使用bash对一个临时目录进行svn导出,然后将其同步到实时服务器。您可以使rssh使用ssh。

我非常喜欢Capistrano方法,即使你的项目不在ruby / rails中。

答案 1 :(得分:4)

这似乎可以通过SFTP轻松完成。对于Windows,请查看PuTTY(psftp和pscp)或WinSCP,对于Unix,请查看rsyncOpenSSH

答案 2 :(得分:1)

制作实时网站目录的副本,使用rsync使用最新版本更新该副本,然后重命名实时和更新目录,以便更新版本现在可用。

在bash中:

#!/bin/bash

set -e
cp -R /var/livesite /var/newversion
rsync user@devserver:/var/readytogolive /var/newversion
mv /var/livesite /var/oldlivesite
mv /var/newversion /var/livesite

中提琴!

编辑:@Ted Percival - 这是一个好主意。我甚至都不知道“set -e”。更新的脚本。编辑:在Ted的建议中再次更新(虽然我认为如果cp命令以某种方式失败,它仍然可以工作,如果cp失败,你可能会有更严重的问题。)

答案 3 :(得分:1)

@Neall,我会在第二行添加set -e,因为如果rsync因任何原因失败,您不希望更换实时网站。如果任何命令失败,set -e会导致脚本退出。

编辑:set -e应该是脚本中的第一件事,就在#!/bin/bash之后。

答案 4 :(得分:1)

我将推荐Capistrano,但如果你正在寻找基于GUI的解决方案,你可以尝试Webistrano前端。基于ruby的清洁,基于ssh,理智的部署和回滚语义以及简单的脚本和可扩展性。

答案 5 :(得分:0)

您总是可以编写一个小型客户端/服务器应用程序,它在源代码加密,推送文件,然后在目标位置解密。这是一些工作,但可能是一个微不足道的数额。只要您的自动化工具支持在文件系统中执行某些操作(我认为都可以),它就是可编写脚本的。

唯一的缺点是,如果您没有更多的工作,您可能无法在集成环境中获得有意义的错误消息(尽管取决于您的设置,这可能就像向stdout发送错误消息一样简单)。

答案 6 :(得分:0)

嗯,我们在这里使用暂存“服务器”进行实时环境测试(实际上,它是生产服务器上的apache虚拟主机)和araxis merge(一个非常智能的逐行文件)比较工具)同步开发和分期。

一旦经过测试,只需;替换生产webroot上的文件:)

/ MP

答案 7 :(得分:0)

在我做过的自由职业中,我们建立了三个单独的环境。

  • 使用CruiseControl运行的Dev服务器继续构建。任何签到都会触发构建。 QA测试在这里完成。
  • 测试服务器,用户验收测试已完成。
  • 生产。

工作流程如下:

  1. 开发人员检查对SourceControl的更改。
  2. CruiseControl构建并将构建部署到Dev。
  3. Dev是QA'ed
  4. 传递QA后,会运行robocopy脚本,将Dev build部署到Test。
  5. 测试是UAT'ed
  6. 测试通过后,会运行一个robocopy脚本,将Test部署到PRD。