proyecto - python en aplicaciones web
Requirements.txt no válido en la implementación de la aplicación django en aws beanstalk (5)
¿Te has asegurado mysql-devel
paquete mysql-devel
esté instalado? No parece estar incluido en la sección yum
de su archivo de configuración.
He estado implementando mi aplicación sin ningún problema en el entorno de beanstalk hasta mi último compromiso.
Ahora entiendo esto
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 .
Los registros de instantáneas dicen esto:
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
Mis requisitos.txt son los mismos que antes. También intenté eliminar todo lo que estaba en el archivo Requirements.txt, pero recibí el mismo error, lo que me hace pensar que el problema era antes de que se ejecutara el archivo.
No sé el orden en que se despliegan las cosas. De todos modos, aquí está mi archivo de configuración:
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
Aunque es un escenario diferente al descrito por el OP, puede ser útil para alguien:
Conseguimos el mismo ERROR Your requirements.txt is invalid. Snapshot your logs for details.
ERROR Your requirements.txt is invalid. Snapshot your logs for details.
mientras intenta implementar una aplicación de prueba mínima en una instancia t1.micro
recién creada en Elastic Beanstalk.
La aplicación de prueba consistió en la aplicación de muestra básica de AWS Python ( desde aquí ), a la que agregamos .ebextensions/software.config
y .ebextensions/software.config
de nuestro entorno de producción. El único propósito era probar estos dos archivos en la implementación.
Una inspección más MemoryError
de los registros descubrió un MemoryError
durante la pip install
. Después de actualizar a una instancia de t2.small
, la implementación se realizó sin problemas.
Por la razón que sea, AWS no instalaría postgresql-devel
paquetes postgresql-devel
de mis .extensions/01_packets.config
como sugiere la yema. Así que en vez tuve que agregar
container_commands:
01_addPostgreSQLPacket:
command: ''yum install postgresql95-devel''
leader_only: true
a mi 02_django.config
. Después de eso funcionó bien.
Pude hacer este trabajo agregando postgresql93-devel
y postgresql93
a mis .ebextensions
como se describe en Personalización del software en instancias de EC2 que ejecutan Linux
Esto funciona para 64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7
en .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''
Tuve exactamente el mismo problema. Lo único que funcionó para mí fue (automáticamente) la reconstrucción de todo mi entorno. Puedes hacerlo en la consola de AWS. Vaya a su entorno y haga clic en Acciones> Reconstruir entorno. Esto llevará algún tiempo, luego relanzará automáticamente su aplicación sin este error.
Actualizar:
El problema sigue volviendo de vez en cuando. Me di cuenta de que algo va mal cuando pip compila psycopg
, que es necesario para el soporte postgreSQL. Todavía no he encontrado una solución real.