Projet

Général

Profil

Développement à partir du squelette eoleflask (Ébauche)

Préparation de l'application:

  • installer le paquet python-eoleflask
  • cloner le dépot eole-skeletor
  • lancer le script: ./bootstrap-eoleflask-app.sh [monappli]

Cela prépare les fichiers nécessaires à une application flask pour EOLE dans le répertoire src/monappli:
le répertoire du module lui même: src/monappli
le fichier qui permettra d'activer l'application dans le serveur: src/monappli.conf

Lancer l'application:

  • créer un fichier src/monappli/static/index.html
  • lancer le script ./eoleflask-dev-server.py
  • ouvrir un navigateur à l'adresse http://localhost:8080/

Attention : en tant que developpeur, vous ne devez jamais installer le paquet (le .deb) de votre application sur votre machine de test. Si vous faites cela, le serveur de test ./eoleflask-dev-server.py vous présentera les fichiers du paquet et non plus les fichiers de développement. cf #5233

Développement de l'application:

  • Tout les fichiers de l'application se trouvent dans le répertoire src/:
    
            src/
            |-- monappli
            |   |-- __init__.py
            |   |-- static
            |   |   `-- index.html
            |   `-- views.py
            `-- monappli.conf
    
    
  • La logique de l'application se trouve dans le fichier src/monappli/views.py
  • Tous les fichiers statiques se trouvent dans src/monappli/static
  • La documentation Flask se trouve la: http://flask.pocoo.org/docs/

Intégration dans une machine de test:

-- A revoir/Étoffer

  • installer les paquets python-eoleflask et eole-flask-server
  • installer votre application avec un make install
  • activer votre application avec: /usr/share/eole/sbin/eflkctl enable monappli
  • relancer le serveur avec /etc/init.d/eoleflask restart
  • l'application est disponible à l'adresse http://[ip_machine_de_test]:7000/monappli

-- Fin de A revoir/Étoffer

Organisation du code de l'application (écriture en cours):

mettre la logique métier dans une lib.py et que le views soit juste le binding entre l’API rest et l’API python.
le lib.py devienne un paquet deb à part

Gestion des 2 instances flask

2 instances d'eoleflask sont mises en place avec des services différents :

Instance eoleflask

  • localhost:5000 (eventuellement, renommer le service eoleadmin pour plus de clarté)
  • sert eoleauth/genconfig et tourne dans le conteneur maitre

Instance eoleapps

  • localhost:10000
  • sert eoleauth et les applis web flask (EOP pour le moment) grace à un reverse proxy apache
  • possibilité de la désactiver (en mode expert, famille Eole-Flask)

Activation d'une application pour une instance

Les applications flask sont déclarées en déposant leur conf dans le dossier dédié : /etc/eole/flask/available

On peut les activer avec le script eflkctl. L'activation consiste à créer un lien symbolique dans le dossier enabled correspondant à l'instance voulue ou bien au niveau global (cas de eoleauth).

  • Exemple pris sur le conteneur web d'un AmonEcole :
    /etc/eole/flask/
    ├── available
    │   ├── eoleauth.conf
    │   └── eop.conf
    ├── enabled
    │   └── eoleauth.conf -> /etc/eole/flask/available/eoleauth.conf
    ├── eoleapps
    │   ├── available
    │   └── enabled
    │       └── eop.conf -> /etc/eole/flask/available/eop.conf
    ├── eoleapps.conf
    
  • Exemple d'activation d'eolegenconfig dans l'instance eoleadmin
    1. eflkctl enable eolegenconfig eoleadmin
    2. service eoleflask restart
  • Exemple pour rendre eop accessible dans l'instance eoleapps:
    1. eflkctl enable eop eoleapps
    2. service eoleapps restart

Configuration d'un préfix pour les applications web derrière un reverse proxy

Pour les applications web passant par le reverse proxy, il est possible de rajouter un mount point avec le préfix correspondant au nom de l'instance (eoleapps pour eop par exemple).

  • Exemple de conf d'EOP :
    cat /etc/eole/flask/available/eop.conf 
    {
    "APPNAME":"eop",
    "MOUNT_POINT":"/eop",
    "PREFIX":"true",
    
    "EOP":"EOP",
    "EOLE":"Équipe EOLE",
    
    "UPLOAD_FOLDER":"/tmp",
    "CHEMIN_DEV":"tempfiledir",
    "CHEMIN_DATA":"tempdatadir",
    
    "EOLEAUTH_MODE":"LOCAL",
    "EOLEAUTH_PLUGIN":"CASClient",
    
    "CAS_URL":"https://amonecole.etb3.ac-test.fr:8443/",
    "CONTROLEVNC_URL":"http://192.0.2.52:8788",
    "SERVER_SMTP":"192.0.2.51" 
    }