ar_redadeg/api
2021-04-06 21:32:05 +02:00
..
api_redadeg.ini API init 2021-04-05 23:09:54 +02:00
api_redadeg.py Update api_redadeg.py 2021-04-06 21:32:05 +02:00
api_redadeg.service API init 2021-04-05 23:09:54 +02:00
README.md API init 2021-04-05 23:09:54 +02:00
test.sh API : test.sh route 2021-04-05 23:22:05 +02:00
wsgi.py API init 2021-04-05 23:09:54 +02:00

API Ar Redadeg

À propos

Cette API sert à :

  • lancer les scripts de traitements des données
  • accéder à des informations sur les les traitements

API Flask copiée depuis https://github.com/MaelREBOUX/simple_flask_api

Installation

Installer les paquets requis

sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev libpcre3 libpcre3-dev python3-setuptools

Créer un environnement virtuel Python

cd api
python3 -m venv venv
. venv/bin/activate
pip install flask uwsgi

Tester

python3 hello.py

Vérifier que l'on obtient bien quelque chose en allant sur la page http://localhost:5000/

Faire ctrl + C pour arrêter.

Tester uWSGI

On teste maintenant si uWSGI et le socket fonctionnent bien en utilisant le fichier de configuration api_redadeg.ini :

uwsgi --ini api_redadeg.ini

aire ll /tmp/api_redadeg* pour voir si le socket a bien été créé par www-data.

Tester si on obtient bien toujours quelque chose sur la page https://ar-redadeg.openstreetmap.bzh/api/

À ce stade tout est fonctionnel mais il faut maintenant créer un daemon pour ne pas avoir une commande uwsgi dans le shell.

Sortir du mode venv en tapant : deactivate.

Configurer nginx

On rajoute les directives suivantes au fichier de conf nginx

    location = /api { rewrite ^ /api/; }
    location /api { try_files $uri @api; }
    location @api {
      include uwsgi_params;     
      uwsgi_pass unix:/tmp/api_redadeg.sock;
    }

On recharger la configuration de nginx : sudo service nginx reload.

Tester si on obtient bien toujours quelque chose sur la page https://ar-redadeg.openstreetmap.bzh/api/

À ce stade tout est fonctionnel mais il faut maintenant créer un daemon pour ne pas avoir une commande uwsgi dans le shell.

Sortir du mode venv en tapant : deactivate.

Configurer un socket spécifique permanent sur la machine

cp api_redadeg.service /etc/systemd/system/

On n'oublie pas de mettre les permissions au serveur web sur les fichiers :

chown -R www-data:www-data /data/projets/ar_redadeg/api/

Et on crée le répertoire pour les logs (en option) :

mkdir -p /var/log/uwsgi/

Lancer et tester le service :

# enable
sudo systemctl enable api_hello
# start
sudo systemctl start api_hello
# check
sudo systemctl status api_hello

Faire ll /tmp/api_redadeg* pour voir si le socket a bien été créé par www-data.

Tester si on obtient bien toujours un "Hello There" sur la page http://localhost/hello/

Si on veut supprimer le service :

systemctl stop api_redadeg
systemctl disable api_redadeg
rm /etc/systemd/system/api_redadeg.service
systemctl daemon-reload
systemctl reset-failed