Php 多服务器更新体系结构

Php 多服务器更新体系结构,php,svn,architecture,yii,amazon-web-services,Php,Svn,Architecture,Yii,Amazon Web Services,我的应用程序正在使用AWS。当前配置为: 负载平衡器-->多个EC2实例(自动缩放)-->都使用SVN sync装载NFS驱动器 每次我们想要更新应用程序时,我们都会登录到NFS服务器(另一个EC2实例),并对应用程序文件夹执行svn更新 我想知道是否有更好的方法(架构)来工作,因为我有时会在SVN更新后获得权限更改,服务器需要一段时间来更新。(考虑将S3安装为驱动器) 我的应用程序是PHP+Yii framwork+和mysql数据库 谢谢你的帮助, Danny您可以使用稍微复杂一点的解决方案

我的应用程序正在使用AWS。当前配置为: 负载平衡器-->多个EC2实例(自动缩放)-->都使用SVN sync装载NFS驱动器

每次我们想要更新应用程序时,我们都会登录到NFS服务器(另一个EC2实例),并对应用程序文件夹执行svn更新

我想知道是否有更好的方法(架构)来工作,因为我有时会在SVN更新后获得权限更改,服务器需要一段时间来更新。(考虑将S3安装为驱动器)

我的应用程序是PHP+Yii framwork+和mysql数据库

谢谢你的帮助,
Danny

您可以使用稍微复杂一点的解决方案:

  • 将所有动态目录(
    protected/runtime/
    assets/
    等)移到SVN目录之外(使用
    SVN:ignore
    )并将它们符号链接到应用程序目录中。不过,这可能需要在Web服务器中进行一些配置更改,以遵循符号链接

    /var/www/myapp/config
    /var/www/myapp/runtime
    /var/www/myapp/assets
    /var/www/myapp/htdocs/protected/config-> ../../config
    /var/www/myapp/htdocs/protected/runtime -> ../../runtime
    /var/www/myapp/htdocs/assets -> ../assets
    
  • 部署时,在
    htdocs.new
    中创建一个新的SVN副本,您可以在其中创建相同的符号链接并修复权限

    /var/www/myapp/htdocs.new/protected/config-> ../../config
    /var/www/myapp/htdocs.new/protected/runtime -> ../../runtime
    /var/www/myapp/htdocs.new/assets -> ../assets
    
  • htdocs
    移动到
    htdocs.old
    htdocs.new
    htdocs
    。您可能还必须
    HUP
    web服务器

  • 这样,您就可以完全避免NFS装载,因为您有时间准备步骤1和步骤2。唯一的挑战是在所有机器上同步步骤3。例如,您可以使用
    at
    在所有计算机上同时安排更新

    作为奖励,如果出现问题,您可以随时撤消部署


    不过,如果必须运行迁移,情况可能会更复杂。如果迁移与您的应用程序不向后兼容,您可能无法避免一些停机时间。

    为什么不从每个EC2实例编写一个脚本“svn up”呢?目前还不清楚您当前的解决方案有什么问题。“权限更改”是什么意思,比如错误?为什么更新需要一段时间,一段时间意味着什么?您是在寻找解决当前问题的解决方案,还是只是寻找替代解决方案?您可以创建一个autostart脚本,该脚本更新存储库,并在每次启动时设置正确的权限,然后监视存储库的更改。我正在寻找替代解决方案,因为我认为依赖1个NFS驱动器有点风险。另外,一旦我更新了svn,出于安全原因,没有人会更新它……如果不深入了解,我的团队中不是每个人都熟悉Linux系统,我想给他们一个更简单的界面。最后-我不确定这是否是一个好的体系结构实践…我只是将其用作临时解决方案。感谢您的回答…事实上,这正是我今天的工作方式(符号链接)。我正在寻找的是在所有服务器(从AMI映像自动缩放)之间创建一个共享资源(驱动器),而不是NFS,这是有风险的(单点故障)。即使有在AWS中备份的选项,我认为还有更好的体系结构。