2016-04-04 150 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