【问题标题】:Deploying wordpress as AWS lambda functions?将 wordpress 部署为 AWS lambda 函数?
【发布时间】:2016-04-04 01:33:32
【问题描述】:

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

提前致谢,

PKK

【问题讨论】:

  • 呃!谢谢马克 B。
  • 现在不是有适用于 WP 的 NodeJS API 吗?和RDBS服务串联?绝对可以做到,但需要付出巨大的努力。
  • @PKK 你可以做到这一点的一种方法是使用`WordPress XML-RPC API`有一个很好的节点包你可以使用scottgonzalez/node-wordpress一个例子:`var wordpress = require("wordpress"); var client = wordpress.createClient({ url: "my-site.com", username: "admin", password: "secret" }); client.getPosts(function(error, posts) { response.setHeader("Content-Type", "text/json"); response.setHeader("Access-Control-Allow-Origin", "*"); response.end (posts.length); }); `
  • 通过 AWS 博客 (aws.amazon.com/blogs/compute/…) 将 PHP 打包到 Lambda 中,并用它打包 Wordpress 代码和配置,然后公开 REST-API 听起来很有趣。我想知道这是否可能,或者包的开销是否会淹没响应时间。
  • cwhite.me/hosting-a-laravel-application-on-aws-lambda 的 Laravel 讨论对于我的上述评论有一些值得考虑的事情。这让我想用 API Gateway 试试这个。

标签: wordpress aws-lambda


【解决方案1】:

在持久性方面,您需要考虑很多事情,甚至在此之前,Lambda 还不支持 PHP。我可能会关注 Microsoft Azure Functions,而不是支持 PHP 并具有持久存储。

虽然其他语言(如 Go、Rust、Swift 等)可以相对轻松地“包装”在 AWS Lambda 中运行,但针对同一平台编译 PHP 并运行它有点不同(当然更费力) .想想初学者需要的所有各种 PHP 模块。此外,我无法想象性能会与 Go 二进制文件一样好。

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

不过,您可能需要真正彻底检查 WordPress 之类的东西,而 WordPress 根本不是为此而设计的。由于项目年代久远,它仍然使用一些非常古老的约定,虽然这对于您的典型 PHP 服务器来说一切都很好,但就这种“便携式”PHP 安装而言,它是一种不同的球类游戏。

请记住,PHP 会话也受到依赖,因此由于 AWS Lambda 缺乏持久性,您需要将这些会话移到其他地方。您可能会找到某种适用于 Redis 的 WordPress 插件?我不得不想象现在已经建造了类似的东西......但是会有很多复杂性。

我会认真考虑使用 Azure Functions 开始,或者使用 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 网站的阅读量都很大。您的里程将根据您的需要而有所不同。

【讨论】:

  • 老实说,您使用 WordPress 的最大成本可能是您没有使用 AWS Lambda 解决的数据库。
  • 有了 Lambda 和 Aurora Serverless,这可能会改变。
  • 它可能会开始改变。请记住,Lambda 仍然不原生支持 PHP。然后你仍然需要一种持久化存储的方法,S3 可以通过插件来实现,但是所有安装的插件都需要由部署管理,并且由于缺乏持久性,许多管理功能将无法工作。您可以将资产放在 S3 上,但不能放在其他系统东西(插件等)上。 Aurora Serverless 将在许多方面改变游戏规则。
  • 不管怎样,wordpress 并不依赖 PHP 会话。
  • 这也是规模问题的一部分。几年前,由于数据库中的会话,我们最终在 UsMagazine 网站上遇到了 WordPress 和 Drupal 的问题。它很难扩展,最终无法用于如此高流量的网站(至少有访客登录/评论)。更好的地方是 memcached/redis/etc。 DynamoDB 就“无服务器”而言???但这可能需要一些黑客攻击。因此,为什么我认为 Aurora Serverless 是帮助这一事业的最佳选择。
【解决方案2】:

有可能吗?是的,只要有足够的时间和精力,一切皆有可能。这值得么?这是一个最好问自己的问题。

PHP 可以根据位于此处的文档在 Lambda 上运行:https://aws.amazon.com/blogs/compute/scripting-languages-for-aws-lambda-running-php-ruby-and-go/

如其他 cmets 所述,更大的初始问题是持久性文件系统。用于媒体存储的 S3 可通过 Wordpress 插件(同样来自 cmets)实现,但任何其他用于请求/脚本执行的持久存储都是最初的最大障碍。一次解决一个问题,直到最后!

【讨论】:

    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2021-09-28
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多