2015-03-19 31 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脚本。