elastic deploy aws django amazon-web-services wsgi elastic-beanstalk django-wsgi

deploy - django aws database



Configuración de Django en AWS Elastic Beanstalk: WSGIPath no encontrado (5)

Hace varios días que intenté configurar Django en Elastic Beanstalk de Amazon Web Services. Creo que el problema que estoy golpeando es este:

ERROR - Your WSGIPath refers to a file that does not exist.

Seguí el tutorial here y todo va bien hasta el final del Paso 6, pero no puedo ver nada más que la página genérica Elastic Beanstalk del Paso 5, n. ° 2. Cuando corro

./manage.py runserver

en mi máquina local, todo funciona como debería, pero no puedo implementar esa página. Primero probé con un sitio pequeño de Django que escribí yo mismo. No funcionó, así que borré todo lo que había hecho y lo intenté nuevamente, eso no funcionó, así que borré todo eso y lo intenté de nuevo con una nueva instalación de django. Lo intenté un montón de veces jugando con cosas pequeñas, pero creo que me estoy perdiendo algo importante.

Agregué un archivo python.config como se describe en este tutorial .

Aquí está mi estructura de archivos:

-.git/ -.mysite/ -myapp/ -__init__.py -models.py -tests.py -views.py -mysite/ -__init__.py -settings.py -urls.py -wsgi.py -.ebextensions/ -python.config -manage.py -mysite.db -requirements.txt

Desde mi settings.py:

DATABASES = { ''default'': { ''ENGINE'': ''django.db.backends.sqlite3'', ''NAME'': ''mysite.db'', ''USER'': '''', ''PASSWORD'': '''', ''HOST'': '''', ''PORT'': '''', } }

Aquí está python.config:

container_commands: 01_syncdb: command: "django-admin.py syncdb --noinput" leader_only: true option_settings: - namespace: aws:elasticbeanstalk:container:python option_name: WSGIPath value: mysite/wsgi.py - option_name: DJANGO_SETTINGS_MODULE value: mysite.settings - option_name: AWS_SECRET_KEY value: <This is my secret key> - option_name: AWS_ACCESS_KEY_ID value: <This is my access key>

¿Hay algún otro lugar donde necesite definir mi WSGIPath? ¿Hay alguna forma de hacerlo a través de la consola de AWS? ¿Debería omitir EB por completo y usar EC2 directamente?


De here

El directorio ".ebextensions" debe estar en el directorio de nivel raíz de su aplicación, pero a partir del resultado del registro, el directorio está en el directorio "mysite / .ebextensions". Entonces, por ejemplo, después de seguir el tutorial de django en los documentos cuando ejecuta "git aws.push", su directorio raíz sería así:

. ├── .ebextensions │ └── python.config ├── .elasticbeanstalk │ ├── config ├── .git ├── .gitignore ├── manage.py ├── mysite │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── requirements.txt

En lugar de esto:

. └── mysite ├── .ebextensions ├── .elasticbeanstalk ├── .git ├── .gitignore ├── manage.py ├── mysite └── requirements.txt


Encuentra .elasticbeanstalk/optionsettings.your-app-name en el directorio raíz de tu aplicación. Busque WSGIPath y asegúrese de que sea la ruta que desea. Parece que su valor predeterminado es application.py .


Ok, esto es lo que funcionó para mí después de probar un millón de cosas. eb update ejecutar eb update para actualizar el entorno.

Así que asegúrese de que .elasticbeanstalk/optionsettings.whatever-env tenga configurado WSGIPath como lo desee y asegúrese de que .ebextensions/whatever.config tenga esto:

option_settings: - namespace: aws:elasticbeanstalk:container:python option_name: WSGIPath value: whatever/wsgi.py

Luego ejecuta eb update y debería funcionar. Recuerde que debe establecer el alias para asegurarse de que su comando eb realmente funcione. Por ejemplo:

alias eb="python2.7 ../AWS-ElasticBeanstalk-CLI-2.6.3/eb/linux/python2.7/eb"


Tuve el mismo problema ( "Tu WSGIPath se refiere a un archivo que no existe" ) y finalmente encontré una solución:

Nota: Al principio, estaba buscando en la dirección incorrecta, porque EB también mostraba este mensaje: Se produjo un error durante la compilación: Falló el comando 01_migrar. . Así que pensé que los archivos, incluido el * .config, estaban ubicados correctamente.


Tuve el mismo problema después de seguir los documentos de AWS al punto. Lo que hice para evitarlo fue inicializar una aplicación a través de la CLI de EB paso a paso, sin usar el comando instruido por los AWS (~ / ebdjango $ eb init -p python2.7 django-tutorial) y crear un entorno paso a paso también. Los pasos que tomé en EB CLI son los siguientes:

  1. Inicializar la aplicación
    1. eb init
    2. Seleccione una región predeterminada
    3. Ingrese el nombre de la aplicación (valor predeterminado utilizado al presionar enter)
    4. Confirmado que estoy usando Python
    5. Versión de Python seleccionada compatible con mi entorno local
    6. Configurar SSH
  2. Crear entorno
    1. eb create
    2. Ingrese el nombre del entorno (valor predeterminado utilizado al presionar enter)
    3. Ingrese el prefijo DNS CNAME (predeterminado utilizado al presionar enter)
    4. Seleccione un tipo de equilibrador de carga (seleccioné el clásico al ingresar 1)

Después de crear Environment, utilizo eb config para abrir el archivo de configuración de EB y confirmar que la ruta a mi WSGI es la que debería ser:

aws:elasticbeanstalk:container:python: NumProcesses: ''1'' NumThreads: ''15'' StaticFiles: /static/=static/ WSGIPath: path/to/wsgi.py

Si se realizan cambios, asegúrese de guardar el archivo y confirmar que todo esté al cuadrado ingresando eb open en su terminal para abrir una ventana del navegador utilizando el nombre de dominio especificado en los pasos anteriores.