Modifier la configuration de Wampserver pour Drupal 7

Sans doute faites-vous parties de ces personnes qui, comme moi, ont rencontré quelques soucis en voulant installer Drupal 7 sur Wampserver. En effet, alors que Drupal 7 était annoncé comme devant être plus performant et plus aisé à installer que Drupal 6, les premiers pas sous Wampserver furent plutôt décevants. Non seulement la lenteur d'installation était particulièrement navrante (20 minutes au moins pour l'installation du pack de traduction de Drupal en français), mais des messages d'erreurs émaillaient régulièrement un processus qu'il était difficile de mener jusqu'à son terme.

Evidemment, c’est très embêtant pour ceux qui, comme moi, veulent faire du développement web en local. Cherchant une alternative, je me suis tourné vers EasyPHP, mais le résultat n’était pas meilleur (aujourd'hui, les performances obtenues avec EasyPHP sont tout à fait satisfaisantes). Finalement, j’ai découvert Acquia Drupal qui permet d’utiliser Drupal 7 en local, de manière tout à fait confortable. Bref, pendant quelques mois, je me suis résolu à abandonner Wampserver.

Néanmoins, je me suis entêté et j’ai découvert une solution tout à fait confortable. Celle-ci permet de faire fonctionner Drupal 7 en local avec Wampserver.

En fait, il faut savoir que la configuration par défaut de Wampserver rend problématique les transactions entre Drupal 7 et le serveur MySQL. En effet, Drupal 7 utilise le moteur de stockage InnoDB. Or, par défaut, Wampserver utilise le moteur de stockage MyISAM. Ce dernier moteur de stockage est utilisé par la plupart des CMS comme Joomla!, SPIP, Wordpress ou Drupal 6.

La solution que je propose ci-dessous implique quelques manipulations à la fois dans le fichier "my.ini". J’ai testé cette solution à la fois sur une machine équipée du Windows XP (32bits) et sur une autre fonctionnant avec Windows 7 (64bits).

Nous allons modifier le fichier de configuration de MySQL. Avant tout, fermer Wampserver (les modifications du fichier "my.ini" ne sont prises en compte que lorsque Wampserver est relancé).

Si vous avez installé wampserver dans le répertoire "c:/wamp", le fichier "my.ini" se trouve dans le dossier "c:/wamp/bin/mysql/mysql5.5.24/". Bien entendu, les numéros de version qui composent le nom du dossier (ex: "mysql5.5.24") varient en fonction de la version du serveur MySQL installé. Cette version peut elle-même varier en fonction de la version de Wampserver qui sera installée ou des "addons" que vous pouvez trouver sur le site de Wampserver.

Avant de modifier le fichier "my.ini", copiez-le et renommez-le (exemple : "my.ini.bak"). En cas de problème, cela vous permettra de rétablir le fichier de configuration initial.

Avant d'effectuer la modification du fichier "my.ini", veuillez vérifier que votre fichier n'est pas en lecture seule.

Voici la version originale de la partie que vous allez modifier :

# Uncomment the following if you are using InnoDB tables
# innodb_data_home_dir = C:\\mysql\\data\\
# innodb_data_file_path = ibdata1:10M:autoextend
# innodb_log_group_home_dir = C:\\mysql\\data\\
# innodb_log_arch_dir = C:\\mysql\\data\\
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
# innodb_buffer_pool_size = 16M
# innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
# innodb_log_file_size = 5M
# innodb_log_buffer_size = 8M
# innodb_flush_log_at_trx_commit = 1
# innodb_lock_wait_timeout = 50

 

Dans cette version initiale, vous pouvez constater que chaque ligne est précédée du signe "#". Celui-ci permet d'insérer des lignes de commentaire et aussi de désactiver une instruction de configuration.

Voici la version modifiée que je vous propose :

# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = c:/wamp/bin/mysql/mysql5.5.24/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = c:/wamp/bin/mysql/mysql5.5.24/data
#innodb_log_arch_dir = c:/wamp/bin/mysql/mysql5.5.24/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 2G
innodb_additional_mem_pool_size = 16M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 120

innodb_thread_concurrency = 16
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90

 

Comme vous pouvez le constater, cette modification permet d'émuler le moteur de stockage InnoDB pour votre gestionnaire de base de données MySQL. Faites surtout attention à l'instruction innodb_flush_log_at_trx_commit qui doit impérativement prendre la valeur "2" (elle est à "1" par défaut).

En ce qui concerne les variables innodb_data_home_dir et innodb_log_group_home_dir vous devez leur attribuer un chemin correct.

Bien entendu, cette modification fera de InnoDB le moteur de stockage par défaut. Mais alors, vous risquez de rencontrer l'un ou l'autre problème si vous souhaitez utiliser Joomla!, SPIP, Wordpress ou Drupal 6. Autrement dit, ce que vous gagnez d'un côté, vous le perdez d'un autre.

Pour résoudre ce petit inconvénient, il vous suffit de modifier la fin de votre fichier "my.ini".

Voici la version originale de la partie que vous allez modifier :

[mysqld]
port=3306

 

Voici la version modifiée que je vous propose :

[mysqld]
port=3306
default-storage-engine = MYISAM

 

Grâce à cette petite modification, le gestionnaire de base de données MySQL continuera à utiliser le moteur de stockage MyISAM par défaut tout en permettant l'utilisation du moteur InnoDB par Drupal 7.

 

Enfin, j'ai également modifié certaines valeurs reprises sous l'étiquette wampmysqld :

[wampmysqld]
port = 3306
socket = /tmp/mysql.sock
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
# net_buffer_length = 8K
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
basedir=c:/wamp/bin/mysql/mysql5.5.24
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.5.24/data

thread_concurrency = 8

 

Les modifications présentées ci-dessus ont été mises au point avec la version 2.2e (32bits) de Wampserver.

 

Maintenant, vous pouvez installer Drupal 7 en décompressant le fichier "drupal-7.x.tar.gz" (bien entendu, le "x" remplace le numéro de la version courante) dans le répertoire "c:/wamp/www" ou dans un sous-répertoire que vous pouvez créer à votre convenance.

Lancer Wampserver, créer une base de données avec phpMyAdmin et lancer l’installation de Drupal 7. Normalement, il n’y a plus de lenteur.

Bon amusement !