Migrer Magento sous un autre serveur

Dans: Magento

23 juil 2009

Migrer un site Magento, tout comme n’importe quelle autre plateforme e-commerce ou CMS ne se fait pas en déplaçant simplement les fichiers et la base de données. Il faut changer certaines variables pour que votre serveur de production fonctionne aussi bien que votre serveur de développement.

Marche à suivre :

1) Sur le serveur de dev/demo :

  • Aller dans Système > Configuration > onglet Web (Général, sans changer de boutique), dans les sous onglets « Non sécurisé » et « Sécurisé » remplacer l’URL de base par « {{base_url}} » (sans les doubles quotes)
  • Faire un backup des fichiers et de la base de données.

2) Sur le serveur de démo/prod :

  • Envoyer tous les fichiers, et importer la base de données
  • Editer le fichier /app/etc/local.xml et modifier les accès à la base de données
  • Vider les dossiers /var/cache et /var/session
  • Mettre les droits en 777 sur les dossiers (et tous leurs sous répertoires et fichiers) : /app/etc, /var, /media
  • Lancer le site… Si tout marche, il ne reste plus qu’à changer les {{base_url}} par la nouvelle URL du site.

Problème : Magento Connect ne fonctionne plus : ERROR: failed to mkdir

Après la migration du serveur, il est arrivé d’avoir un message d’erreur lors de l’installation d’un nouveau module (Fontis WYSIWYG par exemple).
Pour régler le problème il faut supprimer (ou renommez-le si vous avez peur) le fichier : « /downloader/pearlib/pear.ini »

Vous pouvez maintenant revenir à la page d’accueil de votre Magento connect (http://monsite.com/downloader par exemple) et installer votre module.

La suite des erreurs dans un article séparé.

23 Commentaires pour Migrer Magento sous un autre serveur

Avatar

Erreurs rencontrées lors d’un transfert de Magento sur un serveur Privé - Frédéric Martinez

septembre 16th, 2009 à 22 h 18 min

[...] Tout ceci est décris dans un précédent article, comment transférer un site Magento sur un autre serveur. [...]

Avatar

Jose

novembre 18th, 2009 à 19 h 14 min

bonjour, je voulais savoir si la procédure est la même pour changer le répertoire de magento: exemple
actuellement l’adresse de ma boutique est http://www.maboutique.com/shop et je voudrais la déplacer sur http://www.maboutique.com

merci

Avatar

Frédéric Martinez

novembre 18th, 2009 à 19 h 25 min

Bonsoir,

Oui il suffit de modifier le {{base_url}} dans l’administration avant de déplacer les fichiers dans le dossier parent.

Ou bien déplacer les fichiers et après modifier la valeur base_url dans la base de données (table : core_config_data). (ne pas oublier le « / » à la fin de votre champ « value ».

Avatar

Jose

novembre 20th, 2009 à 12 h 19 min

bonjour,
j’ai bien modifié la nouvelle adresse dans l’admin, donc quand je vais à l’adresse http://www.maboutique.com , pas de soucie. Par contre lorsque je clicke sur un produit ou autre je tombe sur une page « not found » idem lorsque je veux me connecter à l’admin. http://www.maboutique.com/admin

j’ai du raté un truc mais quoi?, merci pour votre aide.
PS: Pour info lorsque j’ai changer l’adresse dans l’admin et que j’ai validé, je suis tomber sur une page « not found »

Avatar

Frédéric Martinez

novembre 20th, 2009 à 14 h 00 min

Tous vos produits et vos pages sont liés à cette « base URL ». Rafraichissez le cache (videz le dossier /var/cache) et cela devrait normalement remettre en place vos liens cassés.

Avatar

Jose

novembre 20th, 2009 à 15 h 13 min

desolé si je polue, dans le répertoire /var , j’ai /var/cache (qui est vide maintenant de tous fichier et sous repertoire) j’ai /var/report (dans lequel il y a des fichier) j’ai /var/session ( qui est vide) et j’ai également dans le répertoir /var un fichier .htaccess

dois-je supprimer autre chose? car cela ne fonctionne toujours pas, merci

Avatar

cyrille

janvier 30th, 2010 à 16 h 54 min

bonjour,
sujet très utile mais exactement le même problème pour moi que José.
Le magento en développement n’est pas à la racine du site mais dans un sous répertoire.
le problème 1 est résolu mais tout les liens donnent une erreur 404 (y compris admin) ou renvoient vers le serveur en prod.
une petite idée ? car j’ai tout essayé.
merci.

Avatar

bruno

février 11th, 2010 à 14 h 27 min

Bonjour, je viens de migrer magento sur un autre serveur, j’ai donc effectué toutes les modifications ci-dessus, et cela c’est passer sans problèmes. L’admin est fonctionnel.

Par contre lorsque j’accede au front, celui-ci charge puis s’interompt, si je regarde le code source de la page il s’arrete a :

Cela vous est’il déjà arriver?

Merci

Avatar

bruno

février 11th, 2010 à 14 h 29 min

le code html a eté squizer donc cela s’arrete a l’ouverture de la balise header ^^

Avatar

tounet

septembre 13th, 2010 à 18 h 08 min

bonjour, super artcle qui ma bien aidé mais jai encore un probleme pour remettre les identifiant a 0 phpmyadmin me donne une erreur:

Erreur
requête SQL:

UPDATE core_store SET store_id =0 WHERE code = ‘admin’;

MySQL a répondu:

#1452 – Cannot add or update a child row: a foreign key constraint fails (`cfpsecurcfp/core_store`, CONSTRAINT `FK_STORE_WEBSITE` FOREIGN KEY (`website_id`) REFERENCES `core_website` (`website_id`) ON DELETE CASCADE ON UPDATE CASCADE)

pouvez vous m’aider ? merci

Avatar

Frédéric Martinez

septembre 14th, 2010 à 12 h 38 min

Bonjour,

Il est préférable de ne plus exécuter cette requête (je vais la supprimer du post) car ce problème ne se pose plus à vrai dire.

Donc inutile d’exécuter cette requête. De plus, votre message d’erreur vous indique que la valeur est vérouillée (clef étrangère), donc impossible à mettre à jour .

Avatar

Bauer

septembre 26th, 2010 à 0 h 37 min

Pour mon cas, je je souhaites dupliquer un site http://www.a.com en http://www.b.com dans 2 répertoires de mon serveur /home/a/www et /home/b/www. Tout se passe bien (tant au niveau de la base que du front que du back) Mon seul problème est au niveau de magento Connect où les extensions visibles depuis magento connect de b pointes toujours vers a (j’ai fait un test de désinstallation d’une extension peu sensible).

En cherchant un peu, il y a plusieurs fichiers .reg dans /home/b/www/downloader/pearlib/php/.registry qui contiennent en dur le chemin d’accès au répertoire du site a. J’ai essayé de les patcher à la main… plus rien de fonctionne dans magento connect.
Je ne peux malheureusement pas utliser la commande ./pear upgrade-all puisque je suis en 1.3.2.4 et souhaite y reste (pour le moment). Je veux justement dupliquer mon environnement de prod pour y tester la migration.

Merci de votre aide.

Avatar

Frédéric Martinez

octobre 2nd, 2010 à 0 h 58 min

Bonjour Bauer,

Et en supprimant le fichier : /downloader/pearlib/pear.ini ?
Cela donne quoi ?

Avatar

Frédéric Martinez

octobre 2nd, 2010 à 0 h 58 min

Bonjour Bauer,

Et en supprimant le fichier : /downloader/pearlib/pear.ini
Cela donne quoi ?

Avatar

JP Bauer

octobre 2nd, 2010 à 18 h 40 min

La suppression de pear.ini permet simplement de pouvoir installer convenablement de nouveaux plugin, mais pas de mettre à jour ceux déjà installés.

J’ai trouvé un script qui patche les fichiers .reg des sous arborescences qui posent justement problème

http://diglin.com/diglin/fr/articles/magento.html chercher unserialize-pear-reg-files.php

Avatar

kranich

décembre 17th, 2010 à 16 h 41 min

bonjour et merci, j’ai suivi votre tutoriel, mais impossible acceder au backoffice (admin)

j’ai une page erreur 404

Avatar

Anselme

février 6th, 2011 à 19 h 05 min

Pour ceux qui aurait un probleme apres le transfert et qui voit leur page d accueil mais n arrivent pas a acceder a l admin et a leur lien.

Cela veut sansdoute dire que vous avez un probleme au niveau de l url rewriting.
Verifiez que votre .htacess soit bien present.
Cela m est arrive que en copiant les fichiers il ne copie pas le .htacess car sous linux un fichier avec un . est considere comme invisible (mais visible avec le ls -A)

Sinon verifier vos declaration de mod rewrite dans votre config apache et vos hotes virtuels.

Bon courage,

Anselme

Avatar

romain

août 12th, 2011 à 11 h 13 min

Bonjour,

j’ai migré mon serveur de prod (systeme LAMP) sur mon serveur local (avec WAMP) avec votre methodologie.
ça marche bien, j’ai mon admin, mon front.

Le soucis c’est que ma balise head (pour les metadonnées) est completement vide pour toute les pages de mon site.

J’ai investigué et j’ai vu que le fichier page/html/head.phtml ne s’affiche pas dans mon 3columns.phtml (la ligne ?php echo $this->getChildHtml(‘head’) ?> sort rien).

Je ne comprend pas l’incidence avec ma migration.

voyez vous une explication ?

Je vous en remercie d’avance car j’avoue que je suis dans l’impasse.

Romain

Avatar

steph

septembre 21st, 2011 à 21 h 16 min

Bonjour
J’ai une question : J’ai migré un site magento sur un nouveau serveur en prenant soin de bien garder les mêmes mots de passe et login ftp (pour les droits sur fichiers).
Aujourd’hui tout marche mais pas l’upload d’images pour illustrer mes fiches produits. Pourtant je pense avoir bien mis les droits d’écritures à 777 sur les dossiers.

Une idée???

Merci de votre aide.

Steph

Avatar

Frédéric Martinez

janvier 5th, 2012 à 14 h 10 min

@JP Bauer : Merci pour l’astuce

@kranish : et avec /index.php/admin cela fonctionne ? Si oui, il vous faut activé l’URL Rewrite dans votre Apache. Sinon, ce n’est pas la bonne admin ou l’URL de base n’est pas bonne

@romain : aucune idée, surtout via une migration en fait, peut-être des URL écrites en dur quelque part ?

@steph : seul le dossier /media doit être en 777. Votre serveur accepte-t-il l’upload de fichier ? Votre image n’est-elle pas trop grosse ?

Avatar

512banque

janvier 31st, 2013 à 7 h 06 min

@Anselme « Sinon verifier vos declaration de mod rewrite dans votre config apache et vos hotes virtuels. »

Tu m’as sauvé la vie. Epouse-moi.

Avatar

Yann bricoleur magento près d'Agen

juillet 28th, 2013 à 22 h 01 min

Merci pour ce tuto utile même aux habitués. On a toujours vite fait d’oublier un truc.

Par exemple :
- les tâches cron que vous avez pu configurer sur le serveur de départ
- les htaccess custom pour sécuriser les dossiers de config ! (le cp * ne copie pas les fichiers cachés)
- les cgi de paiement CB parfois placés dans un dossier spécifique hors racine de l’hébergement.
- …

Si c’est un serveur de test, j’ai tendance à souvent préparer un petit script shell pour ne rien oublier si je dois faire la migration régulièrement. Par exemple s’il s’agit d’un serveur pour tester les modifs avant de les passer en prod.

Avatar

Frédéric Martinez

juillet 29th, 2013 à 10 h 08 min

@Yann : Merci pour ce complément, en effet les 3 points que tu cites sont à prendre en compte, surtout le 1er avec le cron.

Formulaire pour Commenter

Si vous en avez besoin, entourez votre code :

PHP : [php]echo $variable[/php]
XML : [xml]<default></default>[/xml]

Je m'appelle Frédéric Martinez.

Je suis Freelance Magento, fondateur de l'agence web e-commerce PH2M et anciennement étudiant en Master MIAGE à Toulouse.

Ce site présente mes réalisations professionnelles, personnelles et universitaires.

Magento Certified Developer Plus

rss_32 twitter_32 Magento

  • Vincent MARMIESSE: Bonjour, Attention depuis Magento 1.9.2.0, les blocs CMS sont en cache ! Cela ne pose pas de pro [...]
  • Java2dev: Bonjour, pour l'Etape 1 a quel niveau on met les codes? dans quel folder et c'est un fichier a edit [...]
  • manuel: Bonjour Frédéric, j'aimerais savoir comment enlever l'option de ( signature obligatoire ) de mon m [...]
  • Arsene: Bonjour a tous, j'aimerais savoir comment créer un module qui propose des options d'assurance su [...]
  • Frédéric Martinez: @Thomas : Il y aura toujours de la perte sur les personnes ne retournant pas sur la page de success. [...]