将文件上传至Amazon AWS

将文件上传至Amazon AWS

我是 Amazon AWS 的新手,对网络托管也不是很熟悉。我以前使用 Bluehost 进行网络托管,但我的公司正在转向 AWS。我想知道上传 php、html 和 css 文件的最佳实践是什么。我们不断添加和调整我们网站上的页面,我需要知道如何将其融入 AWS 的工作方式。

以前我们只是使用 FTP 客户端来更改服务器上的文件。现在我使用 Elastic Beanstalk 来设置我们的堆栈,并弄清楚了如何使用 FTP 程序通过 SFTP 将文件上传到 EC2 卷。但是,当启动新实例时,它不包含最新的更改。

我知道使用 Elastic Beanstalk 我可以上传新版本,但我真的不想压缩、上传和部署所有文件的新版本,即使我只做了一个小小的改动。

我们托管的不是静态网站。我们大量使用 MySQL 数据库来生成和更改页面。

有没有更好的选择?理想情况下,我会有一个地方保存我的 php 等文件,任何正在运行的实例都会从那里获取文件。

非常感谢任何帮助、指导和教程。谢谢

答案1

您可以在这里做几件不同的事情。

  1. 首先,使用不同的存储,例如使用 S3,您可以在其中存储所有文件并将最新文件上传到那里。

    S3 更像是一个网络存储。你可以将文件上传到那里,然后从不同的实例访问它们。

  2. 第二种选择是使用 EC2 命令行工具,每当更改文件时创建一个新的 AMI,然后使用新的 AMI 启动新实例。这样,您将始终拥有最新的数据。

    因此,当在 ElasticBeanStalk 中启动新实例时,它会使用默认 AMI,但您可以创建新 AMI 并配置使用新 AMI。因此,您可以编写脚本,在完成更改后立即创建新 AMI,然后删除旧 AMI 并使用此 AMI 启动新实例。

  3. 第三个选择是,正如 ceejayoz 所说,您可以使用 EC2 实例而不是 ElasticBeanStalk,并根据您的需要对其进行自定义。

我通常更喜欢第三个选项,因为我想自己定制东西,并希望控制整个系统、软件等。但这只是我个人的想法。您可以选择上述任何选项。

答案2

通常,最佳做法是在实例中使用可执行文件(例如 PHP) - 静态文件最好在内容分发网络上提供,以实现最大速度和全局镜像优势,在这种情况下,对于亚马逊的亚马逊简单存储服务(Amazon S3)而言。

在 Amazon 的 CDN 网络上,您可以在您创建的每个容器内设置 TTL。TTL 基本上是一种奇特的缓存,它会在检查文件是否已更新之前将内容全局缓存 X 分钟。

对于图像来说,它不是定期的,您需要将其设置为较低的过期时间,因此您可以将 TTL 设置为 2 周。虽然您的网站每天都会对 CSS 文件进行主动更改,但您可以在 CSS 容器上将 TTL 设置为 5 分钟。

CDN 非常适合所有不需要服务器端执行的文件 - 它非常适合更快地提供内容,并且通过限制请求实际上释放了主服务器上的资源。

由于您熟悉 FTP,我强烈建议您查看:

Cyber​​duck http://www.bybe.net/downloads/try-cyberduck.jpg http://cyberduck.ch

Cyber​​duck 在管理各种网络(如 Amazon、Rackspace、Limelight 等等)上的云文件方面表现绝对出色。

此外,如果您需要定期更新服务器上的 PHP 文件,那么您应该查看 GeekRide 建议的 EC2。但不要忽视使用 S3,因为使用它比不使用要好。

相关内容