Skip to main content

PARTE V - LANZAR SERVICIOS

Pautas​

Las siguientes indicaciones son aplicables tanto para webserver (sistema de autenticación y registro de usuarios), como para el servicio de lectura de qr (en caso de tener servicios separados).

danger

ES OBLIGATORIO LANZAR EL SERVICIO DE WEBSERVER, NOTIFYSERVER Y EN EL CASO DE TENER QR, QRSERVER

warning

Si durante el transcurso de las operaciones son necesarios cambios en el código, realizarlos y sincronizar con el repositorio github. Ejecutar la sincronización entre servidor y repositorio con el comando git pull

RAMA EN GIT​

Antes de empezar crear una rama basada en master, con el nombre de release:

nueva rama

Asegúrate de cambiar a esa rama, para que los cambios no afecten a los cambios locales.

Anular tunel ssh​

Dado que vamos a trabajar en el mismo servidor donde se encuentra la base de datos, no es necesario establecer ningún tunel.

Elimina la conexión al tunel, e indica el puerto de la base de datos como 5432

Generar archivo requeriments.txt con las dependencias:​

Ejecuta el siguiente comando en la consola de Pycharm: pip freeze > requirements.txt

Este archivo contiene una lista de comandos pip que instalan las versiones necesarias de paquetes dependientes para el proyecto.

Abre el archivo y verifica que el paquete psycopg2 que es el que se encarga de conectar con la base de datos, sea psycopg2-binary==2.9.10 (sustituye si es necesario por ese paquete)

Indicar certificado​

Sustituye la línea app.run() por estas otras:

context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)

context.load_cert_chain('/root/home/certs/cerciapps_sytes_net.pem', '/root/home/certs/erciapps.key')

app.run(ssl_context=context, host='0.0.0.0', port=5001, debug=True)

Revisa el puerto para cada caso (webserver:5001, camaraqr:5002)

Subir cambios​

Sincroniza los cambios haciendo clic derecho sobre la nueva rama, y seleccionando push

push

Acceder al servidor​

Accede a la consola de tu servidor en Proxmox. Para ello lo puedes realizar desde el servidor linux, e indicando la ip: https://192.168.88.99:8006
El nombre de usuario es tu identificador dam, y la contraseña es el dni con letra mayúscula. En Realm selecciona Proxmox VE
Si no te permite acceder pulsa las teclas control+F5

Ejecutar comandos para lanzar app​

Abre la consola de tu servidor y ejecuta los siguientes comandos de forma ordenada.

Actualiza la lista de paquetes disponibles en los repositorios.​

apt update

Instala las versiones más recientes de los paquetes instalados.​

apt upgrade

Instala Git, el sistema de control de versiones.​

apt install git

Instala el módulo para crear entornos virtuales en Python 3.10​

apt install python3.10-venv

Configura Git para guardar las credenciales de forma permanente en el sistema.​

git config --global credential.helper store
warning

Necesario crear un token de acceso en github (seguir instrucciones en clase)

Clona el repositorio en la rama 'realease' desde GitHub.​

git clone -b release <ruta a tu repositorio github>

Cambia al directorio del usuario, crea un directorio 'venvs', entra en él y crea un entorno virtual llamado 'webserver_env' (en el caso del servidor web)​

cd
mkdir venvs
cd venvs
python3.10 -m venv webserver_env

Activa el entorno virtual 'webserver_env'.​

source webserver_env/bin/activate

Desplázate a tu directorio donde has clonado el servidor (en este caso webserver)

Instala las dependencias listadas en el archivo 'requirements.txt'

pip install -r requirements.txt

Para probar si funciona el programa ejecutando python main.py.

Entra en la configuración de tu router pfsense, y crea una redirección de tu segundo puerto asignado, a tu máquina al puerto 5001 (en el caso de webserver).

warning

Se debe realizar esta operación tanto para webserver, como qr.

Crear servicio​

Crea un archivo de configuración para el servicio en /etc/systemd/system/​

sudo nano /etc/systemd/system/webserver.service

Añade el siguiente contenido al archivo, ajustando los valores según tu configuración:​

[Unit]
Description=Web Server Python App
After=network.target

[Service]
User=root
WorkingDirectory=/root/webserver
ExecStart=/root/venvs/webserver_env/bin/python /root/webserver/app.py
Restart=always
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target

danger

AJUSTAR A TUS RUTAS Y NECESIDADES

Ejecuta los siguientes comandos para recargar la configuración de systemd y habilitar el servicio para que se inicie automáticamente al arrancar el sistema:​

sudo systemctl daemon-reload
sudo systemctl enable webserver.service

Arranca el servicio por primera vez:​

sudo systemctl start webserver.service

Verificar el estado del servicio:​

sudo systemctl status webserver.service