2015-03-19 72 views

回答

1

我做了一個項目,一段時間回來是做了動態圖像大小調整彈性魔豆。我選擇在Node.js應用程序中使用Sharp NPM package來獲得libvips的速度和靈活性。它最終解決了,但在Beanstalk上做這件事絕對是一場艱苦的戰鬥。

我們遇到的第一個問題是在系統上安裝庫。我們需要imagemagick和libvips。 .ebextensions中的腳本設置工作正常,但當這些腳本與您的應用程序相關時,您無法控制。在我們的例子中,我們需要在運行npm install之前安裝的庫。這不是Beanstalk的工作原理,所以我們必須在package.json中使用devDependencies做一些非常好用的東西,然後在.ebextensions腳本的末尾安裝它們。對你而言,我想這是你將如何在內置的Nginx實例上安裝任何東西的第一部分。但是,你必須首先停止Nginx,因爲它可能已經在運行。

接下來,Beanstalk喜歡吹走你擁有的任何Nginx配置。更具體地說,它試圖將你的Nginx配置與亞馬遜想要的配置合併。我懷疑這是真正咬你的部分。試圖添加一些緩存擴展時,我們放棄了這一點。它從來沒有工作,即使我們黑了點東西,它可能會失敗,只要亞馬遜後來改變了一些東西。您可以使用.ebextensions腳本將Nginx配置置於適當的位置,但一旦它們完成,Amazon就會有一些腳本來重寫配置。

我得到的是你可能會破解它的工作,但這不是你想要做的事情。 Elastic Beanstalk對於它的構建以及其他基本沒有問題。它也不像廣告那樣工作,並且不過是一個靈活的系統。它似乎與盒子上的一堆腳本拼湊在一起,按照預期使用它們的工作,但是搞亂它們並不是一個好主意,因爲亞馬遜可以隨時改變它們的功能。

您的一種可能性是使用Docker。如果我再次執行這個項目,我會從一開始就從Docker開始,理論上你可以使用任何你想要的。 Beanstalk可以託管你的Docker應用程序,它的工作方式與普通的Beanstalk應用程序不同。

與這個項目祝你好運!

1

事實證明Elastic Beanstalk上的nginx是使用http_image_filter編譯的。 所以它基本上是將nginx配置轉換爲beanstalk自己的nginx配置的一個例子。是的@brad - 這是一個巧克力。但它不是太糟..

你可以看到我的解決方案here。基本上它是一個我從this solution修改的python腳本。