配置弹性beantalk以使用新版本的python
Posted
技术标签:
【中文标题】配置弹性beantalk以使用新版本的python【英文标题】:Configure elastic beanstalk to use new version of python 【发布时间】:2013-02-11 12:14:22 【问题描述】:如何在不创建自定义 AMI 的情况下让 Amazon Elastic Beanstalk 在运行 Django 时使用 Python 2.7.3?
告诉 elastic beanstalk 使用比 2.6 更高版本的 python 似乎应该很简单。我真的不想创建自定义 AMI,因为这似乎使问题过于复杂。
我需要 python 2.7.3,我需要使用 virtualenv 1.8.X。我注意到使用比亚马逊部署教程(1.7.X)更高版本的 virtualenv 似乎会对“git aws.push”产生负面影响,但由于客户要求,我在这种情况下没有选择。
我研究过在 .ebextensions/*.config 中创建自定义容器命令,例如:
container_commands:
update_python:
command: "sudo yum -y install python27; sudo ln -sf `which python2.7` /usr/bin/python"
但这会破坏 yum,这可能没问题,但我更愿意保持系统完好无损。
我可以使用 yum 安装 python27,如上所示,并将 python26 保留为默认 python,但我不知道如何确保服务器使用 python27 启动 Django。所以另一个问题是,我如何告诉 elastic beanstalk 使用 python27 来运行 Django 而不是默认的 python?我可以轻松地将 python27 作为备用 python 安装在系统上,我只需要显式调用它。
我希望这个问题不会太宽泛。我试图想出多个角度来解决这个问题。感谢您的帮助。
【问题讨论】:
如果您知道 Elastic Beanstalk 将它保存在 virtualenv python 的位置,那么只需替换那个而不是真实的。不过,我不确定 virtualenvs 的差异。 【参考方案1】:我遇到了同样的问题,解决方案很简单。
假设你的 PATH 环境变量指向这个文件夹:
<path to unzipped EB CLI package>/eb/linux/python2.7/
去那里编辑名为“eb”的文件
$cd <path to unzipped EB CLI package>/eb/linux/python2.7/
$vim eb
在显示“!#/usr/bin/env python”的第一行将其更改为“!#/usr/bin/env python2.7 "
然后你应该没事!
【讨论】:
问题是关于部署,而不是eb命令行工具以上是关于配置弹性beantalk以使用新版本的python的主要内容,如果未能解决你的问题,请参考以下文章
使用 ebextensions 配置在弹性 beantalk 上安装 ffmpeg