Servidores a mil, a como, a mil

Rodrigo Zarate Algecira
5 min readFeb 6, 2022

--

Docker + Visualcode = éxito.

Resulta que en Docker están montados muchas de las imágenes de los servidores en los que se prueban los proyectos.

De hecho también están en Github, de manera que uno puede montar un entorno exacto al que se usa para correr el famoso “checker” y se evita uno horas de configuración de servidor.

La imagen que use fue la que se encuentra en:
https://hub.docker.com/r/holbertonschool/ubuntu-1604-python35

  • Ubuntu 16.04
  • Python 3.5
  • MySQL 5.7
  • SQLAlchemy
  • SSH started

Es la base para trabajar el proyecto 0x05. AirBnB clone — RESTful API

Obvio, hay que aprender a manejar Docker, crear una cuenta, etc, pero eso demora mucho menos que tratar de adivinar cual será el paquete correcto que cuadra con todas las otras dependencias (muchas veces obsoletas) que se requieren para los proyectos.

Usando los scripts de los proyectos se monta la BD

El proceso requiere una base de conocimiento, pero es mucho más rápido de ejecutar que tratando de hacerlo desde cero.

Para eso están las imágenes de los servidores, para usarlas.

Bueno y anuncié visualcode y hasta ahora sólo he usado bash, o bueno mas bien zhs porque trabajo desde un MAC, pero ya vamos a eso.

Sigo en shz un rato mientras hago la configuración básica:

  • Configurar la BD

Encender MYSQL

service mysql start

Por si se preguntan cual es la contraseña del usuario root, es también root obvio eso no sirve en un ambiente de producción, ojo con eso, las contraseñas deben ser seguras. Ya estando las BD creadas y los usuarios podemos probar el código.

  • Probar si el código base corre (debug testing básico)

Si lo pruebas antes de cambiar de rama verás una salida así:

Primero hay que cambiar de rama, vamos a storage_get_count

Instalación del entorno virtual

Si bien no es algo necesario, si es recomendable trabajar las dependencias y los entornos de manera encapsulada, la imagen no tenía instalado FLASK ni VENV que es lo que sigue en el proyecto, de manera que antes de continuar, que lo podría hacer porque igual es un contenedor de DOCKER, quiero ejectuar la buena practica de crear un entorno virtual para python.

#Install venv
apt-get update
apt-get install python3-venv

Luego de instalado creamos una carpeta en donde quedará almacenado nuestro entorno virtual, en este caso usaré la carpeta en la que quedó descargado el repositorio del proyecto.

Estando ahí dentro de esa carpeta (AirBnB_clone_v3) en este caso, ejecutamos python3 -m venv airvenv

Luego explorare lo que creamos sólo por curiosidad.

Verificamos que pip3 este instalado usando pip3 --version

Ahora activaremos el entorno virtual

. airvenv/bin/activate

Eso debería cambiar el prompt para mostrar el el nombre del entorno virtual entre paréntesis (airvenv) una manera de saber que estamos en ese entorno.

Ahora si instalaremos Flask que lo pueden obtener de aquí:
https://flask.palletsprojects.com/en/2.0.x/installation/

pip3 install Flask==1.1.1

Ahora sí, a trabajar en el proyecto desde visualcode.

Bueno, no aún no, todavía falta revisar que python tenga los modulos correctos en la versión correcta. Para eso usamos pip3 freeze este comando nos mostrará los módulos instalados y sus versiones respectivas

Se debe comparar con los paquetes instalados y sus versiones del sandbox del respectivo proyecto. Esto para garantizar que funcione como se espera.

Si bien voy a mantener python 3.5 en lugar de 3.4.3 como está en el sandbox y usaré ubuntu 16.04 y no 14.04 creo que podré dejar el entorno muy similar, o que al menos corra.

Yo diría que pasa, debí corregir la versión de muchos de los paquetes y también incluso borrar algunos para que funcionara, ejemplo :

pip3 uninstall dataclasses

Logré que al menos corriera sin generar conflictos, entre la versión 3.4.3 y la 3.5 hay cambios por ejemplo en la interpretación de los formatos de impresion en pantalla y eso tan sencillo puede romper el código.

f’name={self.name!r},’ ya no esta soportado y se debe usar la sintaxis print("Let's talk about {}.".format(my_name))

No hay tiempo para reescribir los paquetes y además ya hay muchos reescritos para cada versión, entonces se hace el ajuste fino y probamos.

Perfecto, ahora si conecta.

--

--

Rodrigo Zarate Algecira

In the path of Programming #AgriculturaUrbana $rodrigozarate Instagram: agromerlin