Aller au contenu

Drupal/Logiciels d'appui pour Drupal

Un livre de Wikilivres.

Dans ce chapitre 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
 Dans le cas où vous ne gérez pas vous-même votre(vos) serveur(s), la plupart des configurations proposées dans ce chapitre devraient être effectuées par votre hébergeur. À titre de support, vous pouvez lui envoyer une copie de ce guide.

Installation d'Apache pour Windows

[modifier | modifier le wikicode]

Des logiciels tout-en-un (serveur Web, base de donnée MySQL, et PHP) permettent de s'affranchir d'une installation fastidieuse et rédhibitoire pour le débutant :

  1. EasyPHPtéléchargement : n'a pas vocation à être installé pour de la production, mais pour le développement. Il stocke les bases de données dans C:\Program Files (x86)\EasyPHP\binaries\mysql\data.
  2. WAMPtéléchargement : est du même type qu'EasyPHP : ce logiciel installe facilement un serveur Web Apache, une base de données MySQL et PHP 4 et 5. Il a l'avantage de permettre de passer facilement de PHP 4 à PHP 5, sans avoir à refaire une installation ou une compilation. Tout comme EasyPHP, c'est un environnement de développement, et non un environnement de production. 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, Vista et 7, 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. Remarque : vous trouverez une liste des possibilités de résolution de noms avec MS Windows sur Microsoft.com.
  3. XAMPPtéléchargement : est du même type qu'EasyPHP ou WAMP, le deuxième P étant pour Perl. Son usage est recommandé avec PHPEclipse, et il fournit aussi un serveur Apache Tomcat par défaut.
  4. The Uniform Servertéléchargement : en anglais seulement avec Apache2, Perl5, PHP5, MySQL5, phpMyAdmin.

Logo

Sur Windows 10 pro, le serveur IIS est installé par défaut, et oblige Apache à changer de port (888 au lieu de 80) lors de l'installation. Pour résoudre cela il suffit de décocher Internet Information Services dans Programmes et fonctionnalités, Activer ou désactiver des fonctionnalités Windows.

De même, le port MySQL est susceptible de passer de 3306 à 3388.

Logo

Sur Windows 10, EasyPHP development server (alias Devserver, la version rouge) ne fonctionne pas (il manque MSVCR110.dll), mais EasyPHP hosting server (alias Webserver, la bleue) tourne normalement. Or, elle se lance automatiquement à chaque démarrage, ce qui le ralentit significativement. Pour éviter cela, exécuter services.msc, puis passer les trois services ci-dessous en démarrage manuel. Ensuite pour les lancer à souhait (en tant qu'administrateur), créer un script MySQL.cmd contenant les lignes suivantes :

net start ews-dbserver
net start ews-httpserver
net start ews-dashboard
pause
net stop ews-dashboard
net stop ews-httpserver
net stop ews-dbserver
Logo EasyPHP.

Message d'erreur relatif à SSL

[modifier | modifier le wikicode]

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.

Installation manuelle

[modifier | modifier le wikicode]

Installer Apache

[modifier | modifier le wikicode]

Pour installer Apache, double-cliquez sur le fichier exécutable, et suivez les instructions d'installation automatique.

Si vous installez Apache sur un ordinateur de développement, renseignez le champ "nom de domaine" avec la valeur localhost.

Si vous installez un serveur de production et que vous disposez d'un nom de domaine, vous devriez disposer des informations nécessaires concernant votre nom de domaine, fournies par le registrar.

Une fois l'installation terminée, il faut encore indiquer à Apache qu'il doit fonctionner conjointement avec PHP, car il ne sait pas les traiter par défaut. Pour cela, il faut modifier les informations de configuration d'Apache, contenues dans le fichier httpd.conf, qui se trouve dans le dossier d'installation d'Apache, dans le sous-dossier conf.

Une fois l'archive téléchargée, décompressez-la à la racine de votre disque dur et renommez le dossier en 'PHP'. Dans le dossier PHP, vous trouverez deux fichiers: php.ini-dist et php.ini-recommended. Copiez php.ini-recommended dans votre dossier C:\Windows ou C:\winnt (le nom du dossier dépend de la version de votre système.
renommez-le en php.ini.

Ce fichier est le fichier de configuration qui contrôle les options dont vous disposerez. Par exemple :

PHP.ini PHP Rôle
error_reporting E_ALL error_reporting(E_ALL); Affiche tous les avertissements et erreurs directement sur le site. C'est utile pour la préproduction car cela évite de rechercher d'éventuels messages dans les logs, mais peut perturber la mise en page pour des avertissements bénins.
error_reporting 0 error_reporting(0); N'affiche aucun message sur le site relatif à son exécution
max_execution_time = 300 set_time_limit(300); Définit le "timeout", c'est-à-dire le temps maximum en secondes autorisé pour exécuter un script PHP.
post_max_size = 80M ini_set('post_max_size', '80M'); Définit la taille maximum d'un fichier que l'on peut envoyer au serveur en HTTP.

Télécharger et installer le .msi sur http://dev.mysql.com/downloads/gui-tools/5.0.html.

Pour arrêter, démarrer, démarrer automatiquement le serveur MySQL vous devez aller dans la gestion des services (Démarrer/Exécuter/services.msc).


Installation d'Apache pour Linux

[modifier | modifier le wikicode]

Logiciel tout-en-un pour Linux (Apache + MySQL + PHP), comme WAMP pour Windows.

commande nécessitant les privilèges root
# apt-get install tasksel
# tasksel install lamp-server

Installation manuelle

[modifier | modifier le wikicode]

Apache sur Debian / Ubuntu

[modifier | modifier le wikicode]
commande nécessitant les privilèges root
# apt-get install apache2

Le service peut ne pas être lancé par défaut, mais même s'il l'est on peut quand-même essayer de l'activer avec :

commande nécessitant les privilèges root
# /etc/init.d/apache2 start

On peut ensuite tester le serveur, pour voir si une page s'affiche ou s'il refuse la connexion :

commande

Cette adresse est le rebouclage, elle peut aussi être rentrée directement dans tout navigateur web.

Si Apache était déjà installé vérifier le fichier pour indiquer le démarrage automatique d'Apache 2 /etc/default/apache2 :

 # vi /etc/default/apache2
 ...
 NO_START=0

On distingue principalement deux versions de PHP : celle dont le binaire est appelé par le serveur Web, et php-fpm qui possède son propre service daemon (aussi appelé par le serveur Web) testable ainsi :

telnet localhost 9000
CTRL + ALT + ]
quit

FPM signifie FastCGI Process Manager, puisque le processus PHP-fpm écoute les requêtes CGI[1]. Cela peut se traduire soit par des requêtes TCP/IP, soit par un socket Unix (.sock dans le vhost).

PHP peut-être installé avec toutes les déclinaisons de la distribution Debian (stable, testing, unstable). Il suffit pour cela d'insérer vos lignes préférées dans le fichier /etc/apt/sources.list :

deb http://ftp.fr.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.fr.debian.org/debian/ stable main non-free contrib

Ce qui suit suppose que le serveur Web a bien été installé ; exécuter les commandes suivantes :

sudo apt-get update && apt-get install php8.2 && apt-get install libapache2-mod-php8.2

Une fois ces commandes exécutées, redémarrer le serveur Web. Dans le cas d'Apache cela s'effectue avec la commande suivante :

/etc/init.d/apache2 restart

Si tout s'est bien passé, vous disposez maintenant d'un serveur Web qui a la capacité d'exécuter des scripts PHP dans votre navigateur.

Testons :

commande

Pour débugger :

commande
$ tail /var/log/apache2/error.log

Pour PHP 7 ou 8 sur Ubuntu :

sudo add-apt-repository ppa:ondrej/php

Sur Debian :

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Puis :

sudo apt update
sudo apt install php8.2 php8.2-common php8.2-cli php8.2-fpm

sudo a2enmod php8.2

Logo

Une fois les serveurs Web installés, ils se lancent automatiquement à chaque démarrage de la machine, ce qui est souhaitable pour un serveur, mais pas toujours pour un PC. Pour éviter cela, il suffit d'y désactiver les daemons :

sudo update-rc.d apache2 disable
sudo update-rc.d mysql disable
Bibliothèques
[modifier | modifier le wikicode]

Voici une liste de bibliothèques fréquemment utilisées dans les applications :

# apt-get install -y \
    php8.2-mysql \
	php8.2-cli \
	php8.2-gd \
	php8.2-curl \
	php8.2-mbstring \
	php8.2-xml 

D'autres s'installent avec pecl au lieu de apt.

Pour les activer après installation, on peut éditer le php.ini ou lancer : phpenmod nom_du_module_php. Ex : sudo phpenmod gd.

Pour les désactiver : phpdismod nom_du_module_php

Pour détecter l'emplacement du php.ini de la version de PHP par défaut : php --ini.

Désinstaller PHP
[modifier | modifier le wikicode]

Pour éviter de désinstaller tous les paquets PHP un par un (par exemple après une bascule de PHP7.0 vers PHP7.1), il existe "ppa-purge" :

sudo apt-get install ppa-purge
sudo ppa-purge ppa:ondrej/php-7.0

Apache sur Gentoo

[modifier | modifier le wikicode]

Premièrement il faut installer Apache :

emerge apache

Ensuite, il faut installer PHP :

emerge dev-lang/php

Puis il faut qu'apache utilise PHP dans sa configuration.

Code : Configuration de apache
# nano -w /etc/conf.d/apache2
APACHE2_OPTS="-D PHP5"

MySQL est disponible sur http://dev.mysql.com/downloads/gui-tools/5.0.html au format :

  1. .msi (Windows)
  2. .dmg (Mac)
  3. .rpm (Linux)
  4. .tar

En l'absence de gestionnaire de paquets, utiliser le .tar ainsi :

shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
$ sudo apt-get install mysql-server mysql_secure_installation

La dénomination des paquets mentionnés peut varier légèrement selon la version. Dans un terminal, entrez :

$ sudo apt-get install mysql-server

et confirmez.

(Remarque : il semblerait qu'en installant le paquet "mysql-server-5.0", au lieu du paquet mentionné plus haut, certaines personnes rencontrent des problèmes. Il est donc préférable d'installer ce paquet, ou d'installer la dernière version 4 stable avec : $ sudo apt-get install mysql-server-4.1. Consultez le forum pour plus d'informations : [1])

Lancez ensuite la commande :

cd && sudo mysql_secure_installation

Appuyez sur Entrée lorsqu'il vous demande le mot de passe root MySQL : pour le moment il n'y en a pas.


 MySQL a ses propres utilisateurs, avec leurs propres privilèges. Le root MySQL n'est donc pas le root système. Il est conseillé de ne pas mettre les mêmes mots de passes pour les utilisateurs MySQL et les utilisateur du système.

Le script vous demande alors si vous voulez mettre un mot de passe pour l'utilisateur root. Répondez Y, et entrez (2 fois le nouveau mot de passe du root MySQL). Il vous pose ensuite une série de questions. Si vous ne savez pas quoi répondre, acceptez les choix par défaut en appuyant simplement sur Enter.

Votre serveur MySQL est prêt. Par défaut il se lance à chaque démarrage du système, si vous ne le souhaitez pas, il vous suffit de lancer :

$ sudo dpkg-reconfigure mysql-server

et de répondre "Non" à la question du démarrage systématique de MySQL.

emerge mysql

De nombreux modules complémentaires peuvent être installés sur Apache.

Pour les lister, on utilise apachectl (parfois apache2ctl) :

apachectl -t -D DUMP_MODULES

ou

apache2ctl -M

Pour activer un module :

a2enmod Nom_du_module

Un fichier est alors créé dans /etc/apache2/mods-enabled/.

Exemple pour la réécriture d'URL :

a2enmod rewrite

Pour le désactiver :

a2dismod Nom_du_module

La configuration du module reste toutefois disponible dans /etc/apache2/mods-available/.

 Les extensions PHP nécessitent une autre commande. Ex :
phpenmod mbstring

Pour lister les sites du serveur :

apachectl -S

Pour activer un site :

a2ensite Nom_du_site

Le fichier du site est alors visible dans /etc/apache2/sites-enabled/.

Pour le désactiver :

a2dissite Nom_du_site

Le site est dans /etc/apache2/sites-available/.

Problème d'encodage d'Apache2

[modifier | modifier le wikicode]

Si vous rencontrez un problème d'encodage des caractères de vos pages, par exemple les caractères accentués apparaissant sous la forme "�" (<?>), c'est probablement parce qu'Apache2 déclare dans les en-têtes HTTP qui accompagnent les pages visionnées un encodage par défaut en Unicode (UTF-8) :

 Content-Type: text/html; charset=UTF-8

Tandis que les pages visionnées utilisent un autre encodage des caractères, comme par exemple Latin1 (ISO-8859-1). Même si vos documents indiquent le jeu de caractères utilisé, le paramètre donné par le serveur dans les en-têtes HTTP est prioritaire !

Pour corriger ce problème, il faudra éditer /etc/apache2/apache2.conf :

 $ sudo gedit /etc/apache2/apache2.conf

Encodage par défaut en Latin1 (ISO-8859-1)

[modifier | modifier le wikicode]

Cherchez la ligne suivante :

 #AddDefaultCharset	ISO-8859-1

Décommentez-la en enlevant le # :

 AddDefaultCharset	ISO-8859-1

Pour ceux qui ont la locale iso-8859-15 (sinon vous pouvez faire "sudo dpkg-reconfigure locales" pour l'ajouter) et qui désirent l'utiliser par défaut, ajoutez un 5 en fin de ligne :

 AddDefaultCharset	ISO-8859-15

ainsi que la ligne suivante dans le paragraphe en-dessous :

 AddCharset ISO-8859-15 .iso8859-15  .latin15 .fr

Il ne vous reste plus qu'à mettre "fr" en première position dans la ligne LanguagePriority (juste au-dessus), et à demander à apache de relire sa configuration :

 $ sudo /etc/init.d/apache2 reload

Aucun encodage par défaut

[modifier | modifier le wikicode]

Il est également possible de s'affranchir de tout encodage par défaut, de la manière suivante :

Cherchez la directive AddDefaultCharset :

 AddDefaultCharset	ISO-8859-1

Remplacez l'attribut par la valeur Off :

 AddDefaultCharset	Off

Là encore, on demandera à Apache de relire sa configuration :

 $ sudo /etc/init.d/apache2 reload

Maintenant, les en-têtes HTTP ne contiendront plus d'indication d'encodage des caractères. Attention : il faudra alors que chaque page indique l'encodage utilisé, car s'en remettre à la détection automatique par les navigateurs peut s'avérer assez aléatoire !




À 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 chapitre, nous parlons aussi des installations WAMP.

Configuration Apache

[modifier | modifier le wikicode]

À l'heure où nous rédigeons ces lignes, la version d'Apache proposée par Debian est la version standard Apache2.

Installation site unique

[modifier | modifier le wikicode]

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 :

 Fichier : /etc/apache2/sites-enabled/000-default
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

Nom de domaine : Dans notre exemple le nom de domaine est « exemple.be ». Remplacez-le par votre propre nom de domaine.

Installation multi-sites

[modifier | modifier le wikicode]
Concernant l'installation multi-sites
[modifier | modifier le wikicode]

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
Configuration des hôtes virtuels
[modifier | modifier le wikicode]

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 :

 Fichier : /etc/apache2/sites-available/site-1
<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.
domaine.be versus www.domaine.be
[modifier | modifier le wikicode]

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 :

 Fichier : /etc/apache2/sites-available/site-1
<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.

Créer des liens symboliques
[modifier | modifier le wikicode]

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.

Redémarrer Apache
[modifier | modifier le wikicode]

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éés dans /var/log/apache2.

Installation d'un site unique

[modifier | modifier le wikicode]

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

Installation multi-sites

[modifier | modifier le wikicode]

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.

Configuration MySQL

[modifier | modifier le wikicode]

Installation de mysql-common et de mysql-server

[modifier | modifier le wikicode]

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'
Ne pas confondre Root système et Root MySQL : Ne confondez pas l'utilisateur root de MySQL avec l'utilisateur root de votre système d'exploitation. Les deux sont séparés l'un de l'autre et peuvent avoir des mots de passe différents. L'utilisateur root de MySQL est utilisée pour la gestion administrative des bases de données MySQL tandis que l'utilisateur root du système concerne les tâches d'administration du système.

Vérification de l'installation

[modifier | modifier le wikicode]

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.

Créer la(es) base(s) de données

[modifier | modifier le wikicode]

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.

Syntaxe : Prenez garde à ce que chacune des déclarations mysql se termine par un point-virgule (;), dans le cas contraire, rien ne se passe.

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.

Création des utilisateurs de bases de données

[modifier | modifier le wikicode]

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:~$

Configuration PHP

[modifier | modifier le wikicode]

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

(Télé)Chargement de fichiers

[modifier | modifier le wikicode]

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
Sécurité: Vu que le téléchargement de fichiers comporte un risque inhérent à la sécurité, désactivez cette instruction dès que le fichier de traduction est importé - à moins que vous ne souhaitiez que vos utilisateurs puissent télécharger (uploader) des fichiers. Remarquez qu'il s'agit ici des annexes, représentations ou autres matériels que les utilisateurs intègrent aux documents édités en ligne. Pour gérer le contenu du site, il n'est en principe pas nécessaire que cette fonctionnalité soit activée. Nous y reviendrons plus tard.

Installation du module MySQL

[modifier | modifier le wikicode]

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

Activer les modifications

[modifier | modifier le wikicode]

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

Les services de nommage

[modifier | modifier le wikicode]

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

Configuration DNS

[modifier | modifier le wikicode]

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é.

Numéros de série : Ces fichiers ont un numéro de série. N'oubliez pas de l'adapter à chaque fois que vous apportez une modification.
Terminologie DNS : À retenir concernant la terminologie utilisée lorsqu'il s'agit du DNS :
*A record : connexion entre un nom de machine et une adresse IP.
*CNAME : un alias: un autre nom pour une machine, pointe vers le nom de la machine et non pas vers l'adresse IP.
*PTR record : s'appelle parfois aussi pointer record, ce qui fait que l'adresse IP est liée à un nom d'hôte. On oublie assez souvent d'ajouter ce type d'enregistrement (record), et par conséquence cela cause des problèmes lorsqu'on essaye de résoudre un nom d'hôte. En plus, vos logiciels peuvent ne pas apprécier lorsque ce type de record n'existe pas.
 Comment tester la configuration DNS ? Une manière très simple pour tester la configuration DNS : en utilisant la commande nslookup ou host, avec le nom d'hôte comme argument, cela vous retourne une adresse IP. Un lookup de cette adresse devrait retourner le même nom d'hôte.

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.

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.

  1. https://www.tecmint.com/connect-nginx-to-php-fpm/