Lab 6: Apache Virtual Hosting CentOS 7

Web Server Configuration with Apache on CentOS · lab

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

Publicité

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

Publicité

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

Publicité

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

Publicité

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