关于将django app部署到aws beanstalk的requirements.txt无效

时间:2022-04-21 19:20:56

I have been deploying my app without any issues to the beanstalk environment until my latest commit.

在我最近的提交之前,我一直在部署我的应用程序而没有任何问题到beanstalk环境。

Now I get this

现在我明白了

Time    Type    Details
2013-09-01 10:19:12 UTC+0800    ERROR   Failed to deploy application.
2013-09-01 10:19:11 UTC+0800    ERROR   Responses from [i-50f40d06] were received, but the commands failed.
2013-09-01 10:19:11 UTC+0800    ERROR   Your requirements.txt is invalid. Snapshot your logs for details.
2013-09-01 10:19:11 UTC+0800    ERROR   [Instance: i-50f40d06 Module: AWSEBAutoScalingGroup ConfigSet: Hook-PreAppDeploy] Failed on instance with return code: 1 Output: Error occurred during build: Command hooks failed .

The snapshot logs say this:

快照日志说明:

2013-09-01 02:19:08,852 [INFO] (9941 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] Output from script: New python executable in /opt/python/run/venv/bin/python2.6
Not overwriting existing python script /opt/python/run/venv/bin/python (you must use /opt/python/run/venv/bin/python2.6)
Installing distribute..................................................................................................................................................................................................done.
Installing pip................done.
2013-09-01 02:19:08,564 ERROR    Error installing dependencies: Command '/opt/python/run/venv/bin/pip install --use-mirrors -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status -9
Traceback (most recent call last):
  File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 31, in main
    install_dependencies()
  File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 25, in install_dependencies
    shell=True)
  File "/usr/lib/python2.6/subprocess.py", line 502, in check_call
    raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '/opt/python/run/venv/bin/pip install --use-mirrors -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status -9

2013-09-01 02:19:08,853 [ERROR] (9941 MainThread) [directoryHooksExecutor.py-34] [root directoryHooksExecutor error] Script failed with returncode 1
2

My requirements.txt is the same as before. I tried removing everything in the requirements.txt as well but I get the same error again which makes me think the problem was before requirements.txt was run.

我的requirements.txt和以前一样。我尝试删除requirements.txt中的所有内容,但我再次得到相同的错误,这让我觉得问题出现在requirements.txt运行之前。

I don't know the order in which things are deployed. ANyway, here is my config file:

我不知道部署内容的顺序。 ANyway,这是我的配置文件:

packages:
  yum:
    libjpeg-devel: '6b'
    zlib-devel: []
    freetype-devel: []


container_commands:
  01_install_mysqldb:
    command: "pip install distribute==0.6.28; pip install mysql-python;"
  02_syncdb:
    command: "python manage.py syncdb --noinput"
    leader_only: true
  03_createadmin:
    command: "python scripts/createadmin.py"
    leader_only: true
  04_collectstatic:
    command: "python manage.py collectstatic --noinput"
  05_migrate_wizards:
    command: "python manage.py migrate wizards --noinput"
    leader_only: true
  06_migrate_facebook:
    command: "python manage.py migrate facebook --noinput"
    leader_only: true
  07_migrate_socialaccount:
    command: "python manage.py migrate socialaccount 0011 --noinput"
    leader_only: true
  08_migrate_missions:
    command: "python manage.py migrate missions --noinput"
    leader_only: true
  09_migrate_mailchimp:
    command: "python manage.py migrate mailchimp --noinput"
    leader_only: true
  10_migrate_actstream:
    command: "python manage.py migrate actstream --noinput"
    leader_only: true

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: ideatory/wsgi.py
  - namespace: aws:elasticbeanstalk:container:python:staticfiles
    option_name: /static/
    value: static/
  - option_name: DJANGO_SETTINGS_MODULE
    value: ideatory.settings

4 个解决方案

#1


10  

I had the exact same problem. The only thing that worked for me was (automatically) rebuilding my entire environment. You can do that in the AWS console. Go to your environment and click Actions > Rebuild Environment. This will take some time, afterwards it will automatically relaunch your app without this error.

我有同样的问题。唯一对我有用的是(自动)重建我的整个环境。您可以在AWS控制台中执行此操作。转到您的环境,然后单击“操作”>“重建环境”。这需要一些时间,之后它将自动重新启动您的应用程序,而不会出现此错误。

Update:

更新:

The problem keeps returning so now and then. I figured out that something is going wrong when pip compiles psycopg, which is needed for postgreSQL support. Haven't found a real solution yet.

这个问题一直在不断回归。我发现当pip编译psycopg时会出现问题,这是postgreSQL支持所需要的。尚未找到真正的解决方案。

#2


9  

I was able to make this work by adding postgresql93-devel and postgresql93 to my .ebextensions

我能够通过将postgresql93-devel和postgresql93添加到我的.ebextensions来完成这项工作。

as described in Customizing the Software on EC2 Instances Running Linux

如在运行Linux的EC2实例上自定义软件中所述

This is working for 64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7

这适用于运行Python 2.7的64位Amazon Linux 2014.09 v1.0.9

in .ebextensions/01_pre_deps.config:

在.ebextensions / 01_pre_deps.config中:

packages:
  yum:
    gcc-c++: []
    make: []
    openssl-devel: []
    git: []
    python-devel: []
    python27-devel: []
    ruby-devel: []
    postgresql93: []
    postgresql93-devel: []
    # nginx: []
  rubygems:
    bundler: '1.7.3'
    compass-core: '1.1.0.alpha.3'
    neat-compass: '1.6.0'

#3


1  

Have you made sure mysql-devel package is installed? It doesn't seem to be included in the yum section of your config file.

你确定安装了mysql-devel包吗?它似乎不包含在配置文件的yum部分中。

#4


0  

For whatever reason AWS wouldn't install postgresql-devel packets from my .extensions/01_packets.config as yolk suggested. So instead I had to add

无论出于何种原因,AWS都不会像yolk建议的那样从我的.extensions / 01_packets.config安装postgresql-devel数据包。所以我必须添加

container_commands:
  01_addPostgreSQLPacket:
    command: 'yum install postgresql95-devel'
    leader_only: true

to my 02_django.config. After That it worked just fine.

到我的02_django.config。之后它工作得很好。

#1


10  

I had the exact same problem. The only thing that worked for me was (automatically) rebuilding my entire environment. You can do that in the AWS console. Go to your environment and click Actions > Rebuild Environment. This will take some time, afterwards it will automatically relaunch your app without this error.

我有同样的问题。唯一对我有用的是(自动)重建我的整个环境。您可以在AWS控制台中执行此操作。转到您的环境,然后单击“操作”>“重建环境”。这需要一些时间,之后它将自动重新启动您的应用程序,而不会出现此错误。

Update:

更新:

The problem keeps returning so now and then. I figured out that something is going wrong when pip compiles psycopg, which is needed for postgreSQL support. Haven't found a real solution yet.

这个问题一直在不断回归。我发现当pip编译psycopg时会出现问题,这是postgreSQL支持所需要的。尚未找到真正的解决方案。

#2


9  

I was able to make this work by adding postgresql93-devel and postgresql93 to my .ebextensions

我能够通过将postgresql93-devel和postgresql93添加到我的.ebextensions来完成这项工作。

as described in Customizing the Software on EC2 Instances Running Linux

如在运行Linux的EC2实例上自定义软件中所述

This is working for 64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7

这适用于运行Python 2.7的64位Amazon Linux 2014.09 v1.0.9

in .ebextensions/01_pre_deps.config:

在.ebextensions / 01_pre_deps.config中:

packages:
  yum:
    gcc-c++: []
    make: []
    openssl-devel: []
    git: []
    python-devel: []
    python27-devel: []
    ruby-devel: []
    postgresql93: []
    postgresql93-devel: []
    # nginx: []
  rubygems:
    bundler: '1.7.3'
    compass-core: '1.1.0.alpha.3'
    neat-compass: '1.6.0'

#3


1  

Have you made sure mysql-devel package is installed? It doesn't seem to be included in the yum section of your config file.

你确定安装了mysql-devel包吗?它似乎不包含在配置文件的yum部分中。

#4


0  

For whatever reason AWS wouldn't install postgresql-devel packets from my .extensions/01_packets.config as yolk suggested. So instead I had to add

无论出于何种原因,AWS都不会像yolk建议的那样从我的.extensions / 01_packets.config安装postgresql-devel数据包。所以我必须添加

container_commands:
  01_addPostgreSQLPacket:
    command: 'yum install postgresql95-devel'
    leader_only: true

to my 02_django.config. After That it worked just fine.

到我的02_django.config。之后它工作得很好。