Création d’un serveur web virtualisé dédié au webmapping – partie 3

Dans cette partie, nous nous consacrerons à créer les alias permettant l’hébergement de sites web.


Pour héberger un site web, vous devez créer un espace dédié. Il s’agit en fait de créer un alias vers lequel toute requête http sera redirigée vers un répertoire du serveur, répertoire stockant les fichiers et scripts du site internet hébergé.

Cas d’étude

Exemple de la mise en place de répertoires et droits pour 3 sites web et 2 webmestres: Comment créer les espaces disques ainsi que les utilisateurs (les webmestres) pour ces sites?

Sites web:

  • http://site1/: dont les données stockées sur /var/www/site1
  • http://site2/: dont les données stockées sur /home/site-web/site2
  • http://site3/: dont les données stockées sur /home/site-web/site3

2 webmasters:

  • webmaster1: accès au site1 et site2,
  • webmaster2: accès au site2 et site3.

Création du site1

Créons le site1:

sudo -s
cd /var/www
mkdir site1
ls -la

Cette commande permet de voir que le dossier site1 a été créé mais avec les droits root:root.

Changeons le le propriétaire:

chown farah:www-data site1

Cette commande équivaut à:

chown farah site1
chgrp www-data site1
ls – la

Cette commande permet de voir que le dossier site1 a les droits passés à  farah:www-data

cd site1

Copions le fichier /var/www/index.html vers /var/www/site1/

cp ../index.html .

ls -la

On voit ici que index.html est root:root. Donnons les droits à farah sur le fichier

chown farah:www-data index.html
exit

Cette dernière commande, tout comme [CTRL]+[d] permet de se déconnecter de root

Éditons le fichier index.html

gedit index.html

Son contenu est:

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
Ajouter dans la première ligne le mot Farah et enregistrer
<html><body><h1>It works! Farah</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

Voir dans le navigateur le résultat à l’adresse suivante: http://localhost/site1/

L'alias vers site1 fonctionne

Remarque: si on retire les droits de lecture au groupe voici ce qui se passe

chmod 700 index.html

Le retrait des droits de lecture empêche Apache d'aller lire les fichiers de l'alias site1

On remet les droits par de lecture

chmod 644 index.html

Les droits ont été attribués normalement

A ce niveau, nous avons bien créé un espace web, mais l’adresse http://site1/ n’est pas encore fonctionnelle, seule l’adresse http://localhost/site1/ est opérationnelle. L’alias site1, n’est pas encore activé.

Création du site2

On décide de monter les autres sites dans un répertoire différent (par exemple, le disque / est plein, on doit donc monter un second disque dur qui aura comme rôle d’héberger tous les sites web /home/siteweb/

On créera le site2 dans ce répertoire /home/sitesweb/site2 et on utilise un lien pour pointer le site 2 vers les fichiers du site2 stockés sur /home/sitesweb/site2/

Positionnons nous rapidement sur le homedirectory par la commande:

cd

Créons le dossier site2 dans /home/sitesweb/

cd ..
sudo mkdir sitesweb
cd sitesweb
sudo mkdir site2

Cette dernière commande créée le répertoire site2 mais celui-ci appartient au groupe root

ls -la

donne pour le répertoire site2:

drwxr-xr-x  2 root root 4096 2010-03-16 15:33 site2

Il faut attribuer le dossier au groupe www-data

sudo chgrp www-data site2
ls -la

donne:

drwxr-xr-x  2 root www-data 4096 2010-03-16 15:33 site2

Le site2 appartient maintenant bien à www-data

Pour pouvoir consulter le site 2 depuis localhost, il faut créer un lien symbolique de /var/www/ vers /home/sitesweb/site2
cd /var/www
sudo ln -s /home/farah/sitesweb/site2 ./site2

Ici, on ne tape que ./site2 car on est déjà positionné dans /var/www/

ls -la

donne

lrwxrwxrwx  1 root    root       29 2010-03-16 15:40 site2 -> /home/sitesweb/site2/

Dans le navigateur http://localhost/site2/ donne ce qu’on attend bien:

L'alias site2 fonctionne, mais n'est pas sécurisé

Notez qu’il il faut ici sécuriser un minimum le serveur pour avoir un Forbidden (on verra plus tard).

On fait de même pour le site3

On créé ensuite 2 utilisateurs de nom « webmaster1 » et « webmaster2 »

sudo adduser  webmaster1
sudo adduser  webmaster2

Les alias avec Apache2

À supposer que nous disposions de la gestion des noms de domaine pour notre institut, nous souhaitons créer deux sites avec des noms de domaines que nous gérons.

Pour accéder au site web site2, on doit taper actuellement http://localhost/site2

Or, on veut accéder au site via l’url http://site2/ (site2  étant un domaine que nous gérons et dont nous contrôlons les DNS).

Éditons /etc/hosts

sudo gedit /etc/hosts

Dans le fichier, nous pouvons voir ce contenu notamment:

127.0.0.1 localhost
127.0.1.1 farah-laptop

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Ce qui est écrit dans les premières lignes, c’est que toute requete http://localhost/ ou http://farah-laptop renvoie vers la machine 127.0.0.1 soit le serveur lui même.

On ajoute donc les nouveaux sites:

  • 127.0.0.1         site1
  • 127.0.0.1         site2
  • 127.0.0.1         site3

Ce qui donne le fichier /etc/hosts suivant :

127.0.0.1 localhost
127.0.1.1 farah-laptop
127.0.0.1 site1
127.0.0.1 site2
127.0.0.1 site3

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Ainsi, toute adresse saisie dans un explorateur de type http://site3/ sera redirigée vers http://localhost/ (et non vers http://localhost/site3/ )

Attention, ceci n’est valable que sur la machine virtuelle (vu qu’on redirige vers localhost). Vu du réseau, la machine virtuelle doit être contactée par son adresse IP.

Pour rediriger http://site3/ vers  http://localhost/site3/ , il faut l’expliciter dans /etc/apache2/sites-available/ en copiant le fichier default et en créant un nouveau fichier du nom que l’on veut avoir, ici site3

On ajoute dans ce nouveau fichier l’alias par le code suivant en créant un nouveau fichier site1, site2 puis site3 sur la base du fichier default

On va dans le répertoire qui contient les site disponibles (sites-available)

cd /etc/apache2/sites-available/
sudo cp ./default ./site2

Dans cette précédente ligne, on copie le fichier default en un nouveau fichier site2 (il faut faire de même pour site1 et site3)

On édite le nouveau fichier, pour:

  • ajouter la ligne ServerName site2
  • modifier DocumentRoot /www/var/site2
  • modifier RootDirectory par /www/var/site2/

Ceci se fait par la commande:

sudo gedit site2

Le site2 est déclaré dans sites-available, il faut maintenant l’activer:

cd ../sites-enabled

On créé un lien symbolique pour activer le site site2 dans sites-enabled vers sites-available

sudo ln -s ../sites-availabled/site2

Enfin, il faut redémarrer le serveur web pour prendre en compte les modifications

sudo /etc/init.d/apache2 restart

Rappel: pensez à sécurisation le serveur Apache2

Référence biblio: http://doc.ubuntu-fr.org/tutoriel/securiser_apache2

Dans la partie 4, la dernière de ce tutoriel, nous verrons comment vérifier que le serveur fonctionne correctement. Pour cela, on fera un petit script php/html avec un brin d’Ajax pour que tout ça soit plus fun.

2 Comments

  1. Bonjour,
    Désolé du délais de réponse… j’avais pas vu votre commentaire 😉

    Première question: est-ce que votre serveur virtualisé (sur votre machine A si j’ai bien compris) est visible depuis les autres machines B et C?
    Si oui, alors c’est pas compliqué pour rendre visible votre serveur virtuel de l’extérieur si vous avez suivi le tutoriel (car votre machine virtuelle doit être en mode DHCP, c’est à dire qu’elle reçoit son adresse IP par votre routeur Belkin).
    Tout se joue sur votre Belkin:
    1- oui, il faut fixer l’adresse IP de votre serveur virtuel. Pour fixer l’adresse IP de votre serveur virtuel, vous devez connaître l’adresse MAC de la carte réseau virtuelle utilisée par votre serveur virtualisé. L’adresse MAC est générée par VirtualBox, pour cela, allez dans les préférence de votre machine virtuelle (lorsque celle-ci est arrêtée), et dans « Réseau », cliquez sur « Avancé ». L’adresse MAC sera affichée sous la forme de 12 caractères (par exemple 08002725673E). Tout les 2 caractères, vous devez insérer le caractère « : », l’adresse MAC devient donc 08:00:27:25:67:3E
    Allez dans votre routeur Belkin, cherchez où s’attribue les adresse IP fixes, et par exemple, et associez l’adresse IP (locale) de votre choix; moi, j’ai 192.168.0.100 qui est associé 08:00:27:25:67:3E
    2- Ensuite, vous devez réaliser toujours depuis le routeur Belkin, une redirection de port. En gros, dire que toute demande HTTP (toute requête sur le port 80 soit le port par défaut utilisé par le protocole HTTP) doit aller vers votre machine virtuelle dont l’adresse IP est 192.168.0.x. Il faut renseigner ça quelque part dans votre Belkin (les exemples qui suivent sont pour mon cas chez moi, adaptez les adresses IP à votre cas):
    Port Protocole Destination Port
    80 tcp 192.168.0.100 80

    Pour le nom de domaine, c’est plus compliqué, car ça fait intervenir deux intermédiaires, le registrar et votre FAI. En effet, cela nécessite que votre adresse IP attribuée par votre fournisseur d’accès (Free, Orange,…) soit fixe également (que votre modem ADSL -peut-être votre Belkin?- ait une adresse IP fixe). Le registrar a besoin de cette information pour associer un nom de domaine à une adresse IP (celle de votre modem, donc par redirection de port, celle de votre serveur virtuel).

    N’hésitez pas à me contacter par email vincent[aro_ba-se]bonnal.net, je suis bien plus réactif par ce biais.
    Vincent.

  2. Bonjour,
    j’ai effectué les 3 premières parties de votre tutoriel et tout est OK mais maintenant je suis bloqué. Voici ma configuration: machine de bureau A : processeur intel Quad, hôte win7, virtualbox 3.2.12, invité ubuntu 10.10. Configuration par pont dans VirtualBox. La machine A est reliée à internet par un modem routeur Belkin ADSL Wireless N (sécurité WPA)+ cable Ethernet de la machine A vers le routeur. Egalement : 2 portables B et C qui se connectent à internet grâce à la liaison sans fil. J’ai installé sur la machine A un serveur Apache2 + MySQL + PHP5.
    Ce que je voudrais maintenant , c’est rendre ce serveur en accès public et pas seulement local. J’ai donc installé un serveur virtuel dans ma configuration Belkin (il me propose ce service)
    Suis-je sur la bonne voie ? Comment rendre fixe l’adresse de ma machine virtuelle (celle de mon serveur APACHE) car le DHCP du routeur la change souvent. Est-il possible d’attribuer un nom de domaine dans ce cas ? J’ai consulté pas mal de documentation mais… Mon intention est de tester tout cela avant de passer sur un serveur dédié chez un hébergeur.

    Je vous remercie d’avance de vos conseils et des pistes que vous pourriez me signaler. Existe-il des cours dans ce sens, payants ou pas ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.