如何将包(例如 libjpeg-dev)自动加载到我的 Elastic Beanstalk 应用程序?
Posted
技术标签:
【中文标题】如何将包(例如 libjpeg-dev)自动加载到我的 Elastic Beanstalk 应用程序?【英文标题】:How do I auto load packages (such as libjpeg-dev) to my Elastic Beanstalk App? 【发布时间】:2014-05-30 19:48:44 【问题描述】:我有一个运行 Python 的 Auto Scaling Elastic Beanstalk 应用程序,我想在其中使用 PIL。当我这样做时,它说我的 jpeg 解码器丢失了,我需要安装 libjpeg。
所以我在这里遵循 AWS 官方指南中的“配置文件”:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html#customize-containers-format但我无法让它工作。
如果我正确理解了这些指南,我应该在我的应用程序文件夹中设置一个名为 .ebextensions
的目录。在我的 .ebextensions 中,我应该设置一个 foo.config 文件。就我而言,我将其命名为python.config
。
我想在这个文件中执行命令。我的 .config 文件的代码是:
packages:
yum:
libjpeg-devel: '6b'
我部署了我的应用程序,我可以在我的日志快照中看到它像这样膨胀和创建文件:
-------------------------------------
/var/log/eb-tools.log
-------------------------------------
creating: /opt/python/ondeck/app/.ebextensions/
inflating: /opt/python/ondeck/app/.ebextensions/python.config
inflating: /opt/python/ondeck/app/application.py
...
但是,我找不到有关实际执行命令的任何信息。我一直在我的日志中搜索“yum”、“python.config”、“jpeg”、“libjpeg”等等,没有任何相关的痕迹。我重新启动应用程序服务器,但仍然收到相同的消息,说 libjpeg 丢失。
我看到其他人问过类似的问题,关于配置文件不起作用。但我还没有看到任何答案。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,我没有设置全新的 Elastic Beanstalk 应用程序,而是通过 SSH 连接到 EC2 实例并重新安装了 PIL(或 Pillow)。
在 EC2 实例上,我运行了以下命令:
source /opt/python/run/venv/bin/activate
pip uninstall PIL
pip install PIL
现在 PIL 支持 jpeg 编码 =)
【讨论】:
【参考方案2】:我通过设置一个全新的 Elastic Beanstalk 应用程序并在那里部署完全相同的应用程序来“解决”此问题。然后它成功安装了 libjpeg 包。
我一直无法找到为什么它不能在第一个 Elastic Beanstalk 应用程序上运行的答案。但也许它与第一次安装 PIL 有关,然后它无法安装 libjpeg。
【讨论】:
以上是关于如何将包(例如 libjpeg-dev)自动加载到我的 Elastic Beanstalk 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章