Installation d'un Serveur Internet
Étape 1 : Wamp, DNS, ouverture sur le réseau.
Réponse AJAX

Cette version du cours est valable pour WAMP Serveur 2.4 à 3.0.0. Certains points de ce cours varient significativement avec d'autres versions, notamment la vieille 2.2 et la nouvelle 3.0.6.

Objectif.

L'objectif de ce cours/TP est :

Prérequis matériels.

Pour faire ce TP vous devez avoir à disposition :

Installation de WAMP Server

On pourrait trouver des avantages à installer séparément Apache puis son module PHP, MySQL puis phpMyAdmin. Toutefois, la suite logicielle WAMP Server 2 nous permet de gagner un temps considérable, et nous laisse toute la souplesse nécessaire pour configurer chaque logiciel à notre guise.

Par principe, nous installerons ce serveur Internet dans un système d'exploitation serveur, comme Windows Server 2008, Windows Server 2012 ou une distribution de Linux. Toutefois, tout ce qui est dit ici s'appliquera également si vous l'installez sous Windows XP ou Seven, à condition que le système de fichiers soit NTFS et pas FAT32. Pour Windows 8, cela reste à tester.

L'installation de WAMP ne pose aucune difficulté. Pendant l'installation, vous devrez saisir :
- le serveur SMTP utilisable au lycée : smtp.numericable.fr,
- l'adresse électronique de l'administrateur du serveur : mettez votre mél.

Installation du redistribuable Visual C++ 2012

Le redistribuable de Visual Studio (l'équivalent du JRE pour Java) doit être installé car Apache a été compilé sous Microsoft Visual C++ 2012. Si vous avez déjà installé Visual Studio, cette étape est inutile.

Cherchez dans Google redistribuable visual studio 2012 et installez la version 64 bits.

Installation de WAMP Server puis tests

Lancez votre Windows Server 2012 Virtualisé sous VirtualBox.

Rendez-vous sur www.wampserver.com

Téléchargez et Installez la dernière version de WAMP Server 64 bits (mars 2015 : WAMP 2.5 & PHP 5.5)

Pour vérifier que tout marche, lancez un navigateur (sur le serveur) et ouvrez l'URL : http://127.0.0.1. Si ça marche, la page d'accueil de WAMP s'ouvre.

Activez et configurer le serveur DNS

Si vous avez déjà votre propre nom de domaine...

Vous pouvez vous passer de l'installation du DNS et de sa configuration. Vous n'aurez qu'à rajouter de nouvelle entrées dans votre configuration DNS existante (par exemple : phpmyadmin.votre-domaine.com pointe vers 172.18.22.???.

On va installer un serveur DNS. Le but est qu'on accède à vos différents sites grâce des URL du type : http://www.domaine-v_anonyme.local.

Ajout du service DNS

Allez dans le Gestionnaire de serveur -> Gérer -> Ajouter des rôles et fonctionnalités.

Dans la fenêtre Sélectionnez des rôles de serveur, cochez Serveur DNS puis validez tout.

Ajout du nom de domaine

Allez dans le Gestionnaire de serveur -> Outils -> DNS.

Cliquez sur le nom de votre serveur (par exemple WIN-COI7C2465U), puis Action -> Nouvelle Zone.

Zone principale (votre DNS est le Primary Domain Contoller de ce domaine, les autres ne sont que de vulgaires caches),

Zone de recherche direct (pour convertir des nom de domaines en adresses IP),

Le nom de la zone (c'est à dire le nom de domaine) : domaine-v_anonyme.local, puis validez tout.

Ajout d'un premier FQDN

Grâce à IPCONFIG, relevez l'adresse IP de votre Windows Serveur et notez-la ici :

Votre réponse n°1

Cliquez sur votre zone (comme dans le schéma ci-dessus), Action -> Nouvel hôte (A ou AAAA).

Renseigner le nom : www, l'adresse IP : (celle de votre serveur), puis validez.

Test de ping et ajustements

Dans une fenêtre de commande de votre serveur, essayez d'exécuter PING www.domaine-v_anonyme.local. Est-ce que ça marche ?

Votre réponse n°2

Dans une même fenêtre, faites IPCONFIG /ALL et relevez ici l'adresse notée comme Serveur DNS :

Votre réponse n°3

Grâce à cette indication, expliquez pourquoi le ping n'a pas marché ?

Votre réponse n°4

Allez dans Modifier les paramètres de la carte [réseau], propriétés TCP/IP v4,

utiliser l'adresse de serveur DNS suivante : mettez l'adresse de votre serveur.

Réessayez d'exécuter le même PING (PING www.domaine-v_anonyme.local). Maintenant, est-ce que ça marche ?

Votre réponse n°5

Essayez d'exécuter PING www.google.fr. Est-ce que ça marche ?
Remarque : chez moi ça marche alors que je ne m'y attendais pas du tout, je pensais qu'il fallait mettre un redirecteur dans mon DNS pour qu'il sache résoudre les zones qu'il ne gère pas. Si quelqu'un sait pourquoi ça marche, il me le dit ou le met en commentaire en bas de cette page.

Votre réponse n°6
\ping www.domaine-spastore.local Envoi d'une requête 'ping' sur www.domaine-spastore.local [192.168.0.117] avec 32 octets de données : Réponse de 192.168.0.117 : octets=32 temps<1ms TTL=128 Réponse de 192.168.0.117 : octets=32 temps<1ms TTL=128 Réponse de 192.168.0.117 : octets=32 temps<1ms TTL=128 Réponse de 192.168.0.117 : octets=32 temps<1ms TTL=128 Statistiques Ping pour 192.168.0.117: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%), Durée approximative des boucles en millisecondes : Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms \ping google.fr Envoi d'une requête 'ping' sur google.fr [173.194.67.94] avec 32 octets de données : Réponse de 173.194.67.94 : octets=32 temps=28 ms TTL=46 Réponse de 173.194.67.94 : octets=32 temps=26 ms TTL=46 Réponse de 173.194.67.94 : octets=32 temps=27 ms TTL=46 Réponse de 173.194.67.94 : octets=32 temps=27 ms TTL=46 Statistiques Ping pour 173.194.67.94: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%), Durée approximative des boucles en millisecondes : Minimum = 26ms, Maximum = 28ms, Moyenne = 27ms

Ajustement pour le navigateur

Dans vos navigateurs (sur le serveur et sur l'hôte), modifiez les paramètres de proxy de façon à ce que le proxy ne soit pas utilisé pour domaine-v_anonyme.local :

Vérification de l'accès à partir d'un ordinateur distant

À partir de votre ordinateur hôte (celui où est installé VirtualBox), inutile d'essayer de contacter votre serveur WAMP, pour l'instant ça ne marche pas. Pourquoi ?

Réparation du DNS

Pour que votre ordi puisse résoudre votre nom de domaine, allez dans les paramètres de la carte réseau, propriétés TCP/IP v4, et mettez :

Pour que votre ordi puisse résoudre votre nom de domaine, donnez-moi votre adresse IP pour que je la rentre dans le serveur DNS utilisé sur notre réseau local (172.18.22.7).

Tentez à nouveau (depuis l'hôte) : PING www.domaine-v_anonyme.local (ne fermez pas la fenêtre). Quelle est l'erreur obtenue ?

Votre réponse n°7

Cette erreur vous apprend-elle que la résolution du nom de domaine a échoué, ou qu'il y a un problème de communication entre l'hôte et le serveur ?

Votre réponse n°8

Réparation du pare-feu pour le PING

Allez dans le Gestionnaire de serveur -> Outils -> Pare-feu Windows avec ....

Tentez à nouveau (depuis l'hôte) : PING www.domaine-v_anonyme.local. À ce stade, le serveur devrait répondre.

Règles de trafic entrant -> activez la règle Partage de fichiers et d’imprimantes (Demande d’écho - Trafic entrant ICMPv4)

\ping www.domaine-spastore.local Envoi d'une requête 'ping' sur www.domaine-spastore.local [192.168.0.117] avec 32 octets de données : Réponse de 192.168.0.117 : octets=32 temps<1ms TTL=128 Réponse de 192.168.0.117 : octets=32 temps<1ms TTL=128 Réponse de 192.168.0.117 : octets=32 temps<1ms TTL=128 Réponse de 192.168.0.117 : octets=32 temps<1ms TTL=128 Statistiques Ping pour 192.168.0.117: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%), Durée approximative des boucles en millisecondes : Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms

Réparation du pare-feu pour le HTTP

Dans le pare-feu Windows, Règles de trafic entrant -> Nouvelle règle,

Quel type de règle voulez-vous créer ? Port (si on met Programme puis httpd.exe, je pense que ça marche aussi).

Cette règle s'applique-t-elle à TCP ou UDP ? TCP (Apache n'utilise que TCP, contrairement aux DNS et aux flux multimedia qui utilisent UDP).

Cette règle s'applique à des Ports locaux spécifiques : 80, 443 (le 443 au cas ou on prévoit de faire du HTTPS sur notre serveur, ce qui n'est pas prévu dans ce TP).

Puis validez tout, nom de la règle : Apache ou HTTP ou ce que vous voulez.

Là, nous n'aurons plus besoin du Gestionnaire de serveur, que vous pouvez donc fermer.

Vérification : à partir d'un navigateur sur l'ordinateur hôte, accédez à l'URL http://www.domaine-v_anonyme.local. Vous êtes ravi car vous obtenez un magnifique Forbidden, You d'ont have permission to acces / on this server, vous avez réussi à vous faire remballer gentiment par votre serveur Apache...

Autoriser Apache à recevoir les requêtes distantes

Maintenant autorisons dans Apache les accès depuis d'autres ordinateurs. Par défaut, Apache est configuré pour ne répondre qu'aux requêtes locales.

Ouvrez le fichier httpd.conf (la configuration de Apache) qui se trouve dans C:\wamp\bin\apache\apache2.4.9\conf

Trouvez la directive suivante :

<Directory "c:/wamp/www/"> ... Require local </Directory>

Et remplacez-là par :

<Directory "c:/wamp/www/"> ... Require all granted </Directory>

Nouveauté avec la version 3.0.6.

Les droits sur la racine sont donnés non plus dans httpd.conf, mais dans extra/httpd-vhosts.conf. C'est dans ce fichier qu'il faut remplacer Require local par Require all granted.

Redémarrez Apache, puis re-testez l'accès depuis le navigateur sur l'hôte. Normalement vous accédez à la page d'accueil de Wamp.

(remarque : cette modif est équivalente à "Put Online" dans le menu de WampManager).

Sécurisation de MySQL et phpMyAdmin

Imposer l'authentification pour accéder à phpMyAdmin

Lorsque vous accédez à phpMyAdmin (par exemple en tapant http://127.0.0.1/phpmyadmin sur votre serveur, vous accédez directement à MySQL en mode administrateur, ce qui n'est pas du tout sécurisé et totalement inacceptable.

Trouvez le fichier config.inc.php qui se trouve à la racine de phpMyAdmin (c:\wamp\apps\phpmyadmin4.1.14).

Trouvez les lignes suivantes qui permettent d'accéder à phpMyAdmin avec les paramètres utilisateurs/mot de passe indiquées :

$cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = '';

Remplacez-les par (http pour une pop-up, cookie pour un formulaire HTML):

$cfg['Servers'][$i]['auth_type'] = 'http'; /* $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = ''; */

Dorénavant phpMyAdmin vous impose de vous authentifier :

Supprimer les utilisateurs par défaut 'vide' inutile

Si vous vous connectez avec un utilisateur bidon, vous aurez la suprise de remarquez que vous accéder à phpMyAdmin !!! (ok : sans droit aucun). Ceci est du à la présence d'un utilisateur vide dans la table user de la BDD mysql.

Vous remarquez également qu'il y a trois root, chacun autorisé à se connecter... depuis le poste local !

Faites le ménage en :

Mettre un mot de passe au root (l'administrateur de MySQL)

Un root sans mot de passe, c'est pas génial, surtout maintenant que le serveur est accessible depuis l'extérieur (en fait pas encore, à cause du pare-feu).

Connectez-vous à phpMyAdmin et changez le mot de passe de l'administrateur grâce à la commande :
SET PASSWORD = PASSWORD('abcd') ;

Vous allez devoir vous reconnecter immédiatement avec le nouveau mot de passe.

Ouverture du pare-feu pour MySQL (facultatif)

Étape facultative que je fais sur mes serveurs mais qu'on retrouve rarement chez les hébergeurs.

Cela permet de se connecter à un serveur MySQL depuis l'extérieur soit avec la ligne de commande mysql.exe, soit avec une commande PHP comme mysqli_connect.

Ainsi, quand je programme en PHP sur un serveur, je peux accéder aux bases de données d'un autre serveur. Je peux administrer mes serveurs à distance en ligne de commande.

Dans le pare-feu Windows, Règles de trafic entrant -> Nouvelle règle,

Quel type de règle voulez-vous créer ? Port.

Cette règle s'applique-t-elle à TCP ou UDP ? TCP (MySQL n'utilise que TCP).

Cette règle s'applique à des Ports locaux spécifiques : 3306 (3306 est le port par défaut pour MySQL).

Puis validez tout, nom de la règle : MySQL.

Vérification : à partir de la fenêtre de commande sur l'ordinateur hôte :

\mysql -uroot -h192.168.0.117 -p Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 67 Server version: 5.6.17 MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

Création de nos deux premiers VirtualHost : www et phpmyadmin

Le but d'un VirtualHost, dans la configuration de Apache, est de dire : "Si j'accède au serveur avec telle URL, alors la racine Web est tel répertoire".

C'est ce qui est utilisé sur mon serveur : quand vous y accédez avec http://v_anonyme.bts-sio.com, vous accédez à votre propre espace Web.

C'est donc bien sûr la même méthode qui est utilisée chez les hébergeurs pour distinguer l'hébergement de chaque client.

À la fin du fichier httpd.conf, rajoutez les lignes suivantes :

<virtualhost *:80> servername www.domaine-v_anonyme.local documentroot c:/wamp/www </virtualhost> <virtualhost *:80> servername phpmyadmin.domaine-v_anonyme.local documentroot c:/wamp/apps/phpmyadmin4.1.14 </virtualhost>

Redémarrez Apache et vérifiez que http://www.domaine-v_anonyme.local marche toujours.

http://phpmyadmin.domaine-v_anonyme.local ne marchera que lorsque vous aurez inscrit l'entrée correspondante (ou un catchall) dans le serveur DNS. Vous pouvez le faire, sinon ça sera fait au début de l'étape suivante.
J'ai mis votre catchall sur mon serveur DNS, donc ça doit marcher.

Étape 2 : création d'un compte pour un internaute

La suite ici.