Projet

Général

Profil

EnvoleBonnesPratiques » Historique » Version 51

Lionel Morin, 25/06/2012 11:50

1 21 Gérald Schwartzmann
h2. !http://dev-eole.ac-dijon.fr/attachments/download/9/puce.png! Environnement Libre Ouvert Evolutif - Envole
2 21 Gérald Schwartzmann
{{include(eole:menu)}}
3 1 Gérald Schwartzmann
4 1 Gérald Schwartzmann
h1. Les Bonnes Pratiques
5 22 Gérald Schwartzmann
6 22 Gérald Schwartzmann
{{include(ModeleEbauche)}}
7 6 Gérald Schwartzmann
8 7 Gérald Schwartzmann
h2. Documentations, sources et articles wiki
9 8 Gérald Schwartzmann
10 50 Gérald Schwartzmann
Voici les bonnes pratiques sur le nommage des applications EOLE : http://dev-eole.ac-dijon.fr/projects/documentations/wiki/DokielGuideBonnesPratiques
11 6 Gérald Schwartzmann
12 9 Gérald Schwartzmann
h2. Git
13 6 Gérald Schwartzmann
14 7 Gérald Schwartzmann
h3. Placement
15 1 Gérald Schwartzmann
16 11 Gérald Schwartzmann
Les applications de Envole sont des sous-projets de "Envole":http://dev-eole.ac-dijon.fr/projects/envole .
17 13 Gérald Schwartzmann
Dans le dépôt ils apparaissent les un à côté des autres (à plat).
18 1 Gérald Schwartzmann
19 13 Gérald Schwartzmann
h3. Les Bonnes Pratiques
20 1 Gérald Schwartzmann
21 50 Gérald Schwartzmann
Les Bonnes Pratiques de Git généralité et autres : http://dev-eole.ac-dijon.fr/projects/eole/wiki/GitBonnesPratiques
22 50 Gérald Schwartzmann
Recueil de commandes Git : http://dev-eole.ac-dijon.fr/projects/eole/wiki/RecueilGit
23 1 Gérald Schwartzmann
24 27 Gérald Schwartzmann
Lorsque le master existe il contient les sources de la première version du paquet.
25 27 Gérald Schwartzmann
Créer une nouvelle branche en vue d'ajouter des développements
26 27 Gérald Schwartzmann
27 27 Gérald Schwartzmann
<pre>
28 27 Gérald Schwartzmann
$ git checkout -b devel
29 27 Gérald Schwartzmann
$ git push --all
30 27 Gérald Schwartzmann
</pre>
31 27 Gérald Schwartzmann
32 32 Gérald Schwartzmann
h3. prompt sympa pour git
33 32 Gérald Schwartzmann
34 32 Gérald Schwartzmann
Ajouter les lignes suivantes à votre .bashrc pour un peu plus de confort
35 32 Gérald Schwartzmann
36 32 Gérald Schwartzmann
<pre>
37 32 Gérald Schwartzmann
toUpper() {
38 32 Gérald Schwartzmann
          echo $1 | tr "[:lower:]" "[:upper:]"
39 32 Gérald Schwartzmann
}
40 32 Gérald Schwartzmann
41 32 Gérald Schwartzmann
parse_git_branch() {
42 32 Gérald Schwartzmann
        branch=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'`
43 32 Gérald Schwartzmann
        if [ "$branch" != "" ];then
44 32 Gérald Schwartzmann
                label=`toUpper $branch`
45 32 Gérald Schwartzmann
        fi
46 32 Gérald Schwartzmann
        echo $label
47 32 Gérald Schwartzmann
}
48 32 Gérald Schwartzmann
</pre>
49 32 Gérald Schwartzmann
50 1 Gérald Schwartzmann
h3. Nommage
51 8 Gérald Schwartzmann
52 14 Gérald Schwartzmann
Le nom des sous-projets doivent être en minuscule
53 6 Gérald Schwartzmann
54 13 Gérald Schwartzmann
Exemple dans la liste des sous-projets : http://dev-eole.ac-dijon.fr/projects/envole
55 6 Gérald Schwartzmann
56 14 Gérald Schwartzmann
h3. Structure du Master
57 6 Gérald Schwartzmann
58 14 Gérald Schwartzmann
Puisque votre développement n'est pas la branche d'un projet déjà existant on réalise un master.<br />
59 14 Gérald Schwartzmann
Pour cela il faut créer selon les besoins de votre application les fichiers et répertoires suivant :
60 6 Gérald Schwartzmann
 - Makefile
61 6 Gérald Schwartzmann
 - debian/
62 6 Gérald Schwartzmann
 - dicos/
63 6 Gérald Schwartzmann
 - mysql/
64 6 Gérald Schwartzmann
 - patch/
65 6 Gérald Schwartzmann
 - sso/
66 6 Gérald Schwartzmann
 - source_de_votre_appli_num_de_version/
67 6 Gérald Schwartzmann
 - tmpls/
68 6 Gérald Schwartzmann
 - etc/
69 6 Gérald Schwartzmann
70 14 Gérald Schwartzmann
Exemple : http://dev-eole.ac-dijon.fr/projects/dokuwiki/repository
71 6 Gérald Schwartzmann
72 7 Gérald Schwartzmann
h2. Les fichiers templates
73 8 Gérald Schwartzmann
74 49 Lionel Morin
Le nom d'un fichier templétisé ne doit pas porter le même nom qu'un autre pour cela il faut préfixer le nom du fichier avec le nom de l'application.
75 6 Gérald Schwartzmann
76 6 Gérald Schwartzmann
Exemple du fichier config.php qui est présent dans une bonne partie des applications :
77 6 Gérald Schwartzmann
78 6 Gérald Schwartzmann
taskfreak_config.php
79 6 Gérald Schwartzmann
80 7 Gérald Schwartzmann
h2. Dico
81 8 Gérald Schwartzmann
82 7 Gérald Schwartzmann
h3. Nommage
83 8 Gérald Schwartzmann
84 6 Gérald Schwartzmann
Les applications du socle
85 6 Gérald Schwartzmann
<pre>5x_nom_de_l_application.xml</pre>
86 6 Gérald Schwartzmann
Les applications supplémentaires au socle
87 6 Gérald Schwartzmann
<pre>6x_nom_de_l_application.xml</pre>
88 6 Gérald Schwartzmann
x étant supérieur à 0
89 6 Gérald Schwartzmann
90 7 Gérald Schwartzmann
h3. construction du fichier
91 8 Gérald Schwartzmann
92 15 Gérald Schwartzmann
{{include(ModeleFixme)}}
93 6 Gérald Schwartzmann
94 7 Gérald Schwartzmann
h2. Paquetage
95 8 Gérald Schwartzmann
96 24 Gérald Schwartzmann
h3. nommage du paquet
97 25 Gérald Schwartzmann
98 6 Gérald Schwartzmann
eole-nom_de_l_application
99 24 Gérald Schwartzmann
100 24 Gérald Schwartzmann
h3. fichiers postinst postrm
101 25 Gérald Schwartzmann
102 24 Gérald Schwartzmann
dans les fichiers postinst et postrm il faut utiliser des chemins absolus pour les commandes :
103 26 Gérald Schwartzmann
<pre>/bin/cp</pre>
104 6 Gérald Schwartzmann
105 7 Gérald Schwartzmann
h2. Apache
106 1 Gérald Schwartzmann
107 15 Gérald Schwartzmann
h3. nommage du fichier de conf dans sites-enabled
108 15 Gérald Schwartzmann
109 6 Gérald Schwartzmann
Un fichier de conf apache par application :
110 1 Gérald Schwartzmann
<pre>apache-nom_de_l_application.conf</pre>
111 15 Gérald Schwartzmann
112 15 Gérald Schwartzmann
h3. contenu du fichier de conf dans sites-enabled
113 15 Gérald Schwartzmann
114 19 Gérald Schwartzmann
Le chemin de l'application doit être son nom
115 19 Gérald Schwartzmann
116 16 Gérald Schwartzmann
Si un projet ne contient pas de .htaccess il faut ajouter la directive *AllowOverride None*.
117 16 Gérald Schwartzmann
Celle-ci permet de diminuer le délai d'attente en lui évitant de partir à la recherche de fichier .htaccess dans chaque répertoire qu'il visite.
118 16 Gérald Schwartzmann
119 18 Gérald Schwartzmann
Date d'expiration du cache proxy ou navigateur.
120 18 Gérald Schwartzmann
Régler correctement et finement le cache des clients permet d'éviter un grand nombre de requête.
121 18 Gérald Schwartzmann
En prévision de l'activation du *mod_expires* sur le serveur Apache, on peut ajouter la directive *ExpiresActive On* suivit de directive *ExpiresByType type "durée de vie dans le cache"*
122 18 Gérald Schwartzmann
123 18 Gérald Schwartzmann
<pre>
124 18 Gérald Schwartzmann
<IfModule mod_expires.c>
125 18 Gérald Schwartzmann
                ExpiresActive On
126 18 Gérald Schwartzmann
                ExpiresByType text/html "access plus 1 day"
127 18 Gérald Schwartzmann
</IfModule>
128 18 Gérald Schwartzmann
</pre>
129 18 Gérald Schwartzmann
130 18 Gérald Schwartzmann
Exemple complet d'un fichier de configuration d'une application :
131 16 Gérald Schwartzmann
132 16 Gérald Schwartzmann
<pre>
133 16 Gérald Schwartzmann
# Envole Infos
134 16 Gérald Schwartzmann
# Equipe EOLE
135 16 Gérald Schwartzmann
Alias /envole-infos /var/www/html/envole-infos
136 16 Gérald Schwartzmann
<Directory "/var/www/html/envole-infos">
137 17 Gérald Schwartzmann
        AllowOverride None
138 16 Gérald Schwartzmann
        AddDefaultCharset UTF-8
139 16 Gérald Schwartzmann
        DirectoryIndex index.php
140 16 Gérald Schwartzmann
        Order Allow,Deny
141 16 Gérald Schwartzmann
        Allow from All
142 16 Gérald Schwartzmann
        <IfModule mod_expires.c>
143 16 Gérald Schwartzmann
                ExpiresActive On
144 16 Gérald Schwartzmann
                ExpiresByType text/html "access plus 1 day"
145 16 Gérald Schwartzmann
                ExpiresByType text/xml "access plus 1 day"
146 16 Gérald Schwartzmann
                ExpiresByType image/gif "access plus 1 week"
147 16 Gérald Schwartzmann
                ExpiresByType image/jpg "access plus 1 week"
148 16 Gérald Schwartzmann
                ExpiresByType image/png "access plus 1 week"
149 16 Gérald Schwartzmann
                ExpiresByType video/quicktime "access plus 1 month"
150 16 Gérald Schwartzmann
                ExpiresByType audio/mpeg "access plus 1 month"
151 16 Gérald Schwartzmann
                ExpiresByType application/pdf "access plus 1 month"
152 16 Gérald Schwartzmann
                ExpiresByType application/ps "access plus 1 month"
153 16 Gérald Schwartzmann
                ExpiresByType text/css "access plus 1 day"
154 16 Gérald Schwartzmann
                ExpiresByType application/x-shockwave-flash "access plus 1 day"
155 16 Gérald Schwartzmann
                ExpiresByType text/js "access plus 1 week"
156 16 Gérald Schwartzmann
                ExpiresByType text/javascript "access plus 1 week"
157 16 Gérald Schwartzmann
                ExpiresByType application/x-javascript "access plus 1 week"
158 16 Gérald Schwartzmann
                ExpiresByType image/x-icon "access plus 1 day"
159 16 Gérald Schwartzmann
        </IfModule>
160 16 Gérald Schwartzmann
</Directory>
161 16 Gérald Schwartzmann
</pre>
162 15 Gérald Schwartzmann
163 48 Lionel Morin
h2. répertoire debian (empaquetage)
164 47 Gérald Schwartzmann
165 47 Gérald Schwartzmann
h3. le changelog
166 47 Gérald Schwartzmann
167 47 Gérald Schwartzmann
<pre>
168 47 Gérald Schwartzmann
eole-envole-tools (1.0-eole1) eole-2.2-dev; urgency=low
169 47 Gérald Schwartzmann
170 47 Gérald Schwartzmann
  * Initial release
171 47 Gérald Schwartzmann
172 47 Gérald Schwartzmann
 -- Equipe Eole <eole@ac-dijon.fr>  Fri, 20 May 2011 09:25:40 +0200
173 47 Gérald Schwartzmann
</pre>
174 47 Gérald Schwartzmann
175 47 Gérald Schwartzmann
La date s'obtient avec la commande date -R
176 47 Gérald Schwartzmann
177 15 Gérald Schwartzmann
h3. les droits dans /var/www/html/
178 6 Gérald Schwartzmann
179 23 Gaston TJEBBES
Application des droits minimaux sur les répertoires:
180 1 Gérald Schwartzmann
181 23 Gaston TJEBBES
<pre>
182 23 Gaston TJEBBES
# Définition du propriétaire du répertoire
183 23 Gaston TJEBBES
/bin/chown -R root:www-data /var/www/html/votre_appli<br />
184 23 Gaston TJEBBES
# Définition des droits minimaux pour les répertoires (ont besoin d'être exécutables)
185 23 Gaston TJEBBES
/bin/chmod -R 750 /var/www/html/votre_appli<br />
186 23 Gaston TJEBBES
# Définition des droits minimaux pour les fichiers
187 23 Gaston TJEBBES
/usr/bin/find /var/www/html/votre_appli -type f -exec /bin/chmod ugo-x {} \;
188 23 Gaston TJEBBES
</pre>
189 23 Gaston TJEBBES
190 49 Lionel Morin
Pour des raisons de sécurité seuls les fichiers nécessitant d'être modifiés par l'application sont éditables par l'utilisateur avec lequel est lancé apache à savoir www-data.
191 23 Gaston TJEBBES
<pre>
192 23 Gaston TJEBBES
/bin/chmod 770 /var/www/html/votre_appli/datas
193 23 Gaston TJEBBES
/bin/chmod 660 /var/www/html/votre_appli/datas/*.*
194 23 Gaston TJEBBES
</pre>
195 6 Gérald Schwartzmann
196 7 Gérald Schwartzmann
h2. Base de données
197 8 Gérald Schwartzmann
198 6 Gérald Schwartzmann
<pre>scribe-nom_de_l_application.sql</pre>
199 6 Gérald Schwartzmann
200 29 Gérald Schwartzmann
Si la bdd nécessite une templétisation il est préférable de découper la bdd en deux fichiers MySql.
201 29 Gérald Schwartzmann
L'un avec la partie à templétiser et l'autre avec le reste.
202 29 Gérald Schwartzmann
Cette découpe fait gagner un temps considérable lors du reconfigure.
203 7 Gérald Schwartzmann
204 28 Gérald Schwartzmann
h2. Stockage des données
205 6 Gérald Schwartzmann
206 46 Gérald Schwartzmann
FIXME : méthode obsolète -> méthode bacula
207 46 Gérald Schwartzmann
208 29 Gérald Schwartzmann
Exemple de Dokuwiki
209 28 Gérald Schwartzmann
Pour être prise en charge par la sauvegarde Bacula les données des applications sont stockées dans :
210 28 Gérald Schwartzmann
<pre>
211 28 Gérald Schwartzmann
/home/www-data/var/www/html/nom_de_l'application
212 28 Gérald Schwartzmann
</pre>
213 46 Gérald Schwartzmann
214 46 Gérald Schwartzmann
h2. CASsifier une application
215 46 Gérald Schwartzmann
216 46 Gérald Schwartzmann
Se référer à la documentation suivante :
217 46 Gérald Schwartzmann
http://dev-eole.ac-dijon.fr/projects/eole-php5-cas/wiki
218 27 Gérald Schwartzmann
219 27 Gérald Schwartzmann
h2. Commandes systèmes
220 27 Gérald Schwartzmann
221 35 Gérald Schwartzmann
h3. Patch
222 35 Gérald Schwartzmann
223 27 Gérald Schwartzmann
==Création d'un patch==
224 43 Gaston TJEBBES
<pre>diff -uNr toto/ toto.new/ > patch/toto.patch</pre>
225 42 Gaston TJEBBES
226 43 Gaston TJEBBES
NB : Utilisez des chemins relatifs
227 27 Gérald Schwartzmann
228 27 Gérald Schwartzmann
==Application d'un patch==
229 27 Gérald Schwartzmann
<pre>patch -d /home/username/travail -p0 < toto.patch</pre>
230 27 Gérald Schwartzmann
231 36 Gérald Schwartzmann
[[patchAvance|Patch avancé]]
232 35 Gérald Schwartzmann
233 39 Gérald Schwartzmann
h3. Mot de passe
234 1 Gérald Schwartzmann
235 40 Gérald Schwartzmann
Changer les mots de passe PhpMyAdmin (mode interactif)
236 39 Gérald Schwartzmann
<pre>/usr/share/eole/mysql_pwd.py</pre>
237 1 Gérald Schwartzmann
238 1 Gérald Schwartzmann
Changer le mot de passe root de PhpMyAdmin
239 39 Gérald Schwartzmann
<pre>
240 40 Gérald Schwartzmann
/usr/share/eole/mysql_pwd.py monMotDePass
241 39 Gérald Schwartzmann
</pre>
242 39 Gérald Schwartzmann
243 39 Gérald Schwartzmann
Remettre un mot de passe aléatoire
244 39 Gérald Schwartzmann
<pre>
245 39 Gérald Schwartzmann
/usr/share/eole/mysql_pwd.py `/usr/bin/pwgen -1`
246 39 Gérald Schwartzmann
</pre>
247 35 Gérald Schwartzmann
248 44 Gérald Schwartzmann
h3. Debugger
249 44 Gérald Schwartzmann
250 44 Gérald Schwartzmann
Usage :
251 44 Gérald Schwartzmann
<pre>
252 44 Gérald Schwartzmann
include('envolePHP/logger.php');
253 44 Gérald Schwartzmann
$monlogger = new Logger("/var/log/monfichier.log");
254 44 Gérald Schwartzmann
$monlogger->debug('msg');
255 44 Gérald Schwartzmann
$monlogger->error('erreur');
256 44 Gérald Schwartzmann
</pre>
257 44 Gérald Schwartzmann
258 51 Lionel Morin
h2. Intégration au bureau Posh
259 51 Lionel Morin
260 51 Lionel Morin
h3. Modifier le paquet eole-posh
261 51 Lionel Morin
262 51 Lionel Morin
Voici la marche à suivre pour que votre nouvelle application apparaisse automatiquement dans les items de bureau de Posh.
263 51 Lionel Morin
264 51 Lionel Morin
Dans le paquet eole-posh, mettre l’icône (32x32) de la nouvelle application dans :
265 51 Lionel Morin
<pre>
266 51 Lionel Morin
plugins/plugin_desktop/icones
267 51 Lionel Morin
</pre>
268 51 Lionel Morin
Puis ajouter l'item de bureau dans le fichier :
269 51 Lionel Morin
<pre>
270 51 Lionel Morin
eole/tmpls/poshprofile-update.sql
271 51 Lionel Morin
</pre>
272 51 Lionel Morin
Exemple :
273 51 Lionel Morin
<pre>
274 51 Lionel Morin
-- piwigo (Galerie de photos)
275 51 Lionel Morin
%if %%is_defined('activer_piwigo') and %%activer_piwigo == 'oui'
276 51 Lionel Morin
CALL InsertDesktopItem('piwigo', 'Galerie<br />de photos', '/piwigo', '%%alias_envole/includes/plugins/plugin_desktop/icones/piwigo.png');
277 51 Lionel Morin
%end if
278 51 Lionel Morin
279 51 Lionel Morin
</pre>
280 51 Lionel Morin
281 35 Gérald Schwartzmann
h2. Logiciels
282 35 Gérald Schwartzmann
283 38 Gérald Schwartzmann
h3. Firebug
284 38 Gérald Schwartzmann
285 35 Gérald Schwartzmann
Très pratique dans la conception de page web.
286 1 Gérald Schwartzmann
Console permettant le debbugage Javascript et Css :
287 38 Gérald Schwartzmann
https://addons.mozilla.org/firefox/1843/
288 31 Gérald Schwartzmann
289 33 Gérald Schwartzmann
h2. Batterie de tests
290 33 Gérald Schwartzmann
291 33 Gérald Schwartzmann
h3. Tester la compilation du paquet (postinst, Makefile, ...)
292 33 Gérald Schwartzmann
293 33 Gérald Schwartzmann
Il est possible de tester la compilation de votre paquet sur une machine perso :
294 33 Gérald Schwartzmann
exporter vos sources :
295 33 Gérald Schwartzmann
<pre>
296 33 Gérald Schwartzmann
git archive nomDeBranche | tar -x -C /somewhere/else
297 33 Gérald Schwartzmann
</pre>
298 41 Gérald Schwartzmann
Se rendre dans le répertoire des sources et compiler sans signer (-uc -us)
299 33 Gérald Schwartzmann
<pre>
300 41 Gérald Schwartzmann
fakeroot dpkg-buildpackage -uc -us
301 33 Gérald Schwartzmann
</pre>
302 33 Gérald Schwartzmann
Le paquet est disponible dans le répertoire parent.
303 33 Gérald Schwartzmann
304 33 Gérald Schwartzmann
h3. Tester le paquet
305 34 Gérald Schwartzmann
306 33 Gérald Schwartzmann
Le nouveau paquet doit être testé en fresh install et en update (cas de figure où l'application est en production).
307 33 Gérald Schwartzmann
308 33 Gérald Schwartzmann
h3. Test de l'application
309 34 Gérald Schwartzmann
310 49 Lionel Morin
L'application doit être testée avec tous les types de comptes utilisateurs.
311 33 Gérald Schwartzmann
312 33 Gérald Schwartzmann
h2. Documentation
313 33 Gérald Schwartzmann
314 33 Gérald Schwartzmann
h3. Première mouture
315 33 Gérald Schwartzmann
316 33 Gérald Schwartzmann
Il faut documenter une application avant son passage en candidat.
317 49 Lionel Morin
Ouvrez une page wiki et y mettre les changements majeurs concernant
318 33 Gérald Schwartzmann
l'installation, les rôles, les consignes diverses ...
319 49 Lionel Morin
Ses informations doivent permettre de faciliter la vie du testeur.
320 33 Gérald Schwartzmann
321 33 Gérald Schwartzmann
h3. Finalisation
322 33 Gérald Schwartzmann
323 33 Gérald Schwartzmann
L'utilisateur doit trouver la doc à jour au moment où il en a besoin.
324 33 Gérald Schwartzmann
Aussi votre documentation doit être faite avant la sortie du paquet en stable.
325 33 Gérald Schwartzmann
Si vous n'avez pas accès au logiciel pour élaborer la doc, posez un signalement dans "Documentations" en mettant le lien vers la page wiki.
326 33 Gérald Schwartzmann
327 31 Gérald Schwartzmann
h2. Fioritures
328 31 Gérald Schwartzmann
329 31 Gérald Schwartzmann
Les couleurs pour uniformiser les applications.
330 31 Gérald Schwartzmann
jaune pâle max #fff999
331 31 Gérald Schwartzmann
jaune pâle mini #ffffcc
332 31 Gérald Schwartzmann
jaune orangé logo Eole #ffcc29
333 31 Gérald Schwartzmann
mauve logo Eole #57537e
334 45 Benoit Vila
335 45 Benoit Vila
h2. Divers
336 45 Benoit Vila
337 45 Benoit Vila
Logiciel de packaging Epack : http://test-eoleng.ac-dijon.fr/eoleng/eole-2.2-security/all/eolepack_2.2-eole37_all.deb