Projet

Général

Profil

EnvoleBonnesPratiques » Historique » Version 28

« Précédent - Version 28/75 (diff) - Suivant » - Version actuelle
Gérald Schwartzmann, 30/04/2010 17:22


Environnement Libre Ouvert Evolutif - Envole

Descriptif - Développement - Diffusion - Documentation

Développement

Les Bonnes Pratiques

Cette page est une ébauche, aussi n'hésitez pas à la compléter.

Documentations, sources et articles wiki

Voici Les bonnes pratiques sur le nommage des applications EOLE

Git

Placement

Les applications de Envole sont des sous-projets de Envole .
Dans le dépôt ils apparaissent les un à côté des autres (à plat).

Les Bonnes Pratiques

Les Bonnes Pratiques de Git généralité et autres

Lorsque le master existe il contient les sources de la première version du paquet.
Créer une nouvelle branche en vue d'ajouter des développements

$ git checkout -b devel
$ git push --all

Nommage

Le nom des sous-projets doivent être en minuscule

Exemple dans la liste des sous-projets : http://dev-eole.ac-dijon.fr/projects/envole

Structure du Master

Puisque votre développement n'est pas la branche d'un projet déjà existant on réalise un master.<br />
Pour cela il faut créer selon les besoins de votre application les fichiers et répertoires suivant :
- Makefile
- debian/
- dicos/
- mysql/
- patch/
- sso/
- source_de_votre_appli_num_de_version/
- tmpls/
- etc/

Exemple : http://dev-eole.ac-dijon.fr/projects/dokuwiki/repository

Les fichiers templates

Le nom d'un fichier templétisé ne doit pas porté le même nom qu'un autre pour cela il faut préfixer le nom du fichier avec le nom de l'application.

Exemple du fichier config.php qui est présent dans une bonne partie des applications :

taskfreak_config.php

Dico

Nommage

Les applications du socle

5x_nom_de_l_application.xml

Les applications supplémentaires au socle
6x_nom_de_l_application.xml

x étant supérieur à 0

construction du fichier

Paquetage

nommage du paquet

eole-nom_de_l_application

fichiers postinst postrm

dans les fichiers postinst et postrm il faut utiliser des chemins absolus pour les commandes :

/bin/cp

Apache

nommage du fichier de conf dans sites-enabled

Un fichier de conf apache par application :

apache-nom_de_l_application.conf

contenu du fichier de conf dans sites-enabled

Le chemin de l'application doit être son nom

Si un projet ne contient pas de .htaccess il faut ajouter la directive AllowOverride None.
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.

Date d'expiration du cache proxy ou navigateur.
Régler correctement et finement le cache des clients permet d'éviter un grand nombre de requête.
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"

<IfModule mod_expires.c>
                ExpiresActive On
                ExpiresByType text/html "access plus 1 day" 
</IfModule>

Exemple complet d'un fichier de configuration d'une application :

# Envole Infos
# Equipe EOLE
Alias /envole-infos /var/www/html/envole-infos
<Directory "/var/www/html/envole-infos">
        AllowOverride None
        AddDefaultCharset UTF-8
        DirectoryIndex index.php
        Order Allow,Deny
        Allow from All
        <IfModule mod_expires.c>
                ExpiresActive On
                ExpiresByType text/html "access plus 1 day" 
                ExpiresByType text/xml "access plus 1 day" 
                ExpiresByType image/gif "access plus 1 week" 
                ExpiresByType image/jpg "access plus 1 week" 
                ExpiresByType image/png "access plus 1 week" 
                ExpiresByType video/quicktime "access plus 1 month" 
                ExpiresByType audio/mpeg "access plus 1 month" 
                ExpiresByType application/pdf "access plus 1 month" 
                ExpiresByType application/ps "access plus 1 month" 
                ExpiresByType text/css "access plus 1 day" 
                ExpiresByType application/x-shockwave-flash "access plus 1 day" 
                ExpiresByType text/js "access plus 1 week" 
                ExpiresByType text/javascript "access plus 1 week" 
                ExpiresByType application/x-javascript "access plus 1 week" 
                ExpiresByType image/x-icon "access plus 1 day" 
        </IfModule>
</Directory>

les droits dans /var/www/html/

Application des droits minimaux sur les répertoires:

# Définition du propriétaire du répertoire
/bin/chown -R root:www-data /var/www/html/votre_appli<br />
# Définition des droits minimaux pour les répertoires (ont besoin d'être exécutables)
/bin/chmod -R 750 /var/www/html/votre_appli<br />
# Définition des droits minimaux pour les fichiers
/usr/bin/find /var/www/html/votre_appli -type f -exec /bin/chmod ugo-x {} \;

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<br />

/bin/chmod 770 /var/www/html/votre_appli/datas
/bin/chmod 660 /var/www/html/votre_appli/datas/*.*

Base de données

scribe-nom_de_l_application.sql

Si la bdd nécessite une templétisation il est préférable de découper la bdd en deux fichiers MySql.<br />
L'un avec la partie à templétiser et l'autre avec le reste.<br />
Cette découpe fait gagner un temps considérable lors du reconfigure.<br />

Stockage des données

Exemple de Dokuwiki<br />
Pour être prise en charge par la sauvegarde Bacula les données des applications sont stockées dans :

/home/www-data/var/www/html/nom_de_l'application

Commandes systèmes

Création d'un patch
diff -uNr toto/ toto.new/ > patch/toto.patch
Application d'un patch
patch -d /home/username/travail -p0 < toto.patch
Changer le mot de passe PhpMyAdmin après un reconfigure
mysql_pwd

Très pratique dans la conception de page web.<br>
Console permettant le debbugage Javascript et Css:<br>
[https://addons.mozilla.org/firefox/1843/ Firebug]