mercredi 6 mai 2009, par , 1558 Vues
Noter cet article
J’ai récemment migré de SPIP 1.9.2 à SPIP 2.0.7, ce n’est pas trop mal.
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
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
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.
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.
SPIP
SPIP 2.0.7 Site SPIP officiel
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-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
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)