【问题标题】:AWS Elastic Beanstalk DeploymentAWS Elastic Beanstalk 部署
【发布时间】:2015-09-20 11:30:16
【问题描述】:

我目前在 Elastic Beanstalk 之外运行一个 EC2 实例,其中包括一堆 PHP 文件/文件夹。我希望这个应用程序位于 Elastic Beanstalk 中,因此我创建了一个新的 Elastic Beanstalk 环境,该环境会自动启动一个新的 EC2 实例。

1) 我是否必须将所有 PHP 文件/文件夹保存在一个 zip 文件中并上传和部署?

2) 如果我更改文件,我是否必须重新压缩并上传(例如,没有 FTP)? (这会很耗时,因为我有 500MB 的图像)。

3) 我是否应该仅在我的应用程序完成时才使用 Elastic Beanstalk,并继续在其外部使用 EC2 实例以方便 FTP 和更改?

【问题讨论】:

    标签: php amazon-web-services amazon-ec2 amazon-elastic-beanstalk


    【解决方案1】:

    1) 我是否必须将所有 PHP 文件/文件夹保存在一个 zip 文件中并上传和部署?

    是的。但这可以被抽象掉。我推荐使用EB CLI。 CLI 将为您完成压缩、上传和更新,只需键入 eb deploy

    2) 如果我更改文件,我是否必须重新压缩并上传(例如,没有 FTP)? (这会很耗时,因为我有 500MB 的图像)。

    目前弹性豆茎仅支持全拉链。因此,您每次都必须上传整个内容。 EB CLI 将使用多个线程上传您的 zip,除非您的网络连接速度较慢,否则不会花费很长时间。 话虽如此,我强烈建议您将所有图像和资产放在 s3 和 cloudfront 中,然后使用 Ajax 将它们加载到您的应用程序中。这将为您做两件事。

    1. 您的应用程序版本(.zip 文件)将相当小,因此部署将快速而轻松。
    2. 为您的最终用户加载图像的速度要快得多

    另外,值得注意的是,应用程序版本的最大允许大小为 512M,因此如果添加任何图像,您很快将无法部署。

    3) 我是否应该仅在我的应用程序完成时才使用 Elastic Beanstalk,并继续在其外部使用 EC2 实例以方便 FTP 和更改?

    您的决定。但是你应该知道,beantalk 有很多围绕开发和推广到产品而构建的特性。 典型的弹性豆茎流程是在本地进行开发。然后,一旦完成一项功能,就将其部署到开发环境中。测试它,确保它有效,然后签入。一旦您的应用处于 prod 状态,您就可以与您的 prod 环境 (eb swap) 进行 cname 交换,以实现零停机时间部署。

    【讨论】:

    • 太棒了!感谢您的详尽解释。对于 2) 我会将所有图像文件夹移动到 S3。对于用户上传,他们是使用docs.aws.amazon.com/aws-sdk-php/guide/latest/service-s3.html 直接上传到 S3 还是使用典型的 PHP 文件上传脚本并传输到 S3?
    • @bloxx 我不确定我是否完全理解你的问题。
    • 好吧,我想通了。直接上传$result = $client->putObject(array( 'Bucket' => $bucket, 'Key' => 'data.txt', 'Body' => 'Hello!' ));谢谢!
    • 我在部署 WordPress 时也遇到了这个问题,上传文件夹中有很多图片。您将如何将这些图像放入 s3 中? forums.aws.amazon.com/thread.jspa?messageID=780687&#780687
    • @DannyCullen 你可能想问一个单独的问题。
    【解决方案2】:

    您有多种方法可以将您的 php 应用程序部署到 Elastic Beanstalk。您可以使用 AWS CLI。 (对于 Java,您也可以将 Eclipse 与 AWS 插件一起使用,我不确定它是否也可以与 php 一起使用,但值得一试。)

    这是一个很好的来源: Develop, Test, and Deploy - Beanstalk

    没有这方面的实际经验,但 .NET 插件能够进行增量部署,因此您有很好的机会使用 PHP。 (因此您不会再次上传所有图片。)

    对于生产,我真的支持 HA Beanstalk 设置,我将它用于 .NET 和 Java 环境。它为您提供了许多不错的功能,因此您无需处理所有操作细节。

    【讨论】:

    猜你喜欢
    • 2020-08-02
    • 2014-12-25
    • 2017-04-11
    • 2015-12-15
    • 2014-05-26
    • 1970-01-01
    • 2015-07-28
    • 2019-11-22
    • 2020-08-14
    相关资源
    最近更新 更多