部署到多台服务器
我必须将php / html / css / etc代码部署到多个服务器,并且我正在寻找可以轻松,安全地部署到多个服务器的软件选项。
如果可以将其绑定到我的SVN中,也有帮助。
有什么建议?
解决方案
使用ssh设置无密码的公共密钥身份验证将使我们可以非常快速地将文件scp传输到任何服务器(或者由Shell脚本自动执行)。
这是一个简单的教程:http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html
我之前曾使用过Automated Build Studio来完成类似的任务。它为我们提供了很大的灵活性。
我同意-设置svn树,并在ssh上使用rsync将树复制到远程位置。 rsync将使其快速高效,仅复制更改而不是完整文件。
我们想将svn树导出到某个目录,然后从那里rsync到远程主机的目录树。
我还忘了提到,如果我们使用rsync,则可以将rsync设置为使用ssh,因此我们将仅传输已更改的文件,从而节省了时间和带宽。
如果我们在Redhat或者Debian上运行,请考虑将代码打包到RPM或者Debs中。然后构建一个yum或者dpkg存储库,并将软件包放在此处。然后,我们可以使用系统的程序包管理来进行升级/回滚等。甚至可以使用puppet来自动执行该过程。
如果要将其绑定到Subversion中,则可以为每个新版本创建一个分支。当目录中出现新分支时,使用提交脚本来构建RPM。
Capistrano对此非常方便。有几个人(1、2、3)使用它来部署PHP代码,这可以通过快速搜索得到证明。
我将第二个Capistrano。它具有强大而灵活的功能。我们当前的项目使用Capistrano部署到不同的服务器以及多台服务器。我们将两个参数传递给cap命令:
1)要运行的特定于机器的配置选项集的名称
2)要运行的动作的名称
最终看起来像这样:
cap -f deploy.rb live deploy
或者
cap -f deploy.rb dev deploy
当然,默认的用例一次部署到许多计算机上是Capistrano的轻而易举,并且我们不需要在要部署到的计算机上安装Capistrano。总而言之,美味的技术。
我已经在如何使用Subversion部署网站上标记了一个帖子:http://blog.lavablast.com/post/2008/02/I2c-for-one2c-welcome-our-new-revision-control-overlords!.aspx
安装后,我发现capistrano非常易于使用。首先,对于更复杂的环境,配置文件可能会有些混乱,但是很快就变得很有价值。我在生产中部署到14台服务器。我还使用多个环境将其部署到登台服务器。一个怪癖,Ruby中有一个bug破坏了并行部署,但是对于svn导出来说串行并不太坏。