Skip to content

GLUD/SLUD-backend

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SLUD_API

Backend para la SEMANA LINUX. Es una API REST para comunicar en datos JSON. Se complementa con el frontend

Ej:

Petición:

$ curl -X GET http://sludapi.glud.org/api/speakers/

Respuesta:

[{"nombre":"Tux","trabajo":"Mascota del Kernel Linux","foto":"https://upload.wikimedia.org/wikipedia/commons/a/af/Tux.png", "prioridad": "0"}]

No olvidar el último '/' en la petición

Uso

Local

Se ha configurado la API para que utilize variables de entorno para las contraseñas y el host público (ya que las contraseñas no deberían publicarse en Github). Se recomienda usar un archivo .env (que es ignorado por git gracias a .gitignore) para guardar las variables de entorno así:

## ej. ./misconfiguraciones.env
export SECRET_KEY='contraseña super segura'
export PUBLIC_HOST='localhost' # ej. sludapi.glud.org
export ADMIN_USER='admin'
export ADMIN_PASSWORD='secreto'
#...

y usarlo de esta manera:

$ source ./misconfiguraciones.env # archivo de variables de entorno
$ ./run.sh # Para hacer las migraciones, crear el usuario administrador y ejecutar el servidor.

Ó se puede manualmente:

$ mkdir data # necesario para la base de datos
$ source ./misconfiguraciones.env # archivo de variables de entorno
$ python manage.py createsuperusper #crea el usuario administrativo interactivamente
$ python manage.py makemigrations # crear migraciones
$ python manage.py migrate # aplica migraciones
$ python manage.py collectstatic # crea el directorio ./static para los archivos estáticos
$ python manage.py runserver 0.0.0.0:8000 # ejecuta el servidor en el puerto :8000

Docker

Se puede usar docker para administrar el backend:

$ docker run -p "8000:8000" \
	-e SECRET_KEY="super secreto" \
	-e PUBLIC_HOST="sludapi.glud.org" \
	-e ADMIN_USER="admin" \
	-e ADMIN_PASSWORD="secreto" \
	-e ADMIN_EMAIL="[email protected]" glud/slud-backend:latest

O Docker swarm con el archivo docker-stack.yml de ejemplo para ejecutar el frontend y el backend:

$ docker swarm init # si no se ha hecho antes
$ docker stack deploy -c docker-stack.yml slud

Variables de entorno:

Las variables de entorno generales son:

  • SECRET_KEY (obligatorio, Para la contraseña de la API).
  • PUBLIC_HOST (obligatorio, para autorizar el host público en /admin)

Para docker/run.sh, las variables de entorno adicionales son:

  • ADMIN_USER (usuario para la interfaz /admin, default:root)
  • ADMIN_PASSWORD (contraseña del usuario administrador, obligatorio si no se está usando ADMIN_PASSWORD_FILE)
  • ADMIN_PASSWORD_FILE (archivo que contiene la contraseña para el usuario administrador, obligatorio si no se está usando ADMIN_PASSWORD, tiene prioridad frente a ADMIN_PASSWORD).
  • ADMIN_EMAIL (obligatorio, email del usuario administrador)

TODO

  • hacer que Django sirva archivos estáticos en /admin/ (se logró con el plugin whitenoise)
  • hacer equivalente /api/ a /api//
  • responder en /api/speakers/ con el campo prioridad adicional

Releases

No releases published

Packages

No packages published

Languages

  • Python 91.0%
  • Shell 6.4%
  • Dockerfile 2.6%