YACS Le livre de Yacs Guide d'installation et de mise à jour

PrécédentSuivantIndex

Comment réussir une mise à jour incrémentale ?

Sachant que les nouvelles versions de YACS s'enchainent rapidement, à raison d'une par mois environ, il est vital de maîtriser le processus de mise à jour. Heureusement, plusieurs mécanismes ont été prévus pour vous simplifier la vie. Dans le cas idéal, une mise à jour ne dure pas plus de quelques minutes. Mais comment faire ?

En premier lieu, sachez que YACS a été conçu dés le départ comme un logiciel susceptible d'évoluer très rapidement par le moyen d'une suite de versions itératives.

[title]YACS utilise la fonction de cryptage MD5 pour identifier les scripts modifiés[/title]

Les différentes versions de YACS possèdent bien un numéro de version permettant d'identifier clairement les ensembles de scripts qui les constituent. Toutefois, YACS ne dispose pas d'un schéma de numérotation permettant d'identifier chacun des scripts d'une version comme lui appartenant. YACS utilise à la place une fonction de hachage cryptographique MD5 qui marque chacun des scripts de référence d'une version . Ainsi lorsque les scripts d'un serveur YACS sont tous munis de la même empreinte MD5, ils sont à jour. Dans le cas contraire, ils doivent être mis à jour par le biais du serveur de référence .

En fait, une partie des scripts de YACS sont entièrement dévolus à la maintenance semi-automatique du logiciel, en partant de cette approche particulière du dépot d'empreinte MD5. Des détails plus techniques sont fournis dans la documentation du logiciel lui même. Voir à ce propos le script scripts/index.php).

[title]Comprendre les étapes d'une mise à jour[/title] Plusieurs scripts sont dédiés spécialement à la prise en charge des aspects les plus pénibles de ce qui constitue souvent une mise à jour. De plus, ces scripts ont été attachés les uns aux autres, chaînés à la manière des différentes étapes d'un assistant logiciel.

Ensemble, ces scripts vont accomplir les tâches suivantes: [list=1] - obtenir une copie locale des nouveaux fichiers, et des fichiers modifiés - faire valider la mise à jour par l'opérateur - fermer le serveur à la navigation ordinaire, pour éviter les effets de bord pendant la mise à jour - remplacer les anciens scripts par les nouveaux - rechercher les extensions du logiciel dans les scripts mis à jour - mettre à jour la structure et les index de la base de données - lancer les scripts d'execution à fontionnement unique - rouvrir le serveur à la navigation normale [/list]

[title]Chargement local des nouveaux fichiers[/title]

Pour déclencher une mise à jour, visitez le panneau de contrôle (control/) du serveur qui doit être mis à jour. Depuis le panneau de contrôle, sélectionnez la commande 'Mise à jour'.

YACS fournit la date de votre dernière mise à jour, le cas échéant. Cliquez sur le lien 'Mettre les scripts à jour' pour déclencher le chargement des nouveaux fichiers (script scripts/stage.php).

YACS commence toujours par obtenir une copie locale des nouveaux scripts, placés dans le répertoire scripts/staging, et plusieurs méthodes sont disponibles pour ce faire : [*] mise à jour incrémentale par le réseau depuis un serveur de référence [*] téléchargement direct d'une archive complète de YACS [*] téléchargement séparé d'une archive dans le répertoire inbox/yacs [*] téléchargement séparé des scripts dans le répertoire scripts/staging

La mise à jour incrémentale par le réseau est la plus automatisée, mais aussi la plus fragile, à cause du grand nombre de requêtes effectuées vers le serveur de référence. YACS obtient tout d'abord du serveur la liste de référence des scripts avec leur signature MD5. Ensuite, il effectue une requête vers le serveur de référence pour obtenir chacun des scripts nouveaux ou modifiés, et les place dans le répertoire scripts/staging. Ces échanges peuvent être compromis soit du fait de pertes de paquets, soit, le plus souvent, par dépassement des temps maximum d'exécution alloués aux scripts PHP. Cette synchronisation peut durer plusieurs minutes à chaque mise à jour, et ceci est rarement compatible avec la limite imposée par beaucoup d'hébergeurs d'entrée de gamme, typiquement, trente secondes. En résumé, la mise à jour incrémentale par le réseau est à réserver aux cas bien maitrisés, lorsqu'il n'y a pas de limite au temps d'exécution, et lorsque les conditions réseau sont bonnes (moins de 1 % de paquets perdus, et moins de 60 ms de latence réseau). Le serveur de référence par défaut est www.yacs.fr mais pour pouvez changer ceci par le panneau de configuration des scripts, accessible depuis le panneau de contrôle.

Le seconde méthode consiste à effectuer une seule transaction réseau, pour s'affranchir en partie des problèmes évoqués précédemment. Il faut, avant de lancer la mise à jour, télécharger sur son poste de travail une archive complète du logiciel. Dans le formulaire de mise à jour, cliquer sur le bouton pour choisir cette archive, puis sur le bouton d'envoi de l'archive. Après transmission, YACS va extraire tous les fichiers et les placer directement dans le répertoire scripts/staging. Cette méthode peut être impraticable soit par limitation de la taille des fichiers acceptés par l'hébergeur (typiquement, 2 millions d'octets, ce qui est très nettement insuffisant), soit par limitation du temps d'extraction des fichiers. Avec une bonne machine, l'extraction n'est pas vraiment un problème (moins d'une seconde de traitement) mais sur une machine très mutualisée, c'est une autre histoire... Cette méthode est excellente pour mettre une machine à jour en l'absence de serveur de référence. Par exemple, c'est comme ça que yetanother... est mis à jour à chaque nouvelle version de YACS. Attention, cette méthode requière plus de place disque que la précédente, vérifiez que vous avez une dizaine de méga-octets disponibles avant de commencer.

La troisième méthode est semblable à la précédente, et permet de contourner les problèmes de taille de fichiers. Le plus souvent, les limites fixées par les hébergeurs sont supérieures pour FTP que pour les échanges web. L'astuce consiste donc à obtenir une archive complète de YACS sur votre machine, puis à la transférer vers votre serveur, dans le répertoire inbox/yacs. Vous devrez créer ce répertoire manuellement s'il n'existe pas, à l'aide de votre outil de transfert FTP ou équivalent. Lorsque le transfert est terminé, basculer sur le navigateur et activer le script de mise à jour. L'archive que vous venez de transférer devrait être mentionnée dans la page, et en cliquant dessus vous provoquerez l'extraction des fichiers vers le répertoire scripts/staging. Les seules limites à cette méthode sont le temps d'extraction des fichiers d'une part, et la place disponible d'autre part. En effet, pendant l'extraction votre serveur abritera trois copies de YACS, une opérationelle, une dans le répertoire scripts/staging et la troisième, compactée, dans l'archive placée dans inbox/yacs.

Que faire si votre serveur ne supporte aucune des trois méthodes précédentes ? Bon, je suppose que si vous vous posez la question, c'est que vous n'êtes pas près de changer d'hébergeur ... Alors, armez-vous de courage, pour tranférer l'intégralité des fichiers de YACS dans le répertoire scripts/staging. Pour cela, vous devrez obtenir une archive complète de YACS, extraire tous les fichiers sur votre machine, puis envoyer le tout vers le serveur. Je recommande Filezilla pour faire ce genre d'opérations rapidement et en toute sécurité. Attention de bien configurer l'outil pour écrire dans le sous-répertoire scripts/staging, et non à la racine d'installation de YACS. Après le transfert, basculer sur le navigateur et activer le script de mise à jour. Allez directement en bas de la page pour cliquer sur lien qui va lancer 'la mise à jour' effective.

A ce stade, aucun des scripts opérationnels de votre serveur n'a été touché. YACS dispose à présent d'un référentiel local des fichiers à mettre à jour, et il est temps de passer aux choses sérieuses.

[title]Validation et activation des nouveaux scripts[/title]

Lorsque le répertoire scripts/staging contient soit les nouveaux scripts, soit l'intégralité des scripts de YACS, le script suivant (scripts/update.php) reprend la liste de référence, et présente à l'écran la liste des modifications qui vont être effectuées. Après contrôle visuel par l'opérateur, un clic sur le bouton en bas de page provoque la fermeture du site et, dans la foulée, le remplacement effectif des scripts. Par sécurité, les anciens scripts sont renommés avec l'extension .bak pour vous permettre de restaurer l'ancienne configuration en cas de gros coup dur. Si cela devait vous arriver, vous pourrez le faire manuellement à travers un outil de manipulation de fichiers type Filezilla ou équivalent. Même avec de grosses mises à jour, cette opération devrait être assez courte, et YACS vous propose alors une série d'écrans permettant de finaliser la mise à jour. A chaque fois, aller jusqu'en bas de page pour cliquer sur le bouton qui permet de passer à l'étape suivante.

Après l'activation des nouveaux scripts, YACS enchaine les étapes suivantes :

[*] Recherche des extensions de logiciel, pour être sûr d'intégrer les changements à ce niveau le plus tôt possible. Le système d'extension proposé par YACS permet par exemple d'étendre la structure de la base de données, et il est donc vital de prendre ceci en compte avant l'étape suivante. En dehors des phases de mise à jour, vous pouvez lancer le script de recherche (control/scan.php) directement depuis le panneau de contrôle à tout moment.

[*] Mise à jour de la structure de la base de données. Il arrive assez souvent qu'une nouvelle version s'accompagne de nouveaux champs ou tables dans la base de données. YACS dispose de son propre module de description des données, ce qui lui permet de mettre à jour la structure de la base de données à la volée. Au passage, les index sont renconstruits, et la répartition des données est optimisée. Si vous devez reprendre la mise à jour manuellement vous pouvez lancer le script de maintenance de la base de données (control/setup.php), à partir du panneau de contrôle.

[*] Lancement des scripts à exécution unique. Après la mise à jour des scripts et de la base de données, il reste encore à modifier les autres types de fichiers, par exemple les feuilles de style de référence, les fichiers images ou encore les fichiers de localisation fournies avec YACS. Cette tâche est dévolue à des scripts particuliers, inclus avec les mises à jour, et placés dans le répertoire scripts/run_once. YACS les exécute (c'est la tâche de scripts/run_once.php), puis les renomme avec l'extension .done pour être sûr de ne pas recommencer.

Normalement la mise à jour dure moins de dix minutes,y compris le téléchargement des nouveaux scripts depuis le serveur de référence, la révision de la structure de la base de données, et l'exécution de chacun des scripts de post-installation. Est-ce difficile ? Pas vraiment, sauf s'il y a des complications.

[title]Que faire en cas de problème ?[/title] Quelquefois la mise à jour automatique s'avère impossible à effectuer. Surtout pas de panique... N'insistez pas trop et appliquez plutôt le plan de secours : Comment faire une mise à jour par écrasement ?

Et si vous perdez votre session en plein milieu d'une mise à jour, sachez repartir du bon pied : Comment terminer une mise à jour du logiciel en cas de déconnexion ?

PrécédentSuivantIndex