Magento - Plusieurs URL, plusieurs magasins, un seul Magento
- Détails
- Catégorie : Magento
- Créé le Samedi, 18 Juin 2011 08:48
- Mis à jour le Samedi, 25 Juin 2011 13:40
- Publié le Samedi, 18 Juin 2011 08:48
- Affichages : 899
Voici mes notes pour configurer rapidement plusieurs magasins à partir d'une installation Magento 1.5.1.0.
Ce tuto se sert d'une installation d'un serveur web dans un environnement de dev sous Ubuntu.
(voir Ubuntu 10.10 - Serveur de développement - Partie 1 et Ubuntu 10.10 - Serveur de développement - Partie 2)
Ajout : la gestion de l'URL Rewriting pour chaques magasins.
Préparation du poste hôte de Virtualbox
Pour commencer, étant donné que je suis dans un environnement de développement et pas sur internet, il faut que j'indique à ma machine (et aussi au serveur) qu'une URL pointe vers une adresse IP (je n'utilise pas de serveur DNS pour mes machines de dev.).
Par défaut, le serveur virtuel installé dans Virtualbox s'appelle monserveur.jbnet.lan, mais je voudrais que la même adresse IP réponde si dans mon navigateur j'utiliser les URL mag1.jbnet.lan et mag2.jbnet.lan.
Sur la machine hôte, il faut modifier le fichier /etc/hosts :
172.17.207.35 monserveur.jbnet.lan mag1.jbnet.lan mag2.jbnet.lan
Préparation du serveur dans Virtualbox
Il faut aussi indiquer au serveur que c'est normal de répondre aux 2 noms supplémentaires.
Donc répétons cette dernière opération sur le serveur, modifions le fichier /etc/hosts :
172.17.207.35 monserveur.jbnet.lan mag1.jbnet.lan mag2.jbnet.lan
Si je teste mes URL dans mon navigateur, c'est bien le même serveur qui répond.
Préparation de Magento
Avant de configurer les magasins dans Magento, il faut absolument ajouter les catégories articles.
Voici l'arborescence que j'ai utilisé dans ce mémo :

Remarquez que je n'ai pas utilisé la catégorie par défaut (celle qui n'a pas de nom).
J'ai créé une catégorie racine (ex : Mag 1) puis les catégories à utiliser dans le magasin (ex : Catégorie 1 Mag 1)
Configuration des magasins dans Magento
Dans le menu "Système" > "Gestion des magasins", cliquer sur le bouton "Créer un site web"
- Nom : nom du site web en français (ex: Mag 1)
- Code : code du site web sans espace, ni caractères accentués, que de l'alphanumérique. (ex : mag_1)
Noter le code car il sera utilisé par Apache et dans le .htaccess de Magento.
Ensuite, il faut créer un magasin, cliquer sur le bouton "Créer un magasin" :
- Site web : sélectionner le site précédemment créé.
- Nom : nom du magasin en français (ex : Boutique Mag 1)
- Catégorie racine : sélectionner la catégorie racine du magasin. Cette catégorie ne s'affichera pas dans le magasin, seulement ses sous-catégories.
Maintenant, il faut créer la vue, c'est à dire ce que voit le visiteur.
Cliquer sur le bouton "Créer une vue magasin" :
- Magasin : choisir le magasin
- Nom : nom de la vue en français (ex : Vue Boutique Mag 1)
- Code : code de la vue
- Statut : Activé (de préférence ;-) )
- Ordre de tri : rien pour le moment.
Voici le résultat final de ma configuration :

Maintenant, il faut configurer Magento pour utiliser plusieurs URL.
Dans le menu "Système" > "Configuration", sélectionner "Web"
D'abord vérifier au niveau global que la redirection automatique et la réécriture du serveur web sont désactivées.
Enregistrer les modifications.
Par contre, je vais l'activer pour Mag 1 et Mag 2.
Pour cela, utiliser le menu déroulant "Portée de la configuration courante" (en haut, à gauche), et sélectionner "Mag 1".
Je décoche "Utiliser la valeur par défaut" et je choisis "Oui".
Même chose pour Mag 2
Puis, dans le même écran, par défaut, il y a cette configuration :ig

Dans le menu déroulant "Portée de la configuration courante" (en haut, à gauche), sélectionner "Mag 1".
Dans les onglets "Non sécurisé" et "Sécurisé", modifier le champ "URL de base" :
URL de base : décocher "Utiliser la valeur par défaut" et saisir l'URL du magasin.
Ex : http://mag1.jbnet.lan/demo/test_mags/
Dans le menu déroulant "Portée de la configuration courante" (en haut, à gauche), sélectionner "Mag 2".
Effectuer la même manipulation, mais en utilisant l'autre URL.
Sauvegarder les modifications.
Configuration d'Apache
Si vous utilisez l'URL d'origne du serveur, vous n'avez aucune catégorie qui s'affiche.
Si vous utiliser une des URL configurées plus haut, toujours rien, et c'est normal.
Editer le fichier /etc/apache2/httpd.conf.
Normalement, il est vide (sur mon serveur Ubuntu en tout cas...).
C'est là que le code du magasin intervient !!
Ajouter les lignes suivantes :
# racine <VirtualHost *:80> DocumentRoot "/var/www/" ServerName monserveur.jbnet.lan ErrorLog "/var/log/magento.monserveur-error.log" CustomLog "/var/log/magento.monserveur-access.log" common <Directory "/var/www/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all < / Directory> < / VirtualHost> # mag1 <VirtualHost *:80> DocumentRoot "/var/www/demo/test_mags/" ServerName mag1.jbnet.lan ErrorLog "/var/log/magento.mag1-error.log" CustomLog "/var/log/magento.mag1-access.log" common <Directory "/var/www/demo/test_mags/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all < / Directory> < / VirtualHost> # mag2 <VirtualHost *:80> DocumentRoot "/var/www/demo/test_mags/" ServerName mag2.jbnet.lan ErrorLog "/var/log/magento.mag2-error.log" CustomLog "/var/log/magento.mag2-access.log" common <Directory "/var/www/demo/test_mags/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all < / Directory> < / VirtualHost>
Note : enlever les cotes et les espaces sur les balises fermantes de Directory et VirtualHost, sinon la ligne est supprimée dans mon éditeur. Désolé.
Note 2 : le VirtuelHost #racine a pour DocumentRoot "/var/www". Dans mon envirronnement, je veux garder l'accès à mon serveur pour les autres sites de test.
Relancer Apache :
/etc/init.d/apache restart
Si vous avez un seul site web, plusieurs magasins configurés dans Magento, il faut remplacer MAGE_RUN_TYPE "website" par MAGE_RUN_TYPE "store"
Attention !!
J'ai volontairement laissé le DocumentRoot à la racine du site.
Mais dans ma configuration, le site de Magento est dans le répertoire : /var/www/demo/test_mags
Donc il faut penser à modifier le fichier .htaccess de Magento. Rechercher la ligne qui contient "RewriteBase", activez la et modifier en fonction de votre installation. Dans mon cas :
RewriteBase /demo/test_mag/
Option : Configuration du .htaccess de Magento
Si vous ne pouvez pas avoir accès au fichier Apache pour ajouter la configuration des magasins, vous pouvez utiliser le fichier .htaccess de Magento.
Ajouter et modifier ces lignes à la fin du fichier .htaccess :
SetEnvIf Host ^monserveur\.jbnet\.lan MAGE_RUN_CODE=base SetEnvIf Host ^monserveur\.jbnet\.lan MAGE_RUN_TYPE=website SetEnvIf Host ^mag1\.jbnet\.lan MAGE_RUN_CODE=mag_1 SetEnvIf Host ^mag1\.jbnet\.lan MAGE_RUN_TYPE=website SetEnvIf Host ^mag2\.jbnet\.lan MAGE_RUN_CODE=mag_2 SetEnvIf Host ^mag2\.jbnet\.lan MAGE_RUN_TYPE=website
Si vous avez un seul site web, plusieurs magasins configurés dans Magento, il faut remplacer MAGE_RUN_TYPE=website par MAGE_RUN_TYPE=store.
Pour pouvoir utiliser l'URL Rewriting, commenter la ligne RewriteBase et ajouter les lignes suivantes :
#RewriteBase / SetEnvIf Host ^monserveur\.jbnet\.lan RewriteBase /demo/test_mags/ SetEnvIf Host ^mag1\.jbnet\.lan RewriteBase / SetEnvIf Host ^mag2\.jbnet\.lan RewriteBase /
Au cas où, supprimer tous les répertoires qui sont dans le répertoire /var/cache.
Fin !
Tester les différentes URL dans le navigateur.
URL d'origine du serveur :

URL de mag 1 :

URL mag 2 :

- < Magento - Mettre en place un export périodique facilement.
- Diminuer la taille min d'une chaine de caractères à rechercher dans Magento (et autre...) >

JBNet
Posté le 2011-08-17 10:32:56
Pour Wamp (sous Windows), le fichier host est dans le répertoire C:\windows\system32\drivers\etc\
Dans le menu de Wamp (icône dans la traybar à coté de l'heure), il faut activer rewrite_module dans Apache module puis redémarrer Wamp pour la prise en compte.
Ensuite, éditer la configuration d'Apache (fichier httpd.conf) toujours dans le menu de Wamp et appliquer la configuration ci-dessus en adaptant au besoin les répertoires (voir les exemples dans ce même fichier).
Relancer Wamp une nouvelle fois.
A partir de là, Wamp est ok, faut juste s'occuper de Magento.
Bon courage !
Mehdi
Posté le 2011-08-16 11:30:17
Bonjour,
Merci bcp pour ce tuto, malheureusement je n'ai pas pu le réaliser sur ma machine sachant que j'ai installé magento 1.5.1.0 et que le serveur WAMP.
n'auriez vous pas la méthode à suivre pour ce type d'installation?
mon mail est : mmoukdar@yahoo.fr
Merci
Répondre au commentaire