2016-04-04 146 views
13

我想知道是否可以在AWS API网关上将wordpress部署为一系列lambda函数。任何可行性/陷阱指针将不胜感激!将wordpress部署为AWS lambda函数?

由于提前,

库尔德工人党

+0

呃!谢谢Mark B. – PKK

+1

WP现在没有NodeJS API吗?和RDBS服务串联?这绝对可以完成,但这是一项巨大的努力。 – ilrein

+2

@PKK你可以这样做的一种方法是使用'WordPress XML-RPC API'有一个很好的节点包可以使用[scottgonzalez/node-wordpress](https://github.com/scottgonzalez/node-wordpress)例子:'var wordpress = require(“wordpress”); var client = wordpress.createClient({url:“my-site.com”, username:“admin”, password:“secret” }); 客户端。getPosts(function(error,posts){ response.setHeader(“Content-Type”,“text/json”); response.setHeader(“Access-Control-Allow-Origin”,“*”); response。 end(posts.length); }); ' – eMM

回答

4

你有很多东西具有持久性考虑,甚至在此之前,LAMBDA不支持PHP。我可能会看看支持PHP的Microsoft Azure函数,并确实拥有持久存储。

虽然其他语言(如Go,Rust,Swift等)可以“包装”以相对容易地在AWS Lambda中运行,但编译以相同平台为目标并运行PHP的PHP有点不同(当然更加费力)。想想你需要的所有各种PHP模块。而且,我无法想象性能会像Go二进制一样好。

如果你可以用Phalcon框架做一些聪明的事情,并提出一个简单的构建和部署过程,然后maayyyybee。

虽然,你可能需要真正彻底检修像WordPress这样的设计。由于项目时代的原因,它仍然使用了一些非常古老的约定,虽然这对于典型的PHP服务器来说都非常好,但从“便携”PHP安装的角度来看,它是一种不同的球类游戏。

请记住,PHP会话也是依赖的,因此您需要将这些地方移到别处,因为AWS Lambda缺乏持久性。你也许可以找到某种适用于Redis的WordPress插件?我不得不想像这样的东西现在已经建成了......但是会有很多复杂性。

我会认真考虑使用Azure函数开始或使用Docker并放弃云功能提供的定价模型。你仍然可以在那里找到一些非常便宜和可扩展的主机。

我之前所做的是使用AWS ECS(Docker)和EFS(网络存储)来实现数据库的持久性和RDS。虽然这与Lambda没有相同的定价模式,但它仍然具有成本效益。您可以将您的ECS服务设置为自动缩放。这样你就可以运行最低限度,直到你需要更多。

我已经在这里写了更深入的文章:https://serifandsemaphore.io/how-to-host-wordpress-like-a-boss-b5993fcfbd8e#.n6fbnf8ii ...但基本上只是在Docker中运行WordPress并使用EFS卸载持久存储问题的想法。如果你喜欢,你可以将许多拼图碎片交换出来。使用托管在其他Docker服务或Compose中的数据库或任何地方。例如,该部分不需要是RDS。即使您的存储可以用不同的方式处理,但EFS工作得很好!关于EFS唯一要注意的是写入速度。尽管大多数WordPress网站都被阅读得很重。您的里程将根据您的需求而有所不同。

+3

说实话,使用WordPress的最大代价很可能是您的数据库,而您无法使用AWS Lambda解决问题。 – Tom