安全地发布网站构建后的最佳方法是什么?
-
09-06-2019 - |
题
那么,根据您的经验,最好的方法是什么?是否有一种安全的方法可以在构建自动化工具中编写脚本/触发?
编辑:我应该提到这是 windows/.net,我将部署到 iis6
解决方案
对于我使用的一些项目 卡皮斯特拉诺 推出去生活。它构建在 ruby 之上,使部署脚本编写变得超级简单,并使用 ssh。
在其他项目中,我有一个小型部署应用程序,它使用 bash 将 svn 导出到临时目录,然后将其 rsync 到实时服务器。您可以使用 ssh 进行 rsync。
我非常喜欢 Capistrano 方法,即使您的项目不是在 ruby/rails 中。
其他提示
@Neall,我会添加一个 set -e
在第二行,因为如果以下情况您不希望替换实时站点 rsync
因任何原因失败。 set -e
如果任何命令失败,则导致脚本退出。
编辑:这 set -e
应该是脚本中的第一件事,紧随其后 #!/bin/bash
.
复制您的实时站点目录,使用 同步 要使用最新版本更新该副本,然后重命名实时目录和更新目录,以便更新版本立即生效。
在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 失败,您可能会遇到更严重的问题。)
您始终可以编写一个小型客户端/服务器应用程序,在源处加密,推送文件,然后在目的地解密。这是一点点工作,但可能是微不足道的。只要您的自动化工具支持在文件系统中执行某些操作(我认为都支持),它就可以编写脚本。
唯一的缺点是,您可能无法在集成环境中发生故障时获得有意义的错误消息,而无需您做更多的工作(尽管根据您的设置,这可能就像将错误消息发送到标准输出一样简单)。
嗯,在这里我们使用临时“服务器”在实时环境中进行测试(实际上,它是生产服务器上的 apache 虚拟主机)并且 阿拉西斯合并 (一个真正智能的逐行文件比较工具)来同步开发和登台。
一旦经过测试,就;替换生产 webroot 上的文件:)
/mp
在我做的一份自由职业中,我们建立了三个独立的环境。
- 运行的开发服务器继续使用 CruiseControl 进行构建。任何签入都会触发构建。QA 测试是在这里完成的。
- 测试服务器,用于进行用户验收测试。
- 生产。
工作流程如下:
- 开发人员签入 SourceControl 的更改。
- CruiseControl 构建并将构建部署到 Dev。
- 开发人员已接受质量检查
- 通过 QA 后,将运行 robocopy 脚本,将开发版本部署到测试版本。
- 测试已通过 UAT 进行
- 测试通过后,运行 robocopy 脚本将测试部署到 PRD。