我有一个需要在 Elastic Beanstock 中托管的应用程序。该应用程序需要 Python 2.7,但 Elastic Beanstock 仅支持 Python 2.6。
我想在部署时安装 Python 2.7。这是配置。
.ebextensions/配置:
packages:
yum:
python27.x86_64: '2.7.3'
container_commands:
01create_virtual_environment:
command: "virtualenv -p /usr/bin/python27 /opt/python/run/venv27"
02activate:
command: "source /opt/python/run/venv27/bin/activate"
02install_packages:
command: "pip install -r /opt/python/current/app/requirements.txt"
当我创建应用程序时,我得到:
ERROR: Responses from [xxxxxxxx] were received, but the commands failed.
当我 ssh 登录时,我看不到该包。
有想法吗?
答案1
从http://leetreveil.roon.io/getting-a-python-2-7-project-running-on-elastic-beanstalk:
这是我编写的 .ebextensions/python27.config,用于完成所有设置。我将解释配置的每个部分的作用。
# Yum 安装我们需要的 python2.7 软件包 # 在 EC2 框上。python27-devel、make 和 httpd-devel # 是使用 python27 获取 modwsgi 设置所必需的。 包装: 美味: python27: [] python27-开发: [] 制作: [] httpd-开发: [] 命令: # 系统当前安装的 modwsgi 版本 # 仅支持 python2.6。这 #命令编译并安装支持python2.7的modwsgi。 安装modwsgi27: 命令:'[ -f mod_wsgi-3.4.tar.gz ] && echo "mod_wsgi-3.4 已安装" || { wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz; tar xzvf mod_wsgi-3.4.tar.gz; cd mod_wsgi-3.4; ./configure --with-python=python27; make; make install; } | iconv -f utf-8 -t us-ascii//TRANSLIT' # 当我们的应用程序被部署时,会设置一个虚拟环境 # 自动为我们注入 --python=python2.7 # 参数进入 virtualenv CLI。这将告诉 virtualenv # 使用python2.7而不是默认的python2.6。 使用python27: 命令:grep "python2.7" 03deploy.py || sed -i 's/--distribute/--python=python2.7 &/' 03deploy.py 继续:/opt/elasticbeanstalk/hooks/appdeploy/pre 容器命令: # 现在我们的应用程序已使用 python2.7 安装,我们 # 需要修复 wsgi 配置中的一些路径 # 已指向 python2.6。复制默认的 eb wsgi.conf, # 将其签入 git 并替换指向 # 升级到 python2.6。查看此差异以了解所需的更改: # https://github.com/leetreveil/elasticbeanstalk-python27/commit/3b3c955cfe686b9df77e0dddaf299ce6e1a20f32 01replacewsgiconf: 命令: scp /opt/python/ondeck/app/wsgi.conf /opt/python/ondeck/wsgi
作者还Git 仓库包含设置所需的所有脚本和文件。
答案2
这里描述了类似的情况,并详细说明了如何解决
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Python_django.html