安全发布网站发布内容的最佳方法是什么?

时间:2020-03-05 18:41:10  来源:igfitidea点击:

那么,以经验,最好的方法是什么?在构建自动化工具中,是否有一种安全的方法也可以编写脚本/触发?

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

解决方案

回答

对于某些项目,我使用Capistrano进行直播。它建立在ruby之上,使部署脚本编写超级容易,并使用ssh。

在其他项目上,我有一个微型部署应用程序,该应用程序使用bash将svn导出到临时目录,然后将其重新同步到实时服务器。我们可以使rsync使用ssh。

我非常喜欢Capistrano方法,即使项目不是在ruby / rails中也是如此。

回答

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

唯一的缺点是,在集成环境中发生故障时,如果我们不做更多的工作,就可能无法获得有意义的错误消息(尽管取决于设置,这可能像将错误消息发送到stdout一样简单)。

回答

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

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

/ mp

回答

这似乎可以通过SFTP轻松完成。看一下PuTTY(psftp和pscp)或者Windows的WinSCP,或者Unix的rsync和OpenSSH。

回答

制作活动站点目录的副本,使用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失败,我们可能会遇到更严重的问题。)

回答

@Neall,我将在第二行添加一个set -e,因为如果rsync由于某种原因失败,我们不希望替换实时站点。如果脚本中的任何命令失败,则set -e会导致脚本退出。

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

回答

我将推荐Capistrano,尽管我们正在寻找基于GUI的解决方案,但是我们可以尝试Webistrano前端。干净,基于ssh的合理部署和回滚语义,以及通过ruby轻松编写脚本和进行扩展的功能。

回答

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

  • 运行的Dev服务器继续使用CruiseControl进行构建。任何签入都会触发构建。质量检查测试已在此处完成。
  • 在测试服务器上,完成了用户接受度测试。
  • 生产。

工作流程如下:

  • 开发人员签入对SourceControl的更改。
  • CruiseControl构建并将构建部署到Dev。
  • 开发人员经过质量检查
  • 通过质量检查后,将运行一个robocopy脚本,该脚本将Dev构建部署到Test。
  • 测试已完成UAT
  • 测试通过后,将运行一个robocopy脚本,将Test部署到PRD。