Mettre à Jour Une Ancienne Version De Cms Made Simple

Avertissement

CMS Made Simple

Cet article décrit le processus de mise à jour que j’ai suivi pour mettre à jour une version de CMSMS 1.6.6 vers la dernière en date à ce jour, CMSMS version 1.11.4.

Tout se passe sur une copie du site de départ qui a été mise en ligne sur une autre adresse (utilisation d’un sous-domaine). L’hébergeur est OVH, offre mutualisée Perso.

Il existe un guide (en anglais) décrivant la mise à jour d’une ancienne version.

Comme toujours, vous avez fait des sauvegardes et vous procédez à une mise à jour sur un site de test, comme moi, car vous aimez dormir la nuit.

C’est parti

Pré-requis

  • BACKUP des fichiers et de la base
  • PHP 5.3.x => la configuration minimale requise est la version PHP 5.2.4 recommandé PHP 5.2.12

Mise à jour

CMS Made Simple

  • htaccess : PHP 5.2.17 (OVH)
  • Mettre à jour tous les plugins
  • vider le répertoire tmp/templates_c
  • Passer le site en MAINTENANCE
  • htaccess : PHP 5.2.17 OK, mais PHP 5.3.2 ou plus est recommandé pour des problèmes de compatibilité avec les modules tierces parties
  • htaccess : ajouter en début de fichier SetEnv PHP_VER 5_3
  • htaccess : avec OVH, ne pas changer php_flag register_globals Off comme indiqué dans la procédure d’upgrade
  • upload nouvelle version CMSMS
  • Avant la mise à jour, le répertoire d’admin, s’il a été renommé, doit être « admin »
  • SITE/install/upgrade.php

Erreurs rencontrées

  • Avec SetEnv PHP_VER 5_3 -> on rencontre l’avertissement E_DEPRECATED is enabled dans le processus de MAJ
  • Checking PHP register globals – PHP register globals is active. For security reasons, this should be disabled. Bon, ça nous empêche pas de dormir.
  • Notez que PHP 5.2.17 est compatible, on pourrait en rester là. Mais bon, on met à jour ou bien ? On réessaye avec PHP 5.2 (modification de .htaccess et reload de la procédure de MAJ). Bon, si on a pas les erreurs maintenant on les aura plus tard, allez retour à htaccess : SetEnv PHP_VER 5_3, version de PHP qu’on gardera par la suite, donc autant s’y faire.

Note : A l’étape 6 script de mise à jour, nous avons de nombreuses erreurs. Pas vous ?

On continue. Si vous avez, à très juste titre, modifié le nom du répertoir d’admin TOTO : renommez-le admin_OLD et renommez le nouveau répertoire d’admin tel que vous l’avez mis dans le fichier de configuration (TOTO donc).

On se loggue dans l’interface d’aministration, et là, plein d’erreurs apparaissent en haut de page. C’est là qu’on se dit qu’il aurait peut-être mieux valu RTFM :

"If your current version is version 1.6.7 and you wish to upgrade to 1.10.1,
you should at a minimum upgrade to version 1.7, then to version 1.8, 1.9,
and finally version 1.10.1..."
  • CGExtensions  : Mettre à niveau -> (affichage sans CSS), puis disparition des erreur. Visiblement c’est CGExtensions qui ne supporte pas le saut de 3 ou 4 générations de versions.
  • FormBuilder :  Mettre à niveau
  • MenuManager : Mettre à niveau
  • SiteMapMadeSimple : Mettre à niveau
  • TinyMCE : Mettre à niveau
  • (Bref, mettre à jour tous les modules)
  • Désactiver le mode Maintenance
  • Vider le cache

Vérifications

  • Problème avec le formulaire de contact (FormBuilder) lorsqu’on le valide : « The following From address failed ». Ah.
  • Vérification du module CMSMailer. Méthode d’envoi des emails : SMTP (!) à changer par : Mail -> OK. Ehéh.
  • Facultatif : Par la même occasion, remplacer Adresse de l’expéditeur : avec la bonne adresse (et pas root@localhost par défaut)
  • Facultatif :Remettre l’email du propriétaire du site (à la place de votre adresse Gmail de test…)
  • Pas facultatif (mais ça dépend de vous) : Tiens, un problème avec un truc obsolète, les assignations de variables  de bloc de contenu du genre : {content block= »monbloc » assign= »lebloc »} ben ça marche plus….

Sympa : la solution générale avec la documentation sur les Content block (en english) !

Il faut assigner les variables en début de template pour s’en servir plsu tard (une ou plusieurs fois dans problème), c’est vrai que c’e’st plus propre comme ça.

{content block=price label="Prix du produit" wysiwyg="false" assign=leprix}
 <!-- Only show content block when it has some content -->
 {if $leprix}
 {$leprix}
 {/if}

Sécurisation

Et oui, c’est pas WordPress, mais on va quand même essayer de sécuriser un peu l’install après le mal qu’on s’est donné.

Documentation en anglais : http://docs.cmsmadesimple.org/general-information/securing-cmsms

Les trucs de base

  • Lire le fichier INSTALL.TXT et autre README sur les droits des répertoires et fichiers
  • Supprimer le répertoire /install
  • Renommer le répertoire d’administration
  • Et donc, modifier son dans le le config.php
  • htaccess : décommenter les 2 lignes suivantes si le serveur le permet.
    # (this is important, so uncomment if your host permits)
    #Options -Indexes
    #ServerSignature Off

Modules pour sécuriser CMSMS

Pas testé, vous me direz 😉

Mail UDT : pour recevoir un email lorsqu’une tentative de connexion à l’administration échoue.
CGSmartImage : masque l’arborescence des répertoires et ajout un watermark sur les images (?)

Balises utilisateur (tag) pour sécuriser CMSMS

Création d’un l’UDT (User Defined Tag : balise utilisateur) pour tracer l’évènement « LoginFailed » et recevoir par mail le login et l’adresse IP (miam) du petit rigolo qui essaye de rentrer.

$cmsmailer = cms_utils::get_module('CMSMailer');
 // Receiver
 $cmsmailer->AddAddress('admin@website.com','Name');
 // Sender
 $cmsmailer->SetFrom('noreply@website.com');
 $cmsmailer->SetFromName('CMS Website.com');
 // Subject
 $username = $_SESSION['login_user_username'];
 $ipaddress = cms_utils::get_real_ip();
 $cmsmailer->SetSubject('Failed login: ' . $username . ' ' . $ipaddress);
 // Content
 $content = 'There has been a failed login in your admin panel!';
 $cmsmailer->SetBody($content);
 $cmsmailer->IsHTML(true);
 // Send mail
 $cmsmailer->Send();

Ou encore Ban IP-address UDT, pour banir une adresse IP. Voir le code :

$banned = array ("xxx.xxx.xxx.xxx","yyy.yyy.yyy.yyy","zzz.zzz.zzz.zzz");
 $ipaddress = cms_utils::get_real_ip();
 if (in_array($ipaddress, $banned))
 die ("You are banned from this website!");

Et ajouter en début de template : {ip_ban}

Autres sources de documentation :

http://wiki.cmsmadesimple.fr/wiki/Maj_cmsmadesimple_localhost
http://jc.etiemble.free.fr/abc/index.php?page=ressourcesfr
http://www.cmsmadesimple.fr/forum/viewtopic.php?id=4814

Laisser un commentaire

Votre email ne sera pas publié. Les champs requis sont marqués *

*

*


Time limit is exhausted. Please reload CAPTCHA.