我想在亚马逊的服务器上发布一个网站,即:
- 运行 CakePHP
- 使用 MySQL 存储数据
- 让用户通过 Flash 上传音频(当前使用托管的 Flash Media Server),然后收听文件
我是否需要 Amazon 的 EC2 用于网站、RDS 用于 MySQL 数据库和 CloudFront 用于 FMS?我真的很想了解我应该使用哪些服务。
谢谢。
我想在亚马逊的服务器上发布一个网站,即:
我是否需要 Amazon 的 EC2 用于网站、RDS 用于 MySQL 数据库和 CloudFront 用于 FMS?我真的很想了解我应该使用哪些服务。
谢谢。
首先,您需要 EC2 服务才能拥有一个虚拟机,您可以在其中安装 Apache、PHP 和您的 Web 应用程序。
然后,您还需要用于媒体文件的数据库服务器和数据存储库。推荐的方式正是您所建议的:RDS for MySQL 和 CloudFront 作为文件存储库。
最初,上述服务(RDS、CloudFront 甚至 EBS)都不可用。开发人员无法使用 MySQL 数据库,因为即使它安装在 EC2 实例中,也不能保证实例保持正常运行,如果实例丢失,数据也会丢失。为此,引入了 EBS。它创建了一个具有保证持久性的挂载存储,您可以从 EC2 实例访问该存储。理论上你可以在那里安装 MySQL 并用它来存储 flash 文件。如果您只想通过 HTTP 协议提供文件,使用 EBS 没有问题。
然而,CloudFront 有一些优势:
您也可以使用 S3,但不能使用 RTMP 协议,您需要手动创建文件链接。此外,无法将您的域名用于文件。
相对于在 EC2、EBS 中安装 MySQL,RDS 也有一些优势:
您需要 EC2 来启动实例并创建您的 LAMP 服务器。如果您不需要自己管理 MySql 数据库,RDS 很好,但是 RDS 的一个限制因素是您不能进行数据库复制。
对于持久存储,您可以使用 EBS 或 S3 作为数据文件。
这些回复中没有提到的一件事是可能(或可能不需要)绕过您的文件访问的安全性。云网络适用于可公开访问的数据,但我还没有看到云网络可以为每个用户提供粒度级别的文件访问。虽然您可以对访问文件的 url 进行模糊处理,这样就不容易依次猜测音频文件 ID,但如果人们保留私人音频,这可能还不够。不是说不做,只是谨慎做决定。