【问题标题】:Deploying a Symfony 2 application in AWS Opsworks在 AWS Opsworks 中部署 Symfony 2 应用程序
【发布时间】:2015-02-09 00:21:26
【问题描述】:

我想将一个 php 应用程序从 git 存储库部署到 AWS Opsworks 服务。 我已经设置了一个应用程序并配置了厨师食谱,以便它运行数据库架构创建、转储资产等......

但我的应用程序在 web 根目录下的子文件夹中有一些用户生成的文件。 git 存储库在该文件夹中有一个 .gitignore 文件,因此当我运行部署命令时存在一个空文件夹。

我的问题是:在该文件夹中生成一些文件(通过使用站点)后,如果我再次运行“部署”命令,“Opsworks”会在“站点名称/版本/xxxx”文件夹下添加一个新版本并从符号链接到它“站点名称/当前”文件夹。

所以它使我以前的“用户生成的东西”无法访问。这种情况的最佳解决方案是什么?

提前感谢您的友好回答。

【问题讨论】:

  • 您必须配置一个共享文件夹,您可以在其中存储用户生成的内容。检查here 以获取有关共享文件夹的相同示例。希望对您有所帮助

标签: symfony amazon-web-services aws-opsworks


【解决方案1】:

您有几个不同的选择。下面按个人喜好排列:

  1. 使用简单存储服务 (S3) 存储文件。
  2. 将弹性块存储 (EBS) 卷添加到您的服务器并将文件保存到该卷中。
  3. 将文件保存到数据库(这是我自己不会做的事情,但可以选择。)。

在使用 OpsWorks 时,请考虑可复制/一次性服务器。

我的意思是,如果您可以创建一台服务器(称为服务器 A),然后切换到同一堆栈中的另一台服务器(称为服务器 B),则使用服务器 A 或服务器 B 的结果应该不会影响您的应用程序的工作方式。

虽然在销毁服务器时将用户生成的文件保存在应用程序的不同版本之间通用的目录中似乎是个好主意(每次部署新的发布目录时都会生成),但运行破坏文件的风险。

使用 S3 的优缺点?

好处:

  1. S3 将为您的文件提供高冗余和可用性。
  2. S3 在您的应用服务器之外,因此如果您的服务器死机或决定将其移至其他区域,您可以继续使用相同的 s3 存储桶。
  3. 应用程序易于扩展。您可以向 S3 添加多个读取和写入文件的应用程序服务器。

缺点:

  1. 您的应用程序中需要额外的代码。您必须使用 AWS API 来存储和检索文件。使用 S3 API 并不难,但可能需要一个额外的步骤才能将您带到您需要的地方。查看"Using an Amazon S3 Bucket" 的演练以供参考。 This 是他们在示例中用于将文件上传到 S3 存储桶的代码。

使用 EBS 的优点和缺点?

好处:

  1. EBS 是一种“外置硬盘”,您可以使用 OpsWorks Resource Manager 轻松将其安装到您的机器上。
  2. 可以备份和恢复 EBS 卷。
  3. 这可能是实施和集成到您的应用程序中最快的选择。

缺点:

  1. 您需要在实例运行前将其分配给实例。
  2. 从服务器 A 移动到服务器 B 可能很耗时(可能需要停机)。
  3. 您不能水平扩展您的应用程序。虽然您可以创建 EBS 的副本并将它们分配给不同的实例,但不会共享 EBS。

使用数据库的缺点?

  1. 只需对“将文件存储在数据库中”进行谷歌搜索
  2. 看看Storing Images in DB - Yea or Nay?

我的首选是使用 S3,但最终这是您的决定。

祝你好运!

编辑:

看看这个存储库opsworks-chef-cookbooks 它包含一些在 OpsWorks 上部署 Symfony2 应用程序的方法。我已经使用它一年多了,效果很好。

【讨论】:

    【解决方案2】:

    使用 Chef 模板,并在 opsworks deploy 生命周期事件的配方中使用它们。

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 2017-08-16
      • 2016-12-12
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 2015-09-22
      • 2018-10-22
      • 2015-10-16
      相关资源
      最近更新 更多