Le Portal Pacher
Accueil > Software > Internet > Migration SPIP 1.9.2 à SPIP 2.0.7

Migration SPIP 1.9.2 à SPIP 2.0.7

mercredi 6 mai 2009, par Phi, 5247 Vues

Noter cet article
3 votes

J’ai récemment migré de SPIP 1.9.2 à SPIP 2.0.7, ce n’est pas trop mal.


Comment migrer SPIP ?

En fait je n’avais pas particulièrement besoin d’une nouvelle fonctionnalité, mais c’était une bonne occasion pour sauvegarder et nettoyer mon site SPIP puisque j’ai toujours du mal pour comprendre l’organisation des répertoires et des sauvegardes.

SPIP 1.9.2c était assez résistant aux hacks, mais j’avais un problème de SPAM chinois que Captcha2 n’arrivait pas à arrêter et qui m’obligeait à modérer mes forums. Par ailleurs j’ai toujours eu des difficultés avec la philosophie et la programmation de SPIP, j’oublie assez rapidement comment faire.

La migration est assez facile en suivant les étapes de SPIP Contrib, qui permet aussi d’avoir une installation propre.

Je rappelle que SPIP est très particulier dans le sens ou il faut installer la nouvelle version sur une existante pour upgrader la base de données et qu’il est impossible de reprendre une sauvegarde de base de données dans une nouvelle version - ce qui oblige en pratique avec d’anciennes sauvegardes de réinstaller la vieille version de SPIP pour upgrader

Etapes de migration

Globalement j’ai effectué les étapes suivantes :

1) Dans l’interface privée : Désactiver les plugins, vider le cache, sauvegarde de la base dans tmp/dump au cas où

2) Plutôt qu’installer par dessus (méthode SPIP) ou déplacer les répertoires inutiles (méthode SPIP Contrib), je renomme le répertoire racine en racine_old.

Deux avantages : au cas ou on peut retrouver l’ancienne architecture en renommant racine_old en racine et re-uploader la base sauvegardée, et de plus vous n’avez plus de visites sur votre site ou de modifications éventuelles pendant la sauvegarde.

3) Je dézippe le fichier spip dans un nouveau répertoire racine (même nom que l’original). Je suis hébergé par 1and1, donc soit j’utilise le webtransfert des fichiers qui permet de dézipper les archives zip puis je renomme spip en racine, soit je crée un nouveau répertoire racine et j’utilise spip-loader.php.

4) Je copie ou déplace uniquement deux répertoires originaux : IMG et config de racine_old à racine

5) Je vais dans http://www.monsite.com/racine/ecrire/ et j’accepte la mise à jour des données - et voilà !

Note : la première fois cela m’a affiché les pages sans mise à jour puis fait "internal server error", cela m’a fait peur - mais après un redémarrage de firefox et un actualiser cela a marché, ouf

C’est tout le site est migré sous SPIP 2.0.7 !

Au final les répertoires suivants ont disparu :
- dist - remplacé par squelettes-dist
- oo
- par ailleurs plugins, squelettes ne sont pas créés et IMG, config sont vides
- un nouveau répertoire privé est crée

La nouvelle architecture me parait plus claire

Sauvegarde

Donc au final pour reconstruire votre site SPIP à l’identique désormais il ne faut que sauvegarder :
- la base en dump complet (toutes les tables)
- le répertoire config
- le répertoire IMG
- lé répertoire squelettes
- le fichier .htaccess de la racine

et c’est tout !

Les modifications javascript éventuelles et les plugins peuvent être réinstallés proprement à part

Comment configurer SPIP ?

Htaccess et URL propres

Le .htaccess de la version 2.0.7. est très proche de la version précédente. J’ai effectué des modifications identiques.

A noter que sous windows, vous ne pouvez pas renommer le fichier htaccess.txt en .htaccess, la solution est de lancer cmd dans démarrer exécuter, taper cd Bureau, puis rename htaccess.txt .htaccess si le fichier est sur votre bureau de windows.

Activation des URL propres

Elles sont désormais activées directement dans les paramètres avancés au lieu d’aller dans mes fonctions.php : je préfère url html.

Squelettes

J’ai remis mes squelettes dans le répertoire squelettes. A noter qu’au début j’ai essayé de remettre mes modifications dans les nouveaux fichiers squelettes mais j’ai vite abandonné puisque ma configuration est un peu trop différente (j’ai repris un thème de Limbo qui lui même était modifié pour s’adapter aux thèmes précédents du Portal Pacher).

J’ai donc juste tout recopié l’ancien répertoire squelettes qui incluait principalement : sommaire.html, article.html, rubrique.html, inc-rubriques.html et inc_entete.html.

D’autres pages n’ont pas fonctionné : j’ai alors recopié les anciens fichiers dist de la 1.9.2 suivants : auteur.html, recherche.html, breve.html menu_lang.html

A noter qu’il faut adapter formulaires/recherche.html puisque la nouvelle version inclut un acceskey, sans ce dernier l’ancien formulaire ne fonctionne pas.

Ma revue des nouveaux squelettes n’a cependant pas montré de modifications majeures sur les fichiers utilisés, sauf que la plupart des blocs de style ne semblent plus être les mêmes en forme et en nom (ex : class menu breves au lieu de breves), ce qui m’a donné trop de travail au départ d’où la méthode copier coller.

Note : Je n’ai jamais vraiment compris l’architecture CSS de SPIP et je n’ai pas trouvé de schéma clair qui indique chacun des éléments et son rôle

Javascript : minification

1and1 Webcontrol : 217 Ko soit 29 s avec un modem 56K

SPIP utilise jquery, le problème à mon avis est que les deux librairies javascript jquery.js et jquery.form.js font 120 Ko et doublent le temps de download de ma page principale.

Les deux coupables : jquery.js et jquery.form.js

J’ai commencé le Portal Pacher sur un modem 2400 bauds en texte et même si mon souci de bande passante a diminué avec le temps cela me parait trop élevé : presque 30 secondes de chargement avec un modem 56 Kbps.

Le gain le plus probant est d’utiliser un "minificateur" de Javascript comme JSMin.

La syntaxe est la suivante :

jsmin.exe <jquery.js >jquery_new.js

Gain après "minification" : presque 55 Ko

Je l’ai appliqué sur les deux fichiers dans

Zip - 20 ko
SPIP 2.0.7. jquery minified

puis j’ai remplacé les fichiers dans racine/prive/javascript. Gain de presque 50% tout en restant compatible avec tous les navigateurs.

1and1 Webcontrol : 160 Ko soit 21 s avec un modem 56K, plus raisonnable

A noter que le déboguage deviendra plus difficile puisque la version minifiée du javascript est beaucoup moins lisible.

CSS:minification

J’ai essayé d’utiliser la même méthode avec le CSS le plus gros soit habillage.css (environ 12 Ko).

En utilisant CSSCompressor, j’ai gagné 4 Ko, malheureusement il y avait qques bogues sur l’affichage des pages, j’ai du abandonner cette piste. Le gain cependant était plus modeste par rapport au javascript.

Javascript et CSS : compression

Au début, j’ai passé pas mal de temps à configurer 1 and 1 pour obtenir des fichiers compressés avec la méthode suivante expliquée par cet article

- ajout d’un .htaccess spécifique dans le répertoire racine/prive/javascript

RewriteEngine On

RewriteRule (.*)\.js /racine/prive/javascript/compressejs.php ?file=$1.css [L]

- création d’un fichier PHP pour la compression compressjs.php dans le répertoire racine/prive/javascript

< ?php
ob_start("ob_gzhandler") ;

header("Content-type : text/javascript ; charset : ISO-8859-1") ;

echo (file_get_contents ($file)) ;
 ?>

cela a bien fonctionné, ma page est descendue à 120 Ko environ soit presque 50% de la taille d’origine.

Pour CSS il suffit de changer Content-type : text/javascript ; en Content-type : text/css ;

Activation de la compression Javascript et CSS

Mais c’est beaucoup plus facile que cela : il suffit d’aller dans configuration SPIP 2.0.7., paramètres avancés et activer la compression CSS et javascript !

Note : on peut aussi activer la compression HTTP, cependant à mon avis c’est moins utile puisque la taille de mes pages html est plus petite et surtout cela ajoute un temps de latence de compression / décompression qui est assez sensible quand les pages sont courtes

Plugin No SPAM

Le Plug-in NOSPAM pour SPIP 2 marche parfaitement pour arrêter les SPAM forums, je ne sais pas comment il fait - il semble qu’il n’y a rien à configurer et qu’on a même pas besoin de captcha (qui n’est d’ailleurs pas encore disponible pour SPIP 2 vu le besoin réduit par l’efficacité de NOSPAM).

J’ai pu de nouveau enlever la modération à priori de mes forums.

Plugin Notation

Le Plug-in Notation pour SPIP 2 permet de noter les articles.

D’abord il y a eu un gros problème d’installation, en fait ce plug-in nécessite le Plug-in CFG pour SPIP 2, alors que ce n’est pas marqué clairement nulle part sur la page du plug-in Notation.

Ensuite, impossible de récupérer facilement CFG, ce n’est même pas dans la plupart des articles sur le sujet dans les pages sur les plug-ins SPIP 2.0.

Je pense que c’est une autre des raisons pour laquelle SPIP n’a pas un succès beaucoup plus considérable, la documentation est mal organisée et lacunaire, souvent erronée (et en programmation erronée = marche pas) - outre le fait qu’elle est souvent en français.

Et elle est mal organisée puisque SPIP n’est pas un CMS forums comme PHPBB, il faudrait créer un site développeur SPIP sur PHP BB même si cela semble une hérésie.

Enfin, j’ai galéré pour avoir la note de l’article courant, il faut ajouter la boucle suivante :

<BOUCLE_note(NOTATIONS_OBJETS){id_article}> #NOTATION_ETOILE{#NOTE_PONDEREE} </BOUCLE_note>

Ceci est cependant plus lié à la philosophie de SPIP en général, alors que j’ai des réflexes base de données qui ne sont pas nécessaires pour SPIP

A noter que si on change les paramètres de pondération (minimum de votes avant qu’elle soit significative) dans Interface privée/Forums/Notation, les anciennes notes ne sont pas recalculées ! bref il faut bien choisir dès le départ.

Conclusion

Les principaux avantages de SPIP 2.0.7. que je vois pour mes besoins sont les suivants :
- architecture des répertoires plus logique
- meilleure robustesse contre le SPAM avec No-SPAM
- options de sauvegardes plus élaborées : possibilité de sélectionner et sauvegarder les tables complémentaires (par exemples visiteurs et liens entrants)
- plus de différence entre images et documents (distinction artificielle)
- plus d’interface avancée dans la partie privée (option inutile)
- options de compression
- et le plug-in notation qui a fini par fonctionner

En plus cela m’a permis de nettoyer proprement mon installation SPIP.

Liens utiles

SPIP

SPIP 2.0.7 Site SPIP officiel

Présentation de SPIP 2.0

Article sur les apports de la version 2.0 de loiseau2nuit.net

Article Passage SPIP 1.9.2 vers 2.0.7 de Spip Contrib

Article Passage SPIP 1.9 à 2.0 de Wikitice

Article migration SPIP général Site SPIP officiel

Article sur l’installation de SPIP sur Windows Server 2003 et IIS 6.0

Plug-ins

Plug-ins SPIP 2.0

Plug-in NOSPAM pour SPIP 2 Pour arrêter les SPAM forum

Plug-in Notation pour SPIP 2 Pour noter les articles

Plug-in CFG pour SPIP 2 Nécessaire pour Notation

Autres

JSMin Minificateur Javascript

CSSCompressor Minificateur de CSS

Article compression GZIP chez 1and1 et OVH

Jquery

Article sur la "minification" de Pinal Bhatt

CuteHTML Un des rares éditeurs de texte pouvant faire des recherche / remplacer sur tous les fichiers ouverts (plus pratique que sed ou awk)


Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0