7

我已经开始制作一个网站并在 Hostgator 上托管,但我将在发布前将其移至亚马逊网络服务。有一个小问题,我之前刚刚将我的文件上传到 Hostgator 的相关位置,并且一切正常。我没有从头开始设置值得生产的服务器设置的经验,我需要知道如何。我确实在 EC2 实例上设置了基本灯堆栈,但是,我一直在读到,当 EC2 实例停止运行时,它会带走所有数据,而我不会发生这种情况。我也读过,当它死时它不会做任何事情,你必须再次启动 apache 服务器,它不是自动的。我需要它是可靠的并且具有独立的数据,这样它就不会在服务器发生故障时崩溃、烧毁和死亡。我已经确定我需要 S3 来处理我的 PDF 等静态内容 s 和图像以及将 RDS 用于我的 MYSQL 数据库。我的域名是在其他地方注册的,所以我相信我也需要使用 53 号路由。我想使用 AWS 有几个原因,首先因为它可以扩展,这非常重要,但不确定这是内置的还是需要自定义. 有人告诉我 EC2 非常安全,最后一个原因是我可以调试我的 php 代码。调试原因是我有一个错误,它只出现在 Hostgator 服务器上,而不是我的本地灯堆栈上,我无法在那里调试它,所以当我移动到 EC2 时我应该能够。首先,因为它可以扩展,这非常重要,但不确定这是内置的还是需要定制的。有人告诉我 EC2 非常安全,最后一个原因是我可以调试我的 php 代码。调试原因是我有一个错误,它只出现在 Hostgator 服务器上,而不是我的本地灯堆栈上,我无法在那里调试它,所以当我移动到 EC2 时我应该能够。首先,因为它可以扩展,这非常重要,但不确定这是内置的还是需要定制的。有人告诉我 EC2 非常安全,最后一个原因是我可以调试我的 php 代码。调试原因是我有一个错误,它只出现在 Hostgator 服务器上,而不是我的本地灯堆栈上,我无法在那里调试它,所以当我移动到 EC2 时我应该能够。

我在网上做了很多环顾四周,我找不到任何关于设置的全面信息。我一直在阅读(你们中的一些人可能不这么认为)。但是,我对信息量感到不知所措,因为讨论一些我不关心的理论或者容易并且不讨论如何使用除了通用安装的 LAMP 堆栈之外的任何东西。 EC2 不使用其他服务。

我已经看过http://bitnami.com/stack/lamp/cloud/amazon但不要认为这是我想要的,因为 EC2 有一个 mysql 数据库,我没有使用 RDS

如果有人可以为我指明在 AWS 上设置滑动式 LAMP 堆栈的综合指南的方向(甚至可能已经写了一本书),那将会很棒,因为我发现亚马逊文档没有详细说明并告诉我如何做事情,但不是我为什么要这样做以及他们有什么目的。

谢谢

4

7 回答 7

3

我将首先回答您的问题,由于您是新手,我建议您不要强迫学习所有 AWS,您可以继续缓慢迁移并不断发现云的魔力。

问:当 EC2 实例出现故障时,它会带走所有数据,而我不能让这种情况发生。我也读过,当它死时它不会做任何事情,你必须再次启动 apache 服务器,它不是自动的吗?

A. 当 EC2 实例宕机时(宕机可能意味着您手动关闭,或者宕机意味着 AWS 网络宕机,或者实例有其他问题)只有“临时数据”上的数据,或者您可以说 RAM 或会话上的数据会丢失,磁盘上的任何内容都将保留在磁盘上,并且一旦问题解决,实例将可用。Apache 将在实例重新启动时自行启动,并保持启动状态,直到您手动将其关闭或出现其他问题。

问:我需要 S3 来处理我的 PDF 和图像等静态内容,以及为我的 MYSQL 数据库使用 RDS 吗?

A. 在 s3 上保留静态内容是一个很好的做法,但不是必须做的事情,您可以像以前一样设置 ftp 或管理静态内容,例如将其保存在网站的文件夹中。您不一定需要 RDS 来拥有 mysql 数据库,我有一个在 aws 上运行的进程,每天大约有 4000 万个事务,我在 ec2 实例的普通 mysql 上执行此操作。但是,拥有 RDS 可以摆脱日常备份和索引维护的麻烦。

Q. 我的域名是在别处注册的,所以我认为我也需要使用 53 号路由?

A. 同样不是必需的,您可以去您的域管理器并更改 A-name 或 C-name 记录(使用 ec2 的静态公共 ip)并为您的 ec2 实例或弹性负载均衡器提供静态公共 ip 和您将立即启动并运行。

问:我想使用 AWS 有几个原因,首先是因为它可以扩展,这非常重要,但不确定这是内置的还是需要定制的。

答:它可以很好地扩展,但取决于您希望它如何扩展,以及它的高度可定制性。有2种缩放

  1. 垂直 - 您将实例类型从一种类型更改为另一种类型以获得更好的磁盘/cpu 或 RAM 或更好的网络性能,但这需要您停止 ec2 实例并更改其类型,这意味着停机时间约为 10 分钟当你这样做的时候。

  2. 水平 - 您可以将您的网站(基于 ec2)放在负载均衡器(ELB - 弹性负载均衡器)后面,并在您认为合适的时候添加/删除更多实例,或者您也可以有一个自动扩展策略来提供帮助您会根据 Web 服务器的负载自动执行此操作。

安全?- 你可以确信它非常安全,而且非常安全,我可以将我的生命赌在一个安全的 ec2 实例上,我可以向 linux 发誓,它可以工作并且它就像一个魅力。

调试?- 我建议你通过经典的方式进行调试,记录错误等等,把ec2当作普通机器,慢慢学习交易技巧。

现在让我们为自己设置一个基本的实体 LAMP 堆栈,我假设您有一个现成的 ubuntu 实例,并且您可以通过 ssh 连接到它,以防万一您无法制作 - 请参阅

基本上。1. 创建安全组 - 这是您的防火墙,确保打开哪些端口,并确保哪些 ec2 实例可以相互通信。2. 创建一个 ec2 实例 - 制作任何 ubuntu 实例。并使用 ssh 访问您的实例 - ssh 基本上是与您的 ec2 机器的安全终端连接,由密钥文件(pem 文件)保护,任何拥有它的人都可以访问您机器的数据,因此保持非常安全,您不能失去它。3. 使用 - Tasksel 实用程序安装 LAMP 4. 为自己设置一个公共 ip(每月花费一美元) - 您可以使用此 ip 使用您的 DNS 提供商的域管理器重定向您的 www.example.com 流量 - godaddy 或类似的人我想。

我认为这将使您开始使用 AWS。

为了安全起见,您拥有一份数据副本,为您的 ec2 实例创建一个包含所有数据的 AMI。AMI 是您可以在 10 分钟内(甚至更短时间)制作类似或更好实例的图像。

您将支付 - 您选择的实例类型、公共 IP、流量(通常非常便宜)、磁盘使用量(默认磁盘为 8 GB)和 AMI 卷。

享受 AWS 的乐趣。

于 2013-10-29T11:07:32.153 回答
2

要在停机期间保留数据,请确保使用 EBS 存储。它的默认值现在一天。过去,在 EBS 之前,实例存储是默认的,一旦服务器关闭,您就会丢失数据,但使用 EBS 存储,数据在关闭期间会保留。

您可以根据需要走以下两条路线之一。1.如果您不需要安装任何额外的东西,请使用 AWS ElasticBeanStalk ( http://aws.amazon.com/elasticbeanstalk/ ) 它超级简单,类似于 Google Apps,您可以快速部署您的应用程序。您没有获得服务器,而是获得了用于部署您的应用程序的服务器。您必须将 RDS 用于数据库,将 S3 用于存储。您不能在运行的服务器上本地存储。

  1. 使用具有静态 IP 地址的 EC2 服务器。您可以从市场获得预配置的 LAMP 堆栈。我使用预配置了 LAMP 和许多其他应用程序的 AWS 的 bitnami 云堆栈。只需使用他们的免费帐户为您的 PHP 创建微型实例并选择一个服务器,您就可以开始了。http://bitnami.com/cloud

除非您需要以编程方式管理 DNS,否则您不需要使用 Route 53。您可以通过在 DNS 中添加条目(godaddy 或您的域名提供商)将您的服务器指向 EC2 服务器。

Bitnami 服务还允许计划备份,但如果您没有在本地存储任何内容,则不需要频繁备份。

确保在 RDS 中使用更可靠的多可用区选项。当您预置多可用区数据库实例时,Amazon RDS 会自动创建一个主数据库实例并将数据同步复制到不同可用区 (AZ) 中的备用实例。此外,Amazon RDS 会自动修补数据库软件并备份您的数据库,在用户定义的保留期内存储备份并启用时间点恢复,最长持续 5 分钟。

我希望这有帮助。

于 2013-10-24T00:33:46.277 回答
1

您应该在没有 Mysql 的 LAMP 中使用 dynamo DB ( http://aws.amazon.com/dynamodb/pricing/ ) 进行存储。拥有 Samebox 数据库几乎永远不会给您带来可靠性。因此,无论您的应用程序框经历了什么,您都不会丢失您的数据。您甚至可以从 dynamo DB 中读取我们的应用程序配置。

  1. http://aws.amazon.com/documentation/dynamodb/
  2. http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SettingUpTestingSDKPHP.html
  3. 我需要将 EC2 与 DynamoDB 一起使用吗?
于 2013-10-24T19:01:55.333 回答
1

当服务器关闭时,您不会丢失数据。只需确保您选择的 EBS 卷,而不是实例。

您可以从 AWS 市场获得现成的服务器。我在我的项目中使用了以下内容,但还有许多其他预配置的服务器可用。 https://aws.amazon.com/marketplace/pp/B007IN7GJA/ref=srh_res_product_title?ie=UTF8&sr=0-2&qid=1382655655469

这与 RDS 服务器是您所需要的。我们一直将它用于生产服务器,并且从未遇到任何问题。

于 2013-10-24T23:04:54.670 回答
0

我觉得你有一些误解。

如果整个 EC2 出现故障(这种情况很少见),那么您不会丢失数据。在亚马逊恢复服务之前,该网站将处于离线状态。

如果您的特定实例由于硬件问题而停机,那么您可能会丢失数据。这与您自己的服务器瘫痪没有什么不同。正确的答案是简单地对数据库进行正常备份并将其存储在 S3 或其他位置。通常,您需要创建第二个 EBS 卷并将其附加到您的数据库服务器上,该数据库服务器上也有数据库文件。

如果你终止你的实例,是的,你将失去一切。但是,Amazon 有能力使终止实例变得困难,因此您不会意外地这样做。

停止您的实例就像关闭计算机。不同之处在于您可以在需要时远程重新打开它。您只能停止 EBS 支持的实例 - 这意味着您的数据在离线时是安全的。


我强烈建议,如果您对设置和维护自己的服务器感到不舒服,您应该研究完全托管的主机。EC2 很棒,我们已经使用了 2 年。但是,我们拥有一支强大的技术团队,他们了解运行和管理服务器需要什么。

于 2013-10-25T00:01:00.773 回答
0

这里有两个对我来说很好的指南:

http://shout.setfive.com/2013/04/05/amazon-aws-ec2-lamp-quickstart-guide-5-steps-in-10-minutes/

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

如果你不喜欢学习 Linux 命令行,你应该考虑“向上堆栈”到 PaaS(平台即服务)。它们是 Heroku、Google App Engine 和 ElasticBeanStalk 之类的东西。

基础设施即服务(IaaS,如 EC2)和平台即服务(PaaS,如 Heroku)之间的权衡: - PassS 上手更快,学习更少。IaaS 要求您从一开始就了解整个堆栈(或雇用/租用系统管理员)。- 与 IaaS 相比,当您变得更大时,PassS 通常会变得更昂贵(但这取决于)。- PaaS 控制较少(您无法选择语言版本,因此无法升级以绕过特定错误。) - IaaS 可以做任何事情(它只是一个 Linux 机器) - IaaS 允许更多调整(升级获取特性的库,切换到不同的实例类型以牺牲 CPU 的 RAM,运行 HipHop 以提高速度,添加缓存层等)

于 2013-10-23T02:06:40.327 回答
0

你有几个选择:

  1. 仅使用 EC2。在 EC2 上安装 Apache+MySQL 和您的动态网站。这将与在 Hostgator 上设置它非常相似,除非您正在运行一个完整的服务器。
  2. 使用 EC2 进行“计算”(即站点的动态部分),使用 S3 进行存储。这与上面的 #1 没有太大区别,只是您使用 S3 进行静态文件存储 - 如果您希望托管大量静态内容(多媒体等),这很好
  3. 使用 Amazon Elastic Beanstalk(现在支持 PHP)设置您的网站。然而,如果你走这条路,你将需要在某个地方托管你的数据库——这很可能是 RDS。

我建议使用#1。这没有什么问题 - 是的,如果 EC2 出现故障,它会同时关闭您的站点,但为了缓解这种情况,您可以在两个不同的区域(一个在美国东部,一个在美国西部)运行两台服务器 - 我不要认为两个 EC2 区域同时出现故障。

更新:如果您担心备份/恢复并确保您的数据安全,我建议您执行以下操作(我使用 EC2 上的生产站点执行此操作):

  • 将您的网站代码放入 Git/SVN 源代码控制中;并从那里拉
  • 使用 mysqldump 定期(至少每天一次)将您的 MySQL 数据库备份到 Amazon S3
于 2013-10-22T20:14:47.663 回答