Implementando Django con AWS

Así que estoy tratando de implementar mi aplicación django (que en su mayoría tiene Apis REST), pero cuando uso Amazon CLI, termino teniendo la instancia de Fedora , aunque quiero usar la instancia de Ubuntu .

Así que traté de hacer esto, hice una instancia de ubuntu, hice un repository de mi código, instalé git en ubuntu y cloné el código de git a ubuntu. A continuación, instalé todas las dependencies de requirements.txt y todo está en virtualenv y funciona bien.

Pero aquí está la python manage.py runserver , python manage.py runserver ejecuta en localhost (no es realmente sorprendente). Entonces la pregunta es, ¿cómo servir esas API (no en el server local)?

No use el command runserver en producción. Está destinado solo para el desarrollo local.

En producción, necesita configurar un server de aplicaciones (uwsgi / gunicorn) y luego usar nginx como proxy inverso.

Los artículos de Digital Ocean son bastante buenos – https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-14-04

(Lo mismo se aplica para AWS también)

Como se menciona en la otra respuesta, el command runserver solo está destinado al desarrollo local. De hecho, puede hacerlo escuchar en interfaces externas ejecutándolo como python manage.py runserver 0.0.0.0:8000 , pero es una mala idea. Configurar nginx + uwsgi para ejecutar una aplicación Django es muy fácil. Hay múltiples tutoriales y guías disponibles para esto. Aquí está la guía oficial de uWSGI http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

NO use el server de desarrollo django en producción. No está construido para ese uso.

En su lugar, use algo como beanstalk elástico que lo ayudará a implementar aplicaciones de django escalables lists para usar. Aquí hay un buen tutorial paso a paso para eso: https://www.trysudo.com/deploying-django-app-on-aws-using-elastic-beanstalk/