Les tutoriels d’installation d’un serveur web pullulent sur le net. Mais Linux étant ce qu’il est, la plupart des packages (programme que vous installez sur votre serveur) sont rapidement obsolètes. Ainsi, dès que vous souhaitez suivre un tuto, vous tombez vite sur des erreurs ou carrément sur des configurations totalement différentes et donc inutilisables.

Je ne suis, pour ma part, absolument pas administrateur serveur/réseau. Ce n’est pas ma spécialité et je ne peux même pas dire que j’aime ça. Mais il n’empêche, qu’en quelques mois, j’ai dû installer plus d’une vingtaines de serveurs et donc c’est tout naturellement que je voulais vous partager ma méthode.

Ainsi, nous allons voir ensemble comment installer et configurer un serveur web sous Linux Debian assez basique mais amplement suffisant pour la création d’un site internet.

Sommaire :

  • Chapitre 1 : Les bases
  • Chapitre 2 : Apache
  • Chapitre 3 : PHP
  • Chapitre 4 : Base de donnée
  • Chapitre 5 : Serveur mail

Chapitre 1 : Les bases

Lorsque vous achetez (ou louez) un serveur web chez un hébergeur, celui-ci vous installe une distribution dessus. Par exemple chez Online, il vous laisse le choix entre plusieurs systèmes d’exploitation (si vous êtes en mode « serveur ») : Debian, Ubuntu, Centos, Windows, ESXI, Mageia, Proxmox et Fedora. Pour ce tutoriel, nous avons choisi le système d’exploitation Debian en version 64 bits.

Une fois votre serveur installé, il faut maintenant vous connecter dessus, nous allons utiliser pour ça, un protocole appelé SSH. C’est un protocole sécurisé qui permet de prendre le contrôle total de votre machine en ligne de commande. Sachez qu’il faut attendre entre 3 et 15 minutes après le premier allumage d’un serveur pour que le SSH fonctionne. Ainsi, si vous n’arrivez pas à vous connecter, retenter d’ici quelques minutes.

Pour se connecter en SSH sur votre serveur, vous avez plusieurs possibilités :

– Pour Windows : Installez Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)

– Pour Mac : Utilisez directement votre terminal (/Applications/Utilitaires/Terminal)

– Pour Linux : Votre console fera amplement l’affaire …

Pour notre tutoriel, j’utilise le terminal de Mac OS X.  Son utilisation est exactement la même que la console de linux. Par contre, l’utilisation de putty est légèrement différente au niveau de la connexion au serveur. Celui-ci vous demande l’IP de votre serveur, le nom d’utilisateur et le mot de passe directement dans une fenêtre avant votre connexion et ce dernier vous connecte automatiquement au serveur. Ainsi, pour ceux qui utilisent putty, ne prenez pas en compte cette étape. Pour les autres, voici la ligne de commande a effectuer :

ssh  root@123.123.123.123

« root » est le super utilisateur par défaut de votre machine, celui-ci a les pleins pouvoir sur tous les fichier. Remplacez bien évidement 123.123.123.123 par l’IP de votre machine. La première fois que vous vous connecterez à votre serveur, votre ordinateur va vous demander si vous lui faites confiance. Ce choix vous appartiens entièrement, mais s’il est négatif, vous ne pourrez pas vous y connecter. C’est bête …

Ensuite, votre serveur vous demandera votre mot de passe. Attention ! Vous aurez beau le taper, celui-ci ne s’affichera pas, c’est tout à fait normal, simple question de sécurité. Valider simplement avec la touche « Entrer », vous êtes donc maintenant connecté à votre serveur.

Premier réflexe ! Mettre à jour votre machine. Commencez par rechercher des mises à jours :

apt-get update

Puis installez-les :

apt-get upgrade

Cette seconde opération est un peu plus longue (5 minutes chez moi) et peux vous poser quelques questions assez simples à répondre (il me demande par exemple le type de clavier que je veux utiliser, ce qui est totalement inutile, mais rien que pour me la péter, je sélectionne le MacBook Pro), si vous ne savez pas quoi répondre, la valeur par défaut est toujours idéale.

Votre serveur est à jour, nous sommes prêt à faire joujoux avec.

Chapitre 2 : Apache

Apache est le programme qui permettra à votre serveur d’interpréter vos fichiers et de les associer à une URL. Pour l’installer, exécutez la ligne de commande suivante :

apt-get install apache2

Félicitation, votre serveur est maintenant officiellement un serveur « web ». Tapez l’IP de votre machine dans votre navigateur, et vous verrez un beau « It works ! » apparaître. Ce fichier se trouve dans le répertoire « /var/www/ » par défaut. Cependant, certains d’entre vous n’ont pas forcément envie que leur site soit accessible directement depuis son IP. Apache nous permet donc de filtrer les entrées en fonction du nom de domaine appelé et de les rediriger vers des répertoires différents grâce aux fichier vhost. Nous allons donc maintenant configurer votre premier site (à tout hasard test.com).

Nous allons commencer par créer le répertoire qui accueillera le site en question. Allez dans le répertoire d’apache par défaut :

 cd /var/www/

Puis créez votre répertoire au nom de votre site :

mkdir test.com

Le répertoire /var/www/test.com/ est maintenant créé et va pouvoir accueillir votre site internet. Créons donc sa première page index.html qui va nous permettre de tester si apache est bien configuré :

nano /var/www/test.com/index.html

Remplissez le avec un code HTML, juste de quoi attester de la présence du fichier :

<center><b>Vous êtes maintenant sur le site test.com</b></center>

Pour enregistrer les fichier, appuyez sur CTRL + X puis validez. Nous allons maintenant créer le vhost qui correspondra au nom de domaine test.com

cd /etc/apache2/sites-available
nano test.conf

Et voici votre premier vhost :

<VirtualHost *:80>
        ServerAdmin contact@test.com
        ServerName test.com
        ServerAlias www.test.com
        DocumentRoot /var/www/test.com
        <Directory /var/www/test.com>
                Options -Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

Je m’explique :

ServerAdmin : L’adresse e-mail à renvoyer à vos utilisateur si une erreur survient

ServerName : Le nom de domaine sur lequel doit répondre le serveur

ServerAlias : Les alias du nom de domaine, comme le www ou d’autres sous-domaines

DocumentRoot : La racine de votre répertoire pointant vers le site

Toute la partie Directory représente les droits des fichiers du serveur (je ne développerais pas plus ici, sachez juste que les valeurs de notre vhost sont optimales pour un site web).

Enregistrez le fichier. Il faut maintenant l’activer, et pour ça, rien de plus simple :

a2ensite test

Maintenant, apprenez par coeur la ligne de commande suivante, elle vous permettra de prendre en compte les modifications effectuées à Apache et de redémarrer ce dernier :

service apache2 restart

Votre serveur est maintenant configuré pour recevoir le trafic venant du domaine test.com et redirigé vers le dossier /var/www/test.com/.

Par contre, vous l’aurez remarqué, le vrai domaine test.com ne pointe pas forcément sur votre serveur (si c’est le cas, vous avez énormément de chance !), nous allons, pour tester notre configuration, obliger votre ordinateur à rediriger test.com vers votre serveur.

Sur mac, ouvrez Finder, dans le menu, choisissez « Aller » puis « Allez au dossier » et tapez le répertoire suivant :

/private/etc/

Trouvez le fichier « host » (sans extension). Clic droit, « lire les informations ». Dans la partie « Partage et permissions » sélectionnez votre utilisateur et définissez lui le droit « Lecture et écriture » puis ouvrez le fichier avec votre éditeur de texte. Pour les autres systèmes d’exploitation, la manipulation est très similaire. Une petite recherche Google vous permettra d’arriver à vos fins. Une fois sur le fichier, rajouter à la fin de celui ci la ligne suivante :

123.123.123.123 test.com www.test.com

Notez que nous n’utilisons pas d’espace mais des tabulations ! Enregistrez. Vous venez d’apprendre à votre ordinateur à rediriger test.com et www.test.com vers l’IP 123.123.123.123 (modifiez cet IP par celui de votre serveur). Vous pouvez maintenant vous rendre à l’adresse http://www.test.com et vous allez voir votre fichier index.html.

Vous avez la possibilité, pour des questions de sécurité, de supprimer la redirection par défaut sur le répertoire /var/www en désactivant le vhost default :

a2dissite default

N’oubliez pas de redémarrer apache :

service apache2 restart

Si vous avez l’intention d’utiliser de l’URL rewriting, n’oubliez pas d’activer le mode, pour cela, rien de plus simple :

a2enmod rewrite

Votre apache est maintenant configuré correctement. Vous êtes presque prêt à installer votre site internet. Il manque encore un petit détail : votre serveur ne sait que lire vos fichiers, pas les interpréter. Nous devons donc installer PHP.

Chapitre 3 : PHP

Cette installation est très rapide et ne demande aucune configuration !

apt-get install php5

On peut également rajouter tout de suite quelques librairies bien utiles

apt-get install php-pear php5-gd php5-curl

On va maintenant vérifier que PHP fonctionne bien, pour cela, il suffit d’installer un fichier à la racine de votre site test.com avec à l’intérieur un phpinfo() :

nano /var/www/test.com/phpinfo.php

Et entrez le code suivant dans votre page :

<?php
phpinfo();
?>

Enregistrez et rendez-vous sur l’url de la page : http://www.test.com/phpinfo.php. Voici un récapitulatif de toutes les informations PHP de votre serveur. PHP est donc bien installé.

Chapitre 4 : Base de donnée

J’ai fait depuis longtemps le choix d’une base de donnée décentralisée, histoire de gagner du temps. Mais si vous souhaitez installer une base de donnée sur votre serveur, alors il vous faut installer MySQL, apprendre à votre serveur à faire communiquer votre base de donnée et PHP et enfin, vous donner la possibilité d’administrer cette base de donnée.

Pour commencer, il faut installer mysql :

apt-get install mysql-server

On va vous demander le mot de passe administrateur de votre base de donnée, notez le bien. Ensuite, apprenons à PHP à communiquer avec la base de donnée :

apt-get install php5-mysql

Et enfin, installons PHPMyAdmin qui nous permettra d’administrer cette base de donnée.

apt-get install phpmyadmin

Il va d’abords vous demander de faire un choix entre lighthttpd et apache2. Choisissez apache2 (attention, le fait qu’il soit surligné par défaut ne le sélectionne pas pour autant. Il vous faut appuyer sur la barre d’espace pour voir une étoile apparaître devant « apache2 »). Ensuite, il va vous demander l’autorisation de modifier votre base de donnée, répondez oui puis donnez lui le mot de passe de celle-ci. Il vous demandera ensuite de choisir un mot de passe pour vous connecter à PHPMyAdmin. Voila, PHPMyAdmin est installé avec succès. Vous devriez pouvoir vous connectez depuis l’URL http://www.test.com/phpmyadmin/. Si ce n’est pas le cas il faut déterminer par quel moyen y accéder. La solution la plus courante reste à paramétrer votre vhost pour que celui-ci fasse pointer le répertoire /phpmyadmin/ de votre site vers phpmyadmin :

nano /etc/apache2/sites-available/test

Et rajoutez juste après </Directory> les lignes suivantes :

Alias /phpmyadmin "/usr/share/phpmyadmin/"
<Directory /usr/share/phpmyadmin/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>

Puis redémarrez votre serveur apache :

service apache2 restart

Concrètement, je vous conseille de ne pas utiliser cette URL qui est utilisée par défaut. En effet, des milliers de robots scrutes tous les serveurs afins de déterminer qui a installé phpmyadmin et d’y exploiter d’éventuelles failles. Donc choisissez votre propre URI discrète.

Chapitre 5 : Serveur mail

Vous avez sûrement envie de pouvoir envoyer des mails depuis votre site internet. Pour cela, il faut apprendre à votre serveur à le faire en installant postfix :

apt-get install postfix

Il va vous demander comment le configurer, choisissez la configuration « Site Internet » puis un domaine depuis lequel envoyer vos mails. Dans l’idéal, renseignez un domaine existant, pointant réellement sur votre machine, mais pour ces tests, nous nous contenterons d’utiliser test.com. La seule répercussion (à ce que je sache) est que tout mail envoyé depuis test.com aura de grande chance de se trouver dans les SPAM.

Voila, la fonction mail() de PHP fonctionnera maintenant à merveille.

 

Voila votre serveur web prêt à être en production ! Dès que j’aurais le temps, je vous ferais sécuriser un peu tout ça.

 

UPDATE 06/10/2015 : Suite à la remarque de d’Alexis, ce tutoriel a été mit à jour pour la version 8 de Debian ! Quelques modifications sont importantes : vous devez impérativement renommer vos VHOST pour y ajouter l’extension « .conf ».