2021-03-29 22:15:25 +00:00
|
|
|
|
|
|
|
# API Ar Redadeg
|
|
|
|
|
|
|
|
|
|
|
|
## À propos
|
|
|
|
|
2021-04-05 13:08:58 +00:00
|
|
|
Cette API sert à :
|
|
|
|
* lancer les scripts de traitements des données
|
|
|
|
* accéder à des informations sur les les traitements
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
API Flask copiée depuis [https://github.com/MaelREBOUX/simple_flask_api
|
|
|
|
](https://github.com/MaelREBOUX/simple_flask_api)
|
2021-03-29 22:15:25 +00:00
|
|
|
|
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
## Installation
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
### Installer les paquets requis
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 13:08:58 +00:00
|
|
|
```bash
|
2021-04-05 13:48:37 +00:00
|
|
|
sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev libpcre3 libpcre3-dev python3-setuptools
|
2021-04-05 13:08:58 +00:00
|
|
|
```
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
### Créer un environnement virtuel Python
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 13:08:58 +00:00
|
|
|
|
|
|
|
```bash
|
|
|
|
cd api
|
|
|
|
python3 -m venv venv
|
|
|
|
. venv/bin/activate
|
|
|
|
pip install flask uwsgi
|
|
|
|
```
|
|
|
|
|
|
|
|
Tester
|
|
|
|
|
|
|
|
```bash
|
|
|
|
python3 hello.py
|
|
|
|
```
|
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
Vérifier que l'on obtient bien quelque chose en allant sur la page http://localhost:5000/
|
2021-04-05 13:08:58 +00:00
|
|
|
|
|
|
|
Faire `ctrl + C` pour arrêter.
|
|
|
|
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
## Tester uWSGI
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
On teste maintenant si uWSGI et le socket fonctionnent bien en utilisant le fichier de configuration ```api_redadeg.ini``` :
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 13:08:58 +00:00
|
|
|
```bash
|
2021-04-05 21:09:54 +00:00
|
|
|
uwsgi --ini api_redadeg.ini
|
2021-04-05 13:08:58 +00:00
|
|
|
```
|
2021-03-29 22:15:25 +00:00
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
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/](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```.
|
|
|
|
|
|
|
|
|
2021-03-29 22:15:25 +00:00
|
|
|
|
|
|
|
### Configurer nginx
|
|
|
|
|
|
|
|
On rajoute les directives suivantes au fichier de conf nginx
|
|
|
|
|
2021-04-05 13:08:58 +00:00
|
|
|
```
|
2021-04-05 21:09:54 +00:00
|
|
|
location = /api { rewrite ^ /api/; }
|
|
|
|
location /api { try_files $uri @api; }
|
|
|
|
location @api {
|
|
|
|
include uwsgi_params;
|
|
|
|
uwsgi_pass unix:/tmp/api_redadeg.sock;
|
2021-03-29 22:15:25 +00:00
|
|
|
}
|
2021-04-05 13:08:58 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
On recharger la configuration de nginx : ```sudo service nginx reload```.
|
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
Tester si on obtient bien toujours quelque chose sur la page [https://ar-redadeg.openstreetmap.bzh/api/](https://ar-redadeg.openstreetmap.bzh/api/)
|
2021-04-05 13:08:58 +00:00
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
À ce stade tout est fonctionnel mais il faut maintenant créer un daemon pour ne pas avoir une commande uwsgi dans le shell.
|
2021-04-05 13:08:58 +00:00
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
Sortir du mode venv en tapant : ```deactivate```.
|
2021-04-05 13:08:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
### Configurer un socket spécifique permanent sur la machine
|
|
|
|
|
|
|
|
```bash
|
2021-04-05 21:09:54 +00:00
|
|
|
cp api_redadeg.service /etc/systemd/system/
|
2021-04-05 13:08:58 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
On n'oublie pas de mettre les permissions au serveur web sur les fichiers :
|
|
|
|
|
|
|
|
```bash
|
|
|
|
chown -R www-data:www-data /data/projets/ar_redadeg/api/
|
|
|
|
```
|
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
Et on crée le répertoire pour les logs (en option) :
|
2021-04-05 13:08:58 +00:00
|
|
|
|
|
|
|
```bash
|
|
|
|
mkdir -p /var/log/uwsgi/
|
|
|
|
```
|
|
|
|
|
|
|
|
Lancer et tester le service :
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# enable
|
2021-04-06 19:41:45 +00:00
|
|
|
sudo systemctl enable api_redadeg
|
2021-04-05 13:08:58 +00:00
|
|
|
# start
|
2021-04-06 19:41:45 +00:00
|
|
|
sudo systemctl start api_redadeg
|
2021-04-05 13:08:58 +00:00
|
|
|
# check
|
2021-04-06 19:41:45 +00:00
|
|
|
sudo systemctl status api_redadeg
|
2021-04-05 13:08:58 +00:00
|
|
|
```
|
|
|
|
|
2021-04-05 21:09:54 +00:00
|
|
|
Faire ```ll /tmp/api_redadeg*``` pour voir si le socket a bien été créé par www-data.
|
2021-04-05 13:08:58 +00:00
|
|
|
|
2021-04-06 19:41:45 +00:00
|
|
|
Tester si on obtient bien toujours un "Hello There" sur la page https://ar-redadeg.openstreetmap.bzh/api/
|
2021-04-05 13:08:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
Si on veut supprimer le service :
|
|
|
|
|
|
|
|
```bash
|
2021-04-05 21:09:54 +00:00
|
|
|
systemctl stop api_redadeg
|
|
|
|
systemctl disable api_redadeg
|
|
|
|
rm /etc/systemd/system/api_redadeg.service
|
2021-04-05 13:08:58 +00:00
|
|
|
systemctl daemon-reload
|
|
|
|
systemctl reset-failed
|
|
|
|
```
|