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/
Remarque: si on retire les droits de lecture au groupe voici ce qui se passe
chmod 700 index.html
On remet les droits par de lecture
chmod 644 index.html
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:
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.
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.
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 ?