配置弹性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

单独的环境配置弹性beantalk

在弹性 beantalk 上配置 apache

如何配置弹性 beantalk 以将 https 与 ACM 证书一起使用?

弹性 beantalk 检索 S3 文件时权限被拒绝

在弹性 beantalk 环境中读取数据库配置详细信息的 API 是啥?