假设我在Wordpress中创建一个站点,该站点在Elastic Beanstalk上运行。现在,在正在运行的应用程序上,我将创建帖子/页面,上传图像等。也就是说,数据库中的一些数据,视频,文件和记录将被添加到正在运行的应用程序中。
3个问题:
我也一直在研究这个问题,并且已经学到了一些与此相关的内容 - 特别是关于上传的问题一直在我的脑海中:
(1)在我看来,处理上传的最好方法是按照你的建议去NFS / NAS路线,但更好的方法是使用适用于WordPress的Amazon S3插件,以便任何上传自动复制到S3和WordPress媒体库中的URL反映了您的存储桶的FQDN,而不是您的特定网站。这样,您可以在Beanstalk中拥有一个或十个WP节点,并且媒体/图像独立于任何一个服务器。
(2)你绝对应该在这里使用RDS。很少有东西比多可见区,保留的MySQL RDS实例更容易使用和无压力。运行MySQL的那个或你自己的EC2独立于Beanstalk,但为什么在RDS更容易的时候运行它?
(3)是的,您必须首先提交对Git存储库或本地文件的更改(新插件,主题更改,WP升级),然后上载/安装作为Beanstalk代码的修订。否则,您通过Web界面对一个节点所做的所有更改将永远不会出现在新节点的新负载中 - 事实上,您将拥有升级的数据库,但Beanstalk应用程序中的代码集较旧,因此很可能创造某种或那种错误。
我参加了AWS架构课程,他们对EC2和Beanstalk的建议是开始考虑服务器实例是非常一次性的 - 所以你应该考虑让你的盒子在引导过程中自行配置的简单方法并采取在一个盒子上没有任何宝贵资源的情况下为彼此工作。所以失去一个实例永远不应该是一个大问题。 (这绝对不是我们在物理服务器世界中的想法,我们已经调整了所有内容'就是这样'。)
祝好运!
好吧,我不是专家,但既然没有人回答,我会尽我所能。
说实话,我仍然在学习所有这些,正如我所说,我不是专家。希望其他人会出现并提供更明智的答案。然而,这里的关键概念障碍是弹性可伸缩性的概念 - 这个想法的重点是弹性/可扩展/一次性和持久性之间的元素分离。
希望这会有所帮助。
将WordPress部署到AWS Elastic Beanstalk确实需要对正常的WordPress部署进行一些更改,如此处所述。要回答您的问题,这是一个很棒的教程,解释无状态应用程序以及如何部署到Elastic Beanstalk:
Deploying WordPress to Amazon Web Services AWS EC2 and RDS via ElasticBeanstalk
我在EB,S3和RDS上部署了一个小型Wordpress站点。 S3保存所有静态数据,例如媒体上传。这通过插件工作。 RDS拥有数据库。 EB持有最新部署的应用程序。应用程序是从我的开发环境部署的,带有构建脚本。这样,我只需按一个按钮就可以重新部署。
我在这里写了一篇关于它的文章:http://www.cortexcode.com/wordpress-to-aws-code-example/
虽然最初很烦人,但AWS的速度很快,现在比以往任何时候都容易。以前我必须通过FTP上传一堆文件,这样效率更高。 :-)
好的,我在这个特定问题上进行了很多研究,这就是我所学到的 -
(1)如果wordpress用户上传了某些文件,那么他的文件将仅上传到当时实际为其请求提供服务的虚拟机。例如,如果当前wordpress站点是云部署的并且正在使用5个虚拟机,那么现在当用户发出请求时,他将被定向到一个虚拟机 - 那时负载最低的虚拟机...他的上传仅存储在该虚拟机上服务器。当前的平台即服务解决方案(如Amazon Elastic Beanstalk和App Fog)无法将更改传播到所有正在运行的实例。要么(传播对所有服务器的更改)或使用所有正在运行的实例的公共存储 - 这些是解决此问题的唯一解决方案。 (例如,常见存储将是使用网络连接存储(NAS)的所有5个正在运行的虚拟机......)
(2)例如,通过引用当前可用的平台,例如Amazon Elastic Beanstalk和App Fog,即使用户直接对运行的应用程序进行了更改 - 这些平台依赖于本地版本的代码(管理员最初部署到云端) - 以及无法使用用户对运行应用程序所做的更改来更新本地版本的代码(在管理员的PC上) - 因此这些更改即文件丢失 - 同样,用户对正在运行的应用程序的数据库更改也是丢失 - 除非管理员为他的本地应用程序使用完全相同的数据库(他部署到云端)
(3)首先必须对管理员PC上的本地应用程序进行对运行应用程序的任何更改,然后将其推送到云端。
我正在开发一个解决所有这些问题的云PaaS--即可以对运行的应用程序进行更新,对正在运行的应用程序所做的代码更改也会在用户可访问的代码存储库中更新...概念证明已经准备好,希望它将是我希望它应该是好:) - 目前唯一的事实是有网站(anyacloudpanel.com) - 设计工作正在进行:)
如果有一些规则,我不应该提到我的网站(Anya Cloud Panel) - 那么我很抱歉 - 请随时编辑并从我的答案中删除我的网站URL :)
谢谢,Arvind。
作为所有重要答案的补充:
1)我强烈推荐使用EFS,但也可以推荐S3用于媒体文件,因此它们可以从高可用性区域与cloudfront结合使用。对于Wordpress,有一个plugin that really speeds up this(不隶属于他们,就像插件一样)。如果您想从S3提供JS,CSS文件,还有一个资产插件。对于EFS解决方案,请查看git上的AWSlabs docs,特别是this file,了解它们如何挂载上传文件。
一般来说,EBS非常适合Wordpress,但与其他托管解决方案(共享托管,托管托管)相比,您需要以不同的思维方式思考。
如果您使用来自themeforest的主题,请小心。其中一些与wordpress S3插件不兼容。然后你搞砸了,你无法在云上部署wordpress。