NOTA Los siguientes pasos debe ejecutarlos desde su entorno local o desde la instancia en la cual va a configurar su servidor.
$ git clone https://github.com/juanis2112/capstone2020
Primero debe acceder a la carpeta de su repositorio ejecutando:
$ cd capstone
Para acceder a la rama con el release final de la aplicación debe ejecutar:
$ git checkout final
Para organizar las librerias necesarias de Python, debe crear un ambiente de conda con python.
$ conda create -n capstone python=3.7
$ conda activate capstone
Para Linux puede usar virtualenv
en vez de Conda.
$ mkvirtualenv capstone
$ workon capstone
Después de crear el ambiente, debe instalar las dependecias, las cuales se encuentran todas en el archivo de requirements.txt
$ conda install --file requirements.txt
Si esta usando pip
y virtualenv
corra:
$ pip install -r requirements.txt
Para generar la base de datos de la aplicación es necesario contar con PostgreSQL y pgAdmin4 y generar una base de datos con nombre capstone
desde pgAdmin4 o la terminal.
Para que la conexión con su base de datos sea exitosa, debe abrir el archivo Epsilon/App.py
de su repositorio y reemplazar los strings que corresponden "user" y "password", por su usuario y contraseña correspondientes a su base de datos.
Para ejecutar la aplicación, debe ubicarse en la carpeta Epsilon:
$ cd Epsilon
Primero, es necesario correr el archivo ML.py
para actualizar los modelos de machine learning:
$ python ML.py
Ahora debe correr la aplicación desde el repositorio:
$ python App.py
Si su ejercución fue exitosa, aparecerá el siguiente mensaje en la terminal
Running on http://127.0.0.1:2000/
Ahora debe copiar esta dirección en su porta papeles y péguelo en cualquier navegador para abrir la aplicación.
Debe ingresar a la página de AWS con su cuenta. Estando en la consola de AWS, debe buscar el servicio de EC2 en donde encontrará a mano izquierda la opción instancias
, la cuál lo llevara a la consola de instancias que tenemos en el momento. Para su nuestra instancia debe presionar el botón Launch Instance
.
A continuación debe elegir las caracteristicas de su instancia, las cuales deberían cumplir con los requerimientos necesarios para alojar su aplicación. Como recomnedanción puede considerar las siguientes caracteristicas:
- Choose an Amazon Machine Image: Ubuntu server 18.04 LTS
- Choose an Instance Type: t2.micro (Free tier eligible)
- Configure Instance Details: Dejar configuración por defecto.
- Add Storage: Configurar el tamaño de la instancia a 8 GIB.
- Add Tags: Dejar configuración por defecto.
- Configure Security Group: Configurar el puerto SSH para su instancia.
- Review: Revisar las caracteristicas que se han seleccionado anteriormente para luego lanzar la instancia.
Una vez que se halla creado su instancia debe proceder a configurar su llave de acceso, la cual será un archivo con extensión .pem
. Dependiendo del sistema operativo que se encuentre utilizando, la conexión con la instancia se realiza de manera diferente. Si se utiliza Windows deberá utilizar la herramienta putty para conectarse a la instancia. Por otro lado, si utiliza una distribución de linux deberá ejecutar el siguiente comando en la terminal:
$ ssh -i "PATH del archivo.pem" ubuntu@"Public DNS (IPv4)"
NOTA Antes de ejecutar el comando anterior debe asegurarse que su archivo cuente con los permisos correspondientes. Para ello ejecute el comando:
$ chmod 400 "PATH/DEL/ARCHIVO.pem"
Cabe resaltar que el Public DNS (IPv4)
es una dirección única y en la cual la podrá encontrar en las características de la instancia creada.
Para tener acceso a su instancia por medio de una dirección IP debe crear una IP pública. En la consola de EC2 debe dirigirse a mano izquierda a la opción Direcciones IP elástica
, en donde encontrará el botón Asignar ip elástica
. Despúes debe seleccionar Grupo de direcciones IPv4 de Amazon
y posteriormente asignar
. Para finalizar el emparejamiento con la IP elástica y nuestra instancia, debe seleccionar en la casilla de acciones la opción de asociar la dirección ip elástica
, en donde debe seleccionar su instancia ya creada.
El servidor web a utilizar sera nginx, el cual se puede instalar con el siguiente comando
$ sudo apt update
$ sudo apt install nginx
Para la configuración del servidor web debe ingresar a la siguiente carpeta y crear un archivo llamado Epsilon
:
$ cd /etc/nginx/sites-enabled/
$ sudo vim Epsilon
A continuación debe colocar la siguiente configuración a este archivo
server {
listen 80 default_server;
server_name Ip elástica de la instancia;
location /{
proxy_pass http://127.0.0.1:8000;
}
}
Ahora debe proceder a la instalación de gunicron3 el cual le permitirá realizar la conexión entre el servidor instalado anteriormente y la instancia de AWS. Debe ejecutar el siguiente comando
$ sudo apt update
$ sudo apt install gunicorn3
Teniendo su archivo de la aplicación ya configurado podrá realizar la activación del servidor y la ejecución del programa con los siguientes comandos
$ sudo systemctl start nginx
$ cd Epsilon
$ gunicorn3 ML:app
$ gunicorn3 App:app
La ejecución del gunicorn 3 debe realizarse en la carpeta en donde se encuentra el archivo de flask.
NOTA La aplicación ya se encuentra corriendo en una instancia con la siguiente dirección: http://54.225.233.22/