AWS中的Web应用程序的最佳实践

时间:2015-04-23 19:25:03

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

我目前正在开始开发一个学校的Web应用程序,它将作为教育计划数据库,供教育工作者搜索,上传和下载课程计划的文件。我有我的EC2实例设置用于构建我的PHP应用程序和我为我的MySQL部署的RDS。

我正在慢慢学习PHP,因为我需要在客户的网页上加入这些内容,但是当我做更多的研究时,我会看到其他方法,例如使用Elastic-Beanstalk,主机使用S3存储,Dynamo ......我想我一般都知道从哪里开始,但我想我有点迷失了如何在没有让我和客户的头脑旋转的情况下解决这个问题。

我们的应用程序希望在某种程度上反映这种设置,但我认为我们不会使用Flash应用程序:http://spirit.unomaha.edu/

有关于如何处理这个问题的建议吗? 更具体地说,如何让PHP与EC2通信并允许在该存储桶中上传文件?也就是说,我希望存储在AWS上的文件不是临时文件夹。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我假设您正在谈论将文件上传到S3,而不是上传到EC2中的存储桶。

以下是PHP SDK的文档(特别是用于将文件上传到S3的部分):
http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html

至于您的设置,最简单的方法是在Elastic Beanstalk上运行您的应用程序,使用RDS作为数据库,使用S3进行存储。

但是在EC2实例上运行应用程序,RDS用于数据库,S3用于存储,也可以正常工作,但如果你想利用自动扩展功能,你需要做更多的工作。 AWS。

这基本上就是你如何从你的应用程序上传文件到S3:

    $s3 = S3Client::factory(array(
        'key' => 'YOUR_KEY',
        'secret' => 'YOUR_SECRET'
    ));
    $result = $s3->putObject(array(
        'Bucket' => 'MyBucket',
        'Key' => 'myFolder/myFile.txt',
        'SourceFile' => '/path/to/temp/upload/file',
        'ACL' => 'private' // Access config
    ));