Projet

Général

Profil

Wiki » Historique » Version 19

Lionel Morin, 26/09/2014 12:02

1 15 Laurent Flori
h1. Développement à partir du squelette eoleflask (Ébauche)
2 1 Laurent Flori
3 1 Laurent Flori
h2. Préparation de l'application:
4 1 Laurent Flori
5 1 Laurent Flori
    * installer le paquet *python-eoleflask*
6 1 Laurent Flori
    * cloner le dépot *eole-skeletor*
7 17 Laurent Flori
    * lancer le script: ./bootstrap-eoleflask-app.sh [monappli]
8 1 Laurent Flori
>  Cela prépare les fichiers nécessaires à une application flask pour EOLE  dans le répertoire *src/monappli*:
9 1 Laurent Flori
>  le répertoire du module lui même: *src/monappli*
10 1 Laurent Flori
>  le fichier qui permettra d'activer l'application dans le serveur: *src/monappli.conf*
11 1 Laurent Flori
12 1 Laurent Flori
h2. Lancer l'application:
13 1 Laurent Flori
14 12 Laurent Flori
    * créer un fichier src/monappli/static/index.html
15 1 Laurent Flori
    * lancer le script ./eoleflask-dev-server.py
16 1 Laurent Flori
    * ouvrir un navigateur à l'adresse http://localhost:8080/
17 1 Laurent Flori
18 13 Laurent Flori
-*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
19 3 Laurent Flori
20 1 Laurent Flori
h2. Développement de l'application:
21 1 Laurent Flori
22 1 Laurent Flori
    * Tout les fichiers de l'application se trouvent dans le répertoire src/:
23 1 Laurent Flori
<pre>
24 1 Laurent Flori
25 1 Laurent Flori
        src/
26 2 Laurent Flori
        |-- monappli
27 1 Laurent Flori
        |   |-- __init__.py
28 1 Laurent Flori
        |   |-- static
29 1 Laurent Flori
        |   |   `-- index.html
30 1 Laurent Flori
        |   `-- views.py
31 2 Laurent Flori
        `-- monappli.conf
32 1 Laurent Flori
33 1 Laurent Flori
</pre>
34 1 Laurent Flori
35 1 Laurent Flori
* La logique de l'application se trouve dans le fichier *src/monappli/views.py*
36 1 Laurent Flori
* Tous les fichiers statiques se trouvent dans src/monappli/static
37 1 Laurent Flori
* La documentation Flask se trouve la: http://flask.pocoo.org/docs/
38 1 Laurent Flori
39 1 Laurent Flori
h2. Intégration dans une machine de test:
40 9 Laurent Flori
41 9 Laurent Flori
*-- A revoir/Étoffer*
42 1 Laurent Flori
43 1 Laurent Flori
    * installer les paquets python-eoleflask et eole-flask-server
44 1 Laurent Flori
    * installer votre application avec un make install
45 6 Laurent Flori
    * activer votre application avec: /usr/share/eole/sbin/eflkctl enable monappli
46 1 Laurent Flori
    * relancer le serveur avec /etc/init.d/eoleflask restart
47 11 Laurent Flori
    * l'application est disponible à l'adresse http://[ip_machine_de_test]:7000/monappli
48 1 Laurent Flori
49 1 Laurent Flori
*-- Fin de A revoir/Étoffer*
50 18 Laurent Flori
51 18 Laurent Flori
52 18 Laurent Flori
h2. Organisation du code de l'application (écriture en cours):
53 18 Laurent Flori
54 18 Laurent Flori
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.
55 18 Laurent Flori
le lib.py devienne un paquet deb à part
56 19 Lionel Morin
57 19 Lionel Morin
h2. Gestion des 2 instances flask
58 19 Lionel Morin
59 19 Lionel Morin
Le fonctionnement mis en oeuvre pour l'instant est le suivant:
60 19 Lionel Morin
61 19 Lionel Morin
2 instances d'eoleflask sont mises en place avec des services différents:
62 19 Lionel Morin
63 19 Lionel Morin
- eoleflask : localhost:5000 (eventuellement, renommer le service eoleadmin pour plus de clarté)
64 19 Lionel Morin
- eoleapps : localhost:10000
65 19 Lionel Morin
66 19 Lionel Morin
la première instance fonctionne toujours de la même façon qu'avant et sert eoleauth/genconfig
67 19 Lionel Morin
la deuxième sert aussi eoleauth/genconfig mais n'est pas accessible à l'extérieur via nginx
68 19 Lionel Morin
69 19 Lionel Morin
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
70 19 Lionel Morin
71 19 Lionel Morin
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 manière suivante:
72 19 Lionel Morin
73 19 Lionel Morin
# eflkctl disable eolegenconfig
74 19 Lionel Morin
# eflkctl enable eolegenconfig *eoleadmin*
75 19 Lionel Morin
# service eoleflask restart
76 19 Lionel Morin
# service eoleapps restart
77 19 Lionel Morin
78 19 Lionel Morin
pour rendre eop accessible dans l'instance eoleapps:
79 19 Lionel Morin
80 19 Lionel Morin
# eflkctl disable eop (si déjà configuré)
81 19 Lionel Morin
# eflkctl enable eop *eoleapps*
82 19 Lionel Morin
# service eoleapps restart
83 19 Lionel Morin
84 19 Lionel Morin
il manquera ensuite à :
85 19 Lionel Morin
86 19 Lionel Morin
* activer la configuration nginx d'eoleapps (déjà livrée dans /etc/nginx/sites-available)
87 19 Lionel Morin
* ajouter une règle d'accès pour rendre eoleapps accessible de l'extérieur (nginx sert l'instance sur le port 3000)
88 19 Lionel Morin
89 19 Lionel Morin
pour limiter les risques de problèmes:
90 19 Lionel Morin
91 19 Lionel Morin
* 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)
92 19 Lionel Morin
* vérifier que les ports choisis pour eoleapps sont convenables (10000 sur localhost pour flask, 3000 pour nginx)
93 19 Lionel Morin
94 19 Lionel Morin
95 19 Lionel Morin
96 19 Lionel Morin
97 19 Lionel Morin
décisions restant à prendre sur le fonctionnement:
98 19 Lionel Morin
99 19 Lionel Morin
* lancement par défaut ou non de l'instance eoleapps (pour l'instant les 2 sont toujours lancés sur localhost)
100 19 Lionel Morin
* ajouter une question dans applications web pour activer eoleapps via nginx dans le dictionnaire d'eoleflask ?
101 19 Lionel Morin
* voir si des améliorations sont à prévoir sur eflkctl
102 19 Lionel Morin
103 19 Lionel Morin
attention au dépendances avec d'autres variables (activation d'eop forcée à non quand eoleapps n'est pas accessible via nginx ?)