Projet

Général

Profil

Wiki » Historique » Version 24

Lionel Morin, 29/09/2014 15:00

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 22 Lionel Morin
2 instances d'eoleflask sont mises en place avec des services différents :
60 19 Lionel Morin
61 21 Lionel Morin
h3. Instance eoleflask
62 1 Laurent Flori
63 22 Lionel Morin
* localhost:5000 (eventuellement, renommer le service eoleadmin pour plus de clarté)
64 22 Lionel Morin
* sert eoleauth/genconfig et tourne dans le conteneur maitre
65 1 Laurent Flori
66 21 Lionel Morin
h3. Instance eoleapps
67 1 Laurent Flori
68 22 Lionel Morin
* localhost:10000
69 22 Lionel Morin
* sert eoleauth et les applis web flask (EOP pour le moment) grace à un reverse proxy apache
70 22 Lionel Morin
* possibilité de la désactiver (en mode expert, famille Eole-Flask)
71 21 Lionel Morin
72 21 Lionel Morin
h3. Activation d'une application pour une instance
73 19 Lionel Morin
74 23 Lionel Morin
Les applications flask sont déclarées en déposant leur conf dans le dossier dédié : _/etc/eole/flask/available_
75 23 Lionel Morin
76 23 Lionel Morin
On peut les activer avec le script eflkctl. L'activation consiste à créer un lien symbolique dans le dossier enabled correspondant à l'instance voulue.
77 23 Lionel Morin
78 23 Lionel Morin
* Exemple pris sur le conteneur web d'un AmonEcole :
79 23 Lionel Morin
<pre>
80 23 Lionel Morin
/etc/eole/flask/
81 23 Lionel Morin
├── available
82 23 Lionel Morin
│   ├── eoleauth.conf
83 23 Lionel Morin
│   └── eop.conf
84 23 Lionel Morin
├── enabled
85 23 Lionel Morin
│   └── eoleauth.conf -> /etc/eole/flask/available/eoleauth.conf
86 23 Lionel Morin
├── eoleapps
87 23 Lionel Morin
│   ├── available
88 23 Lionel Morin
│   └── enabled
89 23 Lionel Morin
│       └── eop.conf -> /etc/eole/flask/available/eop.conf
90 23 Lionel Morin
├── eoleapps.conf
91 23 Lionel Morin
</pre>
92 23 Lionel Morin
93 23 Lionel Morin
94 19 Lionel Morin
* Exemple d'activation d'eolegenconfig dans l'instance eoleadmin
95 19 Lionel Morin
# eflkctl enable eolegenconfig *eoleadmin*
96 19 Lionel Morin
# service eoleflask restart
97 22 Lionel Morin
98 20 Lionel Morin
* Exemple pour rendre eop accessible dans l'instance eoleapps:
99 20 Lionel Morin
# eflkctl enable eop *eoleapps*
100 20 Lionel Morin
# service eoleapps restart
101 20 Lionel Morin
102 23 Lionel Morin
h3. Configuration d'un préfix pour les applications web derrière un reverse proxy
103 20 Lionel Morin
104 24 Lionel Morin
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).
105 1 Laurent Flori
106 23 Lionel Morin
* Exemple de conf d'EOP :
107 23 Lionel Morin
<pre>
108 23 Lionel Morin
cat /etc/eole/flask/available/eop.conf 
109 23 Lionel Morin
{
110 23 Lionel Morin
"APPNAME":"eop",
111 23 Lionel Morin
"MOUNT_POINT":"/eop",
112 23 Lionel Morin
"PREFIX":"true",
113 23 Lionel Morin
114 23 Lionel Morin
"EOP":"EOP",
115 23 Lionel Morin
"EOLE":"Équipe EOLE",
116 23 Lionel Morin
117 23 Lionel Morin
"UPLOAD_FOLDER":"/tmp",
118 23 Lionel Morin
"CHEMIN_DEV":"tempfiledir",
119 23 Lionel Morin
"CHEMIN_DATA":"tempdatadir",
120 23 Lionel Morin
121 23 Lionel Morin
"EOLEAUTH_MODE":"LOCAL",
122 23 Lionel Morin
"EOLEAUTH_PLUGIN":"CASClient",
123 23 Lionel Morin
124 23 Lionel Morin
"CAS_URL":"https://amonecole.etb3.ac-test.fr:8443/",
125 23 Lionel Morin
"CONTROLEVNC_URL":"http://192.0.2.52:8788",
126 23 Lionel Morin
"SERVER_SMTP":"192.0.2.51"
127 23 Lionel Morin
}
128 23 Lionel Morin
</pre>