Drupal : installation et configuration, mode d'emploi/Logiciels d'appui pour Drupal
Un livre de Wikibooks.
Dans ce chapître nous abordons la configuration des logiciels nécessaires au fonctionnement de Drupal :
- Serveur web Apache : nous commentons les versions 1.3 et 2.0
- MySQL : serveur de bases de données
- PHP
- Configuration DNS
À titre d'exemple, nous utilisons une distribution GNU/Linux Debian 3.1 "Sarge", équipée de l'image d'installation minimale. Cette machine est appelée debian et est installée en intern.exemple.be qui est un sous-domaine de exemple.be. À la fin de ce chapître, nous parlons aussi des installations WAMP (MS Windows, Apache, MySQL, PHP).
Sections |
[modifier] Configuration Apache
[modifier] Apache2
À l'heure où nous rédigeons ces lignes, la version d'Apache proposée par Debian est la version standard Apache2.
[modifier] Installation site unique
Drupal permet de gérer plusieurs sites avec un seul script Drupal commun à tous les sites, on parle alors de "multi-sites". Au contraire, le terme "site unique" fait référence à l'installation d'un seul site utilisant le script Drupal.
Apache2 simplifie grandement l'installation d'un site unique avec Drupal. Pour un site unique, il suffit d'éditer les fichiers d'installation présents.
Ouvrez le fichier /etc/apache2/sites-enabled/000-default et recherchez la ligne de configuration pour DocumentRoot. Modifiez le contenu en complétant l'emplacement où vous installerez ensuite Drupal. Pratiquez de-même pour la création de la directive Directory. Complétez une adresse valable pour le gestionnaire du site et permettez que index.html et index.php soient pris en compte comme page de démarrage des répertoires. Dans notre exemple cela donne :
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@exemple.be
ServerName drupaltest
DocumentRoot /var/www/drupal
<Directory /var/www/drupal>
Options Indexes FollowSymLinks MultiViews
DirectoryIndex index.html index.php
AllowOverride None
Order allow,deny
allow from all
</Directory>
Les instructions adaptées ont été mises en gras. Vous pouvez laisser le reste de ce fichier inchangé. Assurez-vous que le nom d'hôte drupaltest est bien connu de votre système (par exemple qu'il est déclaré au niveau du DNS ou qu'il est enregistré dans /etc/hosts, voir Les services de nommage).
Redémarrez Apache :
debian:~# apache2ctl restart
[modifier] Installation multi-sites
[modifier] Concernant l'installation multi-sites
Par rapport à Apache 1.3, la configuration d'Apache2 pour l'installation multi-sites est un peu plus complexe car la configuration des hôtes virtuels est scindée en plusieurs fichiers.
Les points à retenir :
- Les fichiers de configuration des hôtes virtuels se trouvent dans /etc/apache2/sites-available. Le répertoire /etc/apache2/sites-enabled contient des liens symboliques vers les fichiers du répertoire /etc/apache2/sites-available
- Pour le bon fonctionnement de Apache, il est préférable de conserver le fichier standard 000-default
- Un fichier de log indépendant doit être utilisé par hôte virtuel
- Vérifiez que chaque hôte virtuel est connu de votre service de nommage, par exemple DNS pour une installation fonctionnant sur Internet, ou /etc/hosts pour une installation locale. Vous trouverez davantage d'informations sur ce sujet dans Les services de nommage
[modifier] Configuration des hôtes virtuels
Pour chaque site que vous voudrez présenter à l'aide de Drupal, créez un fichier dans /etc/apache2/sites-available. Choisissez un nom qui soit significatif pour vous, car vous serez le seul à le voir. Nos sites virtuels s'appellent de manière peu originale site-1 et site-2. Le fichier de configuration du site-1 est site-1 et ressemble à ce qui suit :
<VirtualHost *>
ServerName site-1.intern.exemple.be
ServerAlias site-1
ServerAdmin webmaster+site-1@exemple.be
DocumentRoot /var/www/drupal
<Directory /var/www/drupal>
Options Indexes FollowSymLinks MultiViews
DirectoryIndex index.html index.php
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/site-1-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/site-1-access.log combined
ServerSignature On
</VirtualHost>
Pour créer ce fichier, vous pouvez vous baser sur une copie du fichier default. Les modifications qui y ont été apportées apparaissent en gras ci-dessus. Nous les listons à nouveau ci-dessous :
- ServerName
- ServerAlias
- ServerAdmin
- DocumentRoot et Directory : ceci pour tous les hôtes virtuels dans /var/www/drupal. Tous les sites virtuels doivent ainsi être envoyés à Drupal, qui décidera plus tard quels fichiers de quelle base de données seront traités.
- DirectoryIndex : index.php doit être ajouté
- error.log et access.log doivent être précisés pour chaque site. Vous ne devez pas créer vous-mêmes ces fichiers, Apache s'en charge automatiquement.
[modifier] domaine.be versus www.domaine.be
Lorsque vous désirez que vos visiteurs puissent se rendre sur votre site, que le nom soit précédé de www ou pas, faites une configuration comme celle qui suit :
<VirtualHost 81.188.4.99>
ServerName www.exemple.be
ServerAlias exemple.be
DocumentRoot /var/www/drupal
</VirtualHost>
À part ça, il ne vous reste qu'à configurer le DNS. Dans Drupal il ne faut rien configurer, il faut simplement créer les liens symboliques comme décrit ci-dessous.
[modifier] Créer des liens symboliques
Créez un lien pour chaque site dans /etc/apache2/sites-enabled :
debian:sites-enabled# ln -s ../sites-available/site-1 site-1
debian:sites-enabled# ln -s ../sites-available/site-2 site-2
Laissez tel qu'il est le lien 000-default qui envoie vers /etc/apache2/sites-available/default.
[modifier] Redémarrer Apache
Quand vous avez terminé, rechargez la configuration :
debian:~# apache2ctl restart
Si tout se passe bien, cette commande ne cause aucune erreur et les fichiers de log de vos hôtes virtuels sont crées dans /var/log/apache2.
[modifier] Apache 1.3
[modifier] Installation d'un site unique
Choisissez l'installation d'un site unique si vous ne voulez présenter qu'un seul site Web avec Drupal.
Éditez le fichier /etc/apache/httpd.conf et adaptez les instructions suivantes :
- ServerAdmin : attribuez une adresse E-mail valable pour le webmaster.
- ServerName : précisez ici l'adresse IP du serveur ou son nom.
- DocumenRoot : /var/www/drupal.
- DirectoryIndex : ajoutez index.php s'il n'est pas encore présent.
Redémarrez Apache :
debian:~# apachectl restart
[modifier] Installation multi-sites
Choisissez l'installation multi-sites si voulez présenter plusieurs sites Web en une seule instance Drupal. Nos sites de démonstration portent les noms site-1 et site-2.
Allez à la section Virtual Hosts dans /etc/apache/httpd.conf. Modifiez les points suivants :
- NameVirtualHost : complétez l'adresse IP de votre machine.
- Ajoutez pour chaque site virtuel un bloc comme suit:
<VirtualHost site-1.intern.exemple.be>
ServerAdmin webmaster@exemple.be
DocumentRoot /var/www/drupal
ServerName site-1.intern.exemple.be
ErrorLog /var/log/apache/site-1.intern.exemple.be-error.log
CustomLog /var/log/apache/site-1.intern.exemple.be-access.log combined
RedirectMatch /path url
</VirtualHost>
- Adaptez le reste du fichier en respectant les instructions de la section précédente
Redémarrez Apache :
debian:~# apachectl restart
Vérifiez que les fichiers de log de chaque site sont créés en /var/log/apache. Si tout est en ordre, cette commande ne cause aucune erreur.
[modifier] Configuration MySQL
[modifier] Installation de mysql-common et de mysql-server
L'installation minimale de Debian ne contient pas MySQL. Vous installez le logiciel (package) simplement, utilisez la commande apt-get en tant que root ou via sudo :
debian:~# apt-get install mysql-common
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
mysql-common
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 34.6kB of archives.
After unpacking 94.2kB of additional disk space will be used.
Get:1 http://ftp.belnet.be stable/main mysql-common 4.0.24-10sarge2 [34.6kB]
Fetched 34.6kB in 0s (220kB/s)
Selecting previously deselected package mysql-common.
(Reading database ... 26595 files and directories currently installed.)
Unpacking mysql-common (from .../mysql-common_4.0.24-10sarge2_all.deb)...
Setting up mysql-common (4.0.24-10sarge2) ...
debian:~# apt-get install mysql-server
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
libdbd-mysql-perl libmysqlclient12 mysql-client
Suggested packages:
mysql-doc
The following NEW packages will be installed:
libdbd-mysql-perl libmysqlclient12 mysql-client mysql-server
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 4490kB of archives.
After unpacking 10.4MB of additional disk space will be used.
Do you want to continue? [Y/n] y
La machine doit connaître son propre nom d'hôte, sinon MySQL ne fonctionne pas. Vous pouvez tester si c'est le cas à l'aide de la commande hostname. Si cela vous donne le nom de la machine, alors, tout est en ordre. Si ce n'est pas le cas, éditez /etc/hosts, ou mieux encore, la configuration de votre service de nommage, par exemple DNS.
En fonction de la version de MySQL et de votre système d'exploitation, le mot de passe root de votre serveur MySQL est spécifié pendant l'installation ou plus tard. S'il n'est pas demandé au cours de l'installation du logiciel, proposez ensuite le mot de passe de la façon suivante :
debian:~# /usr/bin/mysqladmin -u root password 'ton_mot_de_passe_ici'
[modifier] Vérification de l'installation
Vérifiez que les logiciels ont été installés correctement :
debian:~# dpkg -l *mysql* | grep ii
ii libdbd-mysql-p 2.9006-1 A Perl5 database interface to the MySQL data
ii libmysqlclient 4.0.24-10sarge mysql database client library
ii mysql-client 4.0.24-10sarge mysql database client binaries
ii mysql-common 4.0.24-10sarge mysql database common files (e.g. /etc/mysql
ii mysql-server 4.0.24-10sarge mysql database server binaries
Vous disposez maintenant des logiciels mysql-client, mysql-common, mysql-server et des bibliothèques connexes.
[modifier] Créer la(es) base(s) de données
Il est préférable de créer une base de données indépendante pour chaque site que vous voulez gérer avec Drupal. Vous pouvez le faire en tant qu'utilisateur ordinaire :
tille@debian:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 4.0.24_Debian-10sarge2-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>create database site-1;
Query OK, 1 row affected (0.00 sec)
Pour l'installation multi-sites, grâce à laquelle plusieurs sites peuvent être gérés à l'aide d'une seule instance Drupal, nous avons créé également une base de données pour le site-2.
Vérifier comme suit si la création a réussi :
mysql> show databases;
+----------+
|Database |
+----------+
|mysql |
|site-1 |
|site-2 |
|test |
+----------+
4 rows in set (0.00 sec)
Les paramètres mysql et test de bases de données sont présents en standard.
[modifier] Création des utilisateurs de bases de données
Créez pour chaque base de données un utilisateur et son mot de passe :
mysql> GRANT ALL PRIVILEGES ON site-1.* TO 'utilisateur-1'@'localhost' IDENTIFIED BY 'motdepasse-1';
Query OK, 0 rows affected (0.00 sec)
Maintenant, vous pouvez quitter MySQL monitor :
mysql> quit
Bye
tille@debian:~$
[modifier] Configuration PHP
[modifier] Mémoire
Plus vous activez de modules dans Drupal, plus il faudra de mémoire disponible pour vos applications PHP. En standard, elle est limitée à 8 Mo, comme mesure minimale de sécurité : par conséquent on ne peut exécuter de programme trop volumineux (ou des programmes malveillants), et si il se fait qu'une erreur se glisse dans le code PHP, alors PHP ne prendra pas toute la mémoire du système.
Si vous dépassez les 8Mo (ce qui peut arriver rapidement), vous aurez un message Zero Sized Reply quand vos modules tenteront de fonctionner. Pour éviter que cela n'arrive, le mieux est de dédier préalablement suffisamment de mémoire à PHP. Vous pouvez le faire dans le fichier php.ini, qui se trouve dans /etc/php4/apache/ ou /etc/php4/apache2. Recherchez la ligne qui commence par memory_limit et modifiez la de la manière suivante :
memory_limit = 32M ; Maximum amount of memory a script may consume (8MB)
Ajoutez de préférence une ligne de commentaire qui explique pourquoi cette instruction a été modifiée, par exemple :
; modified by tille 20061011 to accomodate views module in drupal
[modifier] (Télé)Chargement de fichiers
Si plus tard vous souhaitez télécharger les traductions en néerlandais et/ou en français de Drupal, vous devrez autoriser le téléchargement dans la configuration de PHP. Prenez, de nouveau, le fichier php.ini et recherchez la ligne qui commence par : file_uploads. Par défaut, cette variable a la valeur Off. Activez cette fonctionnalité :
file_uploads = On
Ajoutez, à nouveau, une ligne de commentaire qui explique pourquoi vous avez apporté cette modification :
; modified by tille 20061205 to accomodate translation upload, may be
; deactivated if file upload is not needed after translation import in Drupal
[modifier] Installation du module MySQL
Il se peut que le logiciel php4-mysql ne se trouve pas par défaut sur votre système. S'il est manquant installez-le de la façon suivante :
debian:~# apt-get install php4-mysql
Vérifier que l'ensemble des logiciels dont vous avez besoin sont présents :
tille@debian:~$ dpkg -l *php* | grep ii
ii libapache2-mod 4.3.10-18 server-side, HTML-embedded scripting languag
ii php4 4.3.10-18 server-side, HTML-embedded scripting languag
ii php4-common 4.3.10-18 Common files for packages built from the php
ii php4-mysql 4.3.10-18 MySQL module for php4
[modifier] Activer les modifications
Pour que les changements dans la configuration de PHP soient pris en compte, redémarrez Apache. Comme root ou via sudo :
debian:~# apachectl restart
/usr/sbin/apachectl restart: httpd restarted
[modifier] Les services de nommage
[modifier] /etc/hosts
Tant que vous travaillez en local, utilisez le fichier /etc/hosts comme service de nommage. Il suffit alors d'ajouter le nom votre machine derrière son adresse IP. Par exemple, pour l'installation d'un site unique, vous obtenez ce qui suit :
tille@debian:~$cat /etc/hosts
127.0.0.1
192.168.204.128 debian debian.intern.exemple.be
Pour une installation multi-sites, vous placez tous les noms d'hôtes virtuels derrière le "nom réel" de votre machine :
tille@debian:~$cat /etc/hosts
127.0.0.1
192.168.204.128 debian debian.intern.exemple.be site-1.intern.exemple.be site-2.intern.exemple.be
[modifier] Configuration DNS
Comme exemple d'une configuration DNS nous donnons ci-après les lignes concernant BIND qui ont été ajoutées pour notre application dans le fichier db.intern.exemple.be dans /var/named. Pour une installation d'un site unique, ajoutez un A record :
debian IN A 192.168.204.12
Pour une installation multi-sites ajoutez pour chaque hôte virtuel un CNAME :
debian IN A 192.168.204.12
site-1 IN CNAME debian
site-2 IN CNAME debian
N'oubliez pas de configurer les recherches inverses, dans le fichier db.192.168.204 de notre exemple, qui est le fichier qui contient les infos pour le sous-réseau 192.168.204.0 :
12 IN PTR debian.intern.exemple.be.
Ici nous déclarons que l'adresse IP 192.168.204.12 est lié au nom spécifié.
Pour le cas décrit dans "domaine.be versus www.domaine.be", il faut créer deux A records : l'un pour www.domaine.be et l'autre pour domaine.be. Les deux pointent vers l'adresse IP du serveur web.
Quand la configuration est terminée, vous pouvez de nouveau l'enregistrer:
root@nameserver# rndc reload
Pour d'autres serveurs DNS que BIND, reportez-vous à la documentation proposée. Dans les grandes sociétés, le service DNS est souvent offert par le département réseau.
[modifier] Installation WAMP
Par analogie de LAMP (Linux + Apache + MySQL + PHP), il existe aussi WAMP : Windows + Apache + MySQL + PHP. Vous pouvez télécharger un binaire d'installation WAMP depuis Internet via le site [1]. Celui-ci couvre les trois premières sections de ce chapître : ce logiciel vous installera Apache, MySQL et PHP sur votre ordinateur équipé de Windows.
Faites attention : la résolution des noms d'hôtes se réalise séparément. Les installations WAMP servent à tester en local sur votre PC. Dans la plupart des cas, il suffit d'utiliser le fichier Hosts local, comme on le ferait sur une machine Linux, afin de lier des noms aux adresses IP. Dans Windows XP, ce fichier se trouve dans le répertoire systemroot\System32\Drivers\Etc. Il peut se faire que le service ait déjà été configuré. Lorsque vous vous en doutez, contactez votre administrateur réseau.
[modifier] Message d'erreur relatif à SSL
Pour l'instant, WAMP ne supporte pas encore le Secure Socket Layer (SSL). L'installation se finit par un message qui vous informe de ce fait. Afin de pouvoir travailler sans problèmes, éditez le fichier c:\windows\php.ini. Cherchez dans ce fichier la ligne qui commence avec extension=php_openssl.dll. Commentez cette ligne en la faisant précéder d'un point-virgule :
;extensions=php_openssl.dll
Si tout se passe bien, vous pouvez ouvrir la page de test dans votre navigateur.
[modifier] Résumé
Dans ce chapitre, nous avons passé en revue les applications utilisé par Drupal :
- Apache : et au besoin, les hôtes virtuels
- MySQL : création de la (des) base(s) de données et de l'(des) utilisateur(s)
- PHP : installation des logiciels nécessaires et adaptation des limites des ressources
- Résolution du nommage : s'assurer que le nom hôte peut être converti en une adresse IP
Si tous ces points sont en ordre, vous pouvez commencer l'installation de Drupal.