Installation Magento

 

Magento, est une plateforme de commerce électronique diffusée sous la licence libre AFL 3.0.

Il existe deux versions de Magento : Magento Enterprise Edition et Magento Community Edition, la différence entre ces deux éditions est listée sur cette page.

Nous allons voir dans cet article comment mettre en place cette plateforme sur un serveur Debian GNU/Linux Lenny (version 5).

Prérequis

  • OS : Linux x86 ou x86-64
  • Serveur  Web : Apache toutes versions à partir de 1.3
  • PHP version 5.2
  • extensions PHP :
    • librairies MySQL
    • simplexml
    • mcrypt
    • hash
    • gd
    • dom
    • iconv
    • curl
    • soap (pour les API Webservices)
  • paramètres PHP :
    • safe-mode off
    • memory_limit supérieur à 256Mo, conseillé 512 Mo
  • Serveur bases de données : MySQL à partir de la version 4.1.20 avec moteur InnoDB
  • Support SSL : pour la gestion du HTTPs, il faut un certificat valide non auto-signé
  • Accès serveur : possibilité de mettre en place des tâches cron

 

Installation

Les prérequis système

Une seule commande pour tout installer :

# apt-get install apache2 libapache2-mod-php5 php5-mysql php5-gd php5-mcrypt php-pear 
php5-cli php-soap php5-curl mysql-server mysql-client cronolog

Ne pas oublier de mettre un mot de passe pour le root MySQL différent du mot de passe root du système.

 

Activer le module rewrite

a2enmod rewrite

NB à propos d'Apache, si on veut créer plusieurs boutiques Magento avec des certificats SSL différents, il faudra installer Apache avec le support SNI, voir l'article correspondant.

 

Arborescence de l'environnement

# mkdir -p /var/www/boutique1.domaine.tld/{etc,var/{log/apache,tmp/upload,magento/
{session,cache,locks}},www,scripts}

 

Téléchargement et installation des fichiers

On va récupérer le code de l'application et le mettre dans le répertoire www. Le code est récupérable à cette adresse. Vous devriez retrouver cette arborescence dans le répertoire www :

www/
|-- LICENSE.html
|-- LICENSE.txt
|-- LICENSE_AFL.txt
|-- app
|-- cron.php
|-- cron.sh
|-- downloader
|-- errors
|-- favicon.ico
|-- includes
|-- index.php
|-- index.php.sample
|-- install.php
|-- js
|-- lib
|-- media
|-- pear
|-- php.ini.sample
|-- pkginfo
|-- shell
|-- skin
`-- var

 

Pour tester, il est possible de récupérer des datas, permettant d'avoir des données dans le site. Pour cela, il va falloir récupérer le fichier magento-sample-data-1.2.0.tar.bz2, récupérable à cette adresse, il faut ensuite injecter le script sql récupéré dans la base de données avant de procéder à l'installation de Magento :

# mysql -u root -p boutique1 < magento_sample_data_for_1.2.0.sql

Puis déplacer le contenu du répertoire media dans le répertoire www/media de l'installation de votre boutique.

 

Répertoire var

Je veux retrouver toutes mes données variables dans le répertoire /var/www/repertoire_site/var et non pas dans /var/www/repertoire_site/www/var.

J'efface donc le répertoire www/var et recrée un lien :

# cd www
# rm -rf var
# ln -s ../var/magento var

 

Répertoire tmp

Par défaut Magento va essayer de stocker des infos temporaires dans /tmp/magento/var, cependant, les  vhost que je crée ont des accès restreint sur les répertoires avec la directive open_base_dir. Donc le démarrage de l'installation de Magento se traduira par un écran blanc et des erreurs dans les logs.

Il faut alors aller modifier le fichier www/app/code/core/Mage/Core/Model/Config/Options.php, on modifie la fonction getSysTmpDir() :

la fonction getSysTmpDir devient :
public function getSysTmpDir()
    {
        return $_SERVER['DOCUMENT_ROOT'].'/var/magento';
    }

la fonction getVarDir devient :
public function getVarDir()
    {
        //$dir = $this->getDataSetDefault('var_dir', $this->getBaseDir().DS.'var');
        $dir = isset($this->_data['var_dir']) ? $this->_data['var_dir'] : $this->_data['base_dir'].DS.'var';
        if (!$this->createDirIfNotExists($dir)) {
            $dir = $this->getSysTmpDir().DS.'var';
            if (!$this->createDirIfNotExists($dir)) {
                throw new Mage_Core_Exception('Unable to find writable var_dir');
            }
        }
        return $dir;
    }

la fonction getTmpDir devient :
   public function getTmpDir()
    {
        //$dir = $this->getDataSetDefault('tmp_dir', $this->getVarDir().DS.'tmp');
        $dir = $this->_data['tmp_dir'];
        if (!$this->createDirIfNotExists($dir)) {
            $dir = $this->getSysTmpDir().DS.'tmp';
            if (!$this->createDirIfNotExists($dir)) {
                throw new Mage_Core_Exception('Unable to find writable tmp_dir');
            }
        }
        return $dir;
    }

 

Création de la base de données

On va créer une base de données et un utilisateur autorisé sur cette base de données de façon à ne pas donner les accès root au serveur MySQL pour l'application.

# mysql -u root -p
mysql> create database boutique1 character set utf8 ;
mysql> grant all privileges on boutique1.* to 'magento_uzer'@'localhost' identified by 
'password' with grant option ;

 

Suppression des fichiers .htaccess

Tout le paramétrage se trouve dans le fichier de vhosts, pour éviter que chaque fichier .htaccess soit relu à chaque parcours des répertoires, on va les effacer :

# find /var/www/boutique1.domaine.tld/ -name .htaccess -exec rm -rf {} ;

 

Résolution DNS

Si vous n'avez pas paramétré votre DNS, ou si vous êtes sur une plateforme de test, il faudra rajouter les informations de résolution de nom dans le fichier /etc/hosts.

 

Préparation du vhost

Préparer votre fichier de conf Apache

Exécuter le script de gestion des droits.

Modifier les droits de deux répertoires particuliers pour l'installation :

# chmod +w /var/www/boutique1.domaine.tld/www/app/etc/

Actualiser les vhosts et finir l'installation par l'interface web.

Repasser un coup le script de création de droits.

 

Mise à jour en ligne de commande avec pear

Mise à jour de l'installation

On va utiliser l'application pear pour mettre à jour le code de magento et plus tard installer les modules complémentaires au lieu d'utiliser Magento Connect qui impose d'avoir des droits trop "ouverts" sur le système de fichiers.

Il faut donc aller dans le répertoire www de la boutique. On va utiliser l'application pear présente dans le répertoire de la boutique et non pas le pear du système.

 

On commence par mettre à jour les canaux de distribution du code et des extensions :

cd /var/www/boutique1.domaine.tld/www
./pear mage-setup

On devrait obtenir un résultat comme celui-ci :

Adding Channel "connect.magentocommerce.com/core" succeeded
Discovery of channel "connect.magentocommerce.com/core" succeeded
Adding Channel "connect.magentocommerce.com/community" succeeded
Discovery of channel "connect.magentocommerce.com/community" succeeded

 

On défini que l'on veut utiliser les composants marqués comme stable :

# ./pear config-set preferred_state stable
# ./pear mage-setup

 

On met à jour le code et les modules de base  :

# ./pear install magento-core/Mage_All_Latest

 

Installation de la traduction française

# ./pear install magento-community/Locale_Mage_community_fr_FR

 

On vide le cache :

# ./pear clear-cache
# rm -rf /var/www/boutique1.domaine.tld/var/magento/cache/*
# rm -rf /var/www/boutique1.domaine.tld/var/magento/session/*
# rm -rf /var/www/boutique1.domaine.tld/www/downloader/pearlib/download/*