LPIC‐202
Lab 6
Lab 6: Apache Virtual Hosting CentOS 7
Objectifs :
Utiliser les hôtes virtuels par IP et par nom
Implémenter des hôtes virtuels par défaut
Utiliser des scripts CGI
Séquence 1 :
Apache sur CentOS 7 possède un bloc de serveur activé par défaut, configuré pour servir les
documents à partir du répertoire /var/www/html. Bien que cela fonctionne bien pour un seul
site, cela peut devenir lourd si vous hébergez plusieurs sites. Au lieu de modifier
/var/www/html, vous allez créer une structure de répertoires /var/www pour le site
example.com, en conservant le répertoire par défaut /var/www/html à servir si une demande
du client ne correspond à aucun autre site.
Créez le répertoire html pour example.com comme suit :
[root@localhost ~]# mkdir -p /var/www/example.com/html
Créez un répertoire supplémentaire pour stocker les fichiers journaux du site:
[root@localhost ~]# mkdir -p /var/www/example.com/log
Ensuite, créez un exemple de page index.html :
[root@localhost ~]# vi /var/www/example.com/html/index.html
<html>
<head>
<title>Bienvenu à Example.com!</title>
</head>
<body>
<h1>Success! Le virtual host example.com fonctionne!</h1>
</body>
</html>
Séquence 2 :
Avant de créer vos hôtes virtuels, vous allez créer un répertoire sites‐available dans lequel
vous allez les stocker. Vous allez également créer un répertoire sites‐enabled qui indique à
Apache qu'un hôte virtuel est prêt à être utilisé par les visiteurs. Le répertoire sites‐enabled
contiendra des liens symboliques vers les hôtes virtuels que nous voulons publier. Créez les
deux répertoires avec la commande suivante :
[root@localhost ~]# mkdir /etc/httpd/sites-available /etc/httpd/sites-
enabled
Ensuite, vous direz à Apache de rechercher des hôtes virtuels dans le répertoire sites‐enabled.
Elies Jebri
Page 1 sur 6
LPIC‐202
Advertisement
Lab 6
Editez le fichier de configuration principal d'Apache et ajoutez une ligne déclarant un
répertoire facultatif pour les fichiers de configuration supplémentaires :
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
Ajoutez cette ligne à la fin du fichier :
…
IncludeOptional sites-enabled/*.conf
Enregistrez et fermez le fichier lorsque vous avez terminé d'ajouter cette ligne. Maintenant
que vos répertoires d’hôte virtuel sont en place, vous allez créer votre fichier d’hôte virtuel.
Commencez par créer un nouveau fichier dans le répertoire sites‐available :
[root@localhost ~]# vi /etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/html
ErrorLog /var/www/example.com/log/error.log
CustomLog /var/www/example.com/log/access.log common
</VirtualHost>
Maintenant que vous avez créé les fichiers de l'hôte virtuel, vous allez les activer pour
qu'Apache sache les servir aux visiteurs. Pour ce faire, créez un lien symbolique pour chaque
hôte virtuel du répertoire sites‐enabled:
[root@localhost ~]# ln -s /etc/httpd/sites-available/example.com.conf
/etc/httpd/sites-enabled/example.com.conf
Votre hôte virtuel est maintenant configuré et prêt à servir du contenu.
Séquence 3 : Test de l'hôte virtuel
Vous pouvez maintenant redémarrer avec succès le service Apache:
sudo systemctl restart httpd
Répertoriez le contenu du répertoire /var/www/example.com/log pour voir si Apache avait
créé les fichiers journaux :
ls -l /var/www/example.com/log
Vous verrez qu'Apache a pu créer les fichiers error.log et access.log spécifiés dans la
configuration de l'hôte virtuel :
Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log
-rw-r--r--. 1 root root 0 Feb 26 22:54 access.log
Maintenant que vous avez configuré votre hôte virtuel, Apache va maintenant servir votre
nom de domaine. Vous pouvez tester ceci en naviguant vers, où vous devriez voir quelque
chose comme ceci :
http://example.com
Elies Jebri
Page 2 sur 6
Advertisement
LPIC‐202
Lab 6
Cela confirme que votre hôte virtuel est correctement configuré et que le contenu est servi.
Répétez les étapes de la séquence 1 pour créer de nouveaux hôtes virtuels pour des domaines
supplémentaires.
Séquence 4 :
Cette séquence est une introduction à la configuration de CGI sur votre serveur web
Apache, et une initiation à l'écriture de programmes CGI.
Reprenez l’exemple de la séquence 2 et ajoutez la ligne suivante au VirtualHost :
ScriptAlias /cgi-bin/ /var/www/example.com/cgi-bin/
Puis créez le répertoire correspondant :
mkdir –p /var/www/example.com/cgi-bin
Créez ensuite dans le répertoire précédemment créé le script shell suivant que vous
nommerez test.sh :
#!/bin/bash
echo Content-Type: text/html
echo
echo "<pre>"
echo
id
echo
whoami
echo
env
echo
echo "</pre>"
Puis créez, toujours dans le même répertoire le fichier bonjour.c suivant :
#include <stdio.h>
main(int argc, char ** argv)
{
/ en-tête : le type de données qui va suivre /
/ ici une page HTML /
printf("Content-type: text/html\n\n");
/ la donnée = une page HTML/
printf("<HTML><HEAD><TITLE>Exemple CGI en C</TITLE></HEAD>\n");
printf("<BODY><H1>Bonjour toi !</H></BODY></HTML>\n");
}
Elies Jebri
Page 3 sur 6
LPIC‐202
Lab 6
Advertisement
Compilez ensuite le programme en C :
gcc –o bonjour.cgi bonjour.c
Donnez l’autorisation d’exécution au script :
chmod +x test.sh
systemctl restart httpd
firefox http://www.example.com/cgi-bin/test.sh &
firefox http://www.example.com/cgi-bin/bonjour.cgi &
Séquence 5 : Héberger des sites dynamiques avec PHP
CentOS 7 fournit PHP 5.4 par défaut, une version passablement ancienne.
Pour améliorer les fonctionnalités de PHP, nous pouvons éventuellement installer des
modules supplémentaires.
Pour voir les options disponibles pour les modules et les bibliothèques PHP, vous pouvez les
saisir dans votre système :
yum search php-
Les résultats sont tous des composants facultatifs que vous pouvez installer. Il vous donnera
une brève description pour chacun :
php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-cli.x86_64 : Command-line interface for PHP
php-common.x86_64 : Common files for PHP
php-dba.x86_64 : A database abstraction layer module for PHP applications
php-devel.x86_64 : Files needed for building PHP extensions
php-embedded.x86_64 : PHP library for embedding in applications
php-enchant.x86_64 : Enchant spelling extension for PHP applications
php-fpm.x86_64 : PHP FastCGI Process Manager
php-gd.x86_64 : A module for PHP applications for using the gd graphics
library
. . .
Par exemple, pour savoir ce que fait le module php‐fpm, nous pourrions taper ceci :
yum info php-fpm
En plus d'une grande quantité d'informations, vous trouverez quelque chose qui ressemble à
ceci:
. . .
Summary : PHP FastCGI Process Manager
URL : http://www.php.net/
License : PHP and Zend and BSD
Description : PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI
: implementation with some additional features useful for sites
of
: any size, especially busier sites.
sudo yum install php php-fpm
Elies Jebri
Advertisement
Page 4 sur 6
LPIC‐202
Lab 6
Afin de vérifier que notre système est correctement configuré pour PHP, nous pouvons créer
un script PHP très basique. Nous appellerons ce script info.php. Pour qu'Apache trouve le
fichier et le serve correctement, il doit être enregistré dans /var/www/example.com/html/.
sudo vi /var/www/example.com/html/index.php
<?php phpinfo(); ?>
Editez le fichier /etc/httpd/conf/httpd.conf pour modifier la directive d’index
sudo vi /etc/httpd/conf/httpd.conf
…
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
…
$ sudo systemctl restart httpd
Nous pouvons maintenant tester si notre serveur Web peut afficher correctement le contenu
généré par un script PHP. Pour essayer ceci, il suffit de visiter cette page dans notre navigateur
Web.
http://addresse_IP_serveur/index.php
La page à laquelle vous venez devrait ressembler à ceci :
Cette page vous fournit essentiellement des informations sur votre serveur du point de vue
de PHP. C'est utile pour le débogage et pour vous assurer que vos paramètres sont appliqués
correctement.
Elies Jebri
Page 5 sur 6
LPIC‐202
Lab 6
Le fichier /etc/php.ini contient la configuration de PHP. On peut commencer par définir le
fuseau horaire du serveur, nécessaire pour le bon fonctionnement de certaines applications.
Au lieu d’éditer ce fichier directement, on va créer la configuration correspondante dans un
fichier /etc/php.d/date.ini en l’éditant comme ceci.
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Afrique/Tunis
Redémarrer Apache et vérifier les données correspondantes dans la page qui affiche les infos
PHP.
Elies Jebri
Page 6 sur 6