Wiki » Historique » Version 22
Version 21 (Lionel Morin, 26/09/2014 12:19) → Version 22/25 (Lionel Morin, 26/09/2014 15:04)
h1. Développement à partir du squelette eoleflask (Ébauche)
h2. 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*
h2. 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
h2. Développement de l'application:
* Tout les fichiers de l'application se trouvent dans le répertoire src/:
<pre>
src/
|-- monappli
| |-- __init__.py
| |-- static
| | `-- index.html
| `-- views.py
`-- monappli.conf
</pre>
* 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/
h2. 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*
h2. 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
h2. Gestion des 2 instances flask
2 instances d'eoleflask sont mises en place avec des services différents : différents:
h3. Instance eoleflask
* localhost:5000 (eventuellement, renommer le service eoleadmin pour plus de clarté)
* sert eoleauth/genconfig et tourne dans le conteneur maitre
h3. Instance eoleapps
* localhost:10000
* sert eoleauth et les applis web flask (EOP pour le moment) grace mais n'est pas accessible à un reverse proxy apache
* possibilité l'extérieur via nginx
genconfig est accessible dans les deux instances du fait qu'il est 'enabled' au niveau du répertoire /etc/eole/flask/enabled qui est commun à toutes les instances
pour terminer la séparation, il faut le désactiver et le réactiver seulement au niveau de /etc/eole/flask/eoleadmin/enabled/ de la désactiver (en mode expert, famille Eole-Flask) manière suivante:
h3. Activation d'une application pour une instance
* Exemple d'activation d'eolegenconfig dans l'instance eoleadmin
# eflkctl enable eolegenconfig *eoleadmin*
# service eoleflask restart
* Exemple pour rendre eop accessible dans l'instance eoleapps:
# eflkctl enable eop *eoleapps*
# service eoleapps restart
il manquera ensuite à :
* activer la configuration nginx d'eoleapps (déjà livrée dans /etc/nginx/sites-available)
* ajouter une règle d'accès pour rendre eoleapps accessible de l'extérieur (nginx sert l'instance sur le port 3000)
pour limiter les risques de problèmes:
* mettre une dépendance sur la version d'eole-flask-server pour pouvoir utiliser eflkctl avec un nom d'instance (paquets eole-genconfig et eole-eop)
* vérifier que les ports choisis pour eoleapps sont convenables (10000 sur localhost pour flask, 3000 pour nginx)
décisions restant à prendre sur le fonctionnement:
* lancement par défaut ou non de l'instance eoleapps (pour l'instant les 2 sont toujours lancés sur localhost)
* ajouter une question dans applications web pour activer eoleapps via nginx dans le dictionnaire d'eoleflask ?
* voir si des améliorations sont à prévoir sur eflkctl
attention au dépendances avec d'autres variables (activation d'eop forcée à non quand eoleapps n'est pas accessible via nginx ?)
PREFIX
h2. 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*
h2. 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
h2. Développement de l'application:
* Tout les fichiers de l'application se trouvent dans le répertoire src/:
<pre>
src/
|-- monappli
| |-- __init__.py
| |-- static
| | `-- index.html
| `-- views.py
`-- monappli.conf
</pre>
* 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/
h2. 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*
h2. 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
h2. Gestion des 2 instances flask
2 instances d'eoleflask sont mises en place avec des services différents : différents:
h3. Instance eoleflask
* localhost:5000 (eventuellement, renommer le service eoleadmin pour plus de clarté)
* sert eoleauth/genconfig et tourne dans le conteneur maitre
h3. Instance eoleapps
* localhost:10000
* sert eoleauth et les applis web flask (EOP pour le moment) grace mais n'est pas accessible à un reverse proxy apache
* possibilité l'extérieur via nginx
genconfig est accessible dans les deux instances du fait qu'il est 'enabled' au niveau du répertoire /etc/eole/flask/enabled qui est commun à toutes les instances
pour terminer la séparation, il faut le désactiver et le réactiver seulement au niveau de /etc/eole/flask/eoleadmin/enabled/ de la désactiver (en mode expert, famille Eole-Flask) manière suivante:
h3. Activation d'une application pour une instance
* Exemple d'activation d'eolegenconfig dans l'instance eoleadmin
# eflkctl enable eolegenconfig *eoleadmin*
# service eoleflask restart
* Exemple pour rendre eop accessible dans l'instance eoleapps:
# eflkctl enable eop *eoleapps*
# service eoleapps restart
il manquera ensuite à :
* activer la configuration nginx d'eoleapps (déjà livrée dans /etc/nginx/sites-available)
* ajouter une règle d'accès pour rendre eoleapps accessible de l'extérieur (nginx sert l'instance sur le port 3000)
pour limiter les risques de problèmes:
* mettre une dépendance sur la version d'eole-flask-server pour pouvoir utiliser eflkctl avec un nom d'instance (paquets eole-genconfig et eole-eop)
* vérifier que les ports choisis pour eoleapps sont convenables (10000 sur localhost pour flask, 3000 pour nginx)
décisions restant à prendre sur le fonctionnement:
* lancement par défaut ou non de l'instance eoleapps (pour l'instant les 2 sont toujours lancés sur localhost)
* ajouter une question dans applications web pour activer eoleapps via nginx dans le dictionnaire d'eoleflask ?
* voir si des améliorations sont à prévoir sur eflkctl
attention au dépendances avec d'autres variables (activation d'eop forcée à non quand eoleapps n'est pas accessible via nginx ?)
PREFIX