Photo

Blog de Justin COUTAREL

développeur

May
5
2014

Installation du serveur Web Apache sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS Administration système, GNU/Linux

Toujours dans la suite d’articles dédiée à l’installation d’un serveur Kimsufi sous Ubuntu Server 14.04 LTS, je vais aujourd’hui présenter l’installation du serveur Web Apache.

Ainsi, nous aurons la possibilité d’héberger des sites Web sur notre serveur et même des applications Web, telles que Owncloud ou encore le WebMail Roundcube. Comme une bonne partie des sites et des applications Web est écrite en PHP, nous allons également installer PHP. PHP est un langage de programmation qui permet entre autres de créer des pages Web (HTML) dynamiquement (qui ne sont pas forcément dynamiques, pour cela il faut utiliser d’autres techniques telles qu’Ajax).

  • Installation et configuration

Pour commencer, il est nécessaire d’installer les paquets apache2 et php5. Pour cela, connectez vous au serveur via SSH et basculez en tant que root avec la commande suivante:

Puis entrez la commande suivante:

Ensuite, nous allons modifier la configuration du serveur Web Apache. Lorsque l’on a installé Ubuntu Server 14.04 LTS, dans un précédent article, nous avons créé une partition supplémentaire, montée sur  /srv. Celle-ci sert à stocker toutes les données des différents services du serveur. Le but de cette opération est de pouvoir conserver ces données en cas de réinstallation du serveur. Pour cela, il suffit de ne pas formater la partition /srv lors de la réinstallation. Ainsi, nous allons créer un dossier www dans le dossier /srv pour y stocker nos sites Web. Pour cela, entrez les commandes suivantes:

Ici, nous modifions le propriétaire et le groupe du dossier pour qu’il appartienne à l’utilisateur et au groupe du service du serveur Web Apache.

Le serveur Web Apache est configuré par défaut pour qu’il utilise le dossier /var/www comme racine, c’est à dire là il va aller chercher les sites Web. Nous allons donc modifier sa configuration pour qu’il utilise le dossier /srv/www, que l’on a créé juste avant, comme racine. Pour cela, ouvrez et éditez le fichier /etc/apache2/apache2.conf, par exemple avec la commande suivante:

Cherchez et modifiez la balise ouvrante <Directory /var/www/> en <Directory /srv/www/>, comme ici:

Ajoutez également la ligne suivante à la fin du fichier:

Ceci permet d’éviter d’avoir le message d’erreur suivant au démarrage du serveur Web Apache:

Vous pouvez enregistrer et quitter l’éditeur.

Modifiez ensuite le fichier /etc/apache2/sites-available/000-default.conf, par exemple avec la commande suivante:

Pour qu’il ressemble à cela:

De la même manière, nous avons modifié la valeur de la variable DocumentRoot afin que le serveur Web Apache utilise /srv/www comme racine. Nous en profitons également pour modifier l’adresse e-mail de l’administrateur du serveur. Ainsi, entrez votre adresse e-mail comme valeur du paramètre ServerAdmin. Si vous pensez utiliser le protocole HTTPS pour diffuser vos sites Web, modifiez de la même manière le fichier  /etc/apache2/sites-available/default-ssl.conf (qu’il faudra activer avec la commande a2ensite, voir plus bas).

Le serveur Web Apache est maintenant bien configuré. Il ne reste plus qu’à la redémarrer. Pour cela, entrez les commandes:

Ici, nous fixons également le répertoire personnel de l’utilisateur du serveur Web Apache (www-data) à /srv/www.

Pour vérifier que le serveur Web Apache est opérationnel, entrez la commande suivante:

Ceci permet de créer une petite page PHP de test qui permettra d’afficher la configuration de PHP.

Ensuite, dans votre navigateur, entrez l’adresse IP de votre serveur (éventuellement précédée de http://), comme par exemple:

Si le serveur est bien configuré, il devrait vous renvoyer une page récapitulant la configuration de PHP, comme ici:

Installation du serveur Web Apache sur un serveur dédié Kimsufi - Test du serveur Web Apache

Installation du serveur Web Apache sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Test du serveur Web Apache

  • Héberger un site Web

Pour héberger un site, il faut dans un premier temps envoyer les fichiers du site sur le serveur. Pour cela, créez un nouveau dossier et glissez y les fichiers du site. Ensuite, compressez le dossier en une archive .ZIP ou .TAR.GZ (avec, par exemple 7-Zip) et transférez la via le protocole SSH. Si vous êtes sous GNU/Linux, vous pouvez utiliser la commande SCP, comme ici:

Remplacez le nom d’utilisateur, l’adresse IP du serveur ainsi que le port SSH que l’on a défini dans le billet précédent sur la sécurisation minimale du serveur. Si vous avez choisi d’utiliser l’authentification par certificat, ajoutez, après le paramètre -P,  le paramètre -i suivi du chemin menant au fichier contenant votre clé privée (sur votre machine de travail).

Sous Microsoft Windows, vous pouvez utiliser WinSCP.

Une fois l’archive transférée, connectez vous au serveur via SSH et décompressez l’archive.

– Pour une archive .ZIP:

Il est nécessaire d’installer le paquet unzip. Pour cela, tapez la commande suivante:

Ensuite, utilisez la commande suivante en modifiant le nom de l’archive:

– Pour une archive .TAR.GZ:

Utilisez la commande suivante en modifiant le nom de l’archive:

Basculez maintenant en tant que root, avec la commande suivante:

Et déplacez le dossier contenant les fichiers du site dans le dossier /srv/www, avec la commande suivante:

Bien entendu, modifiez le nom d’utilisateur et le nom du dossier.

J’ai pour habitude de stocker les sites par nom de domaine dans le dossier /srv/www. Ainsi, pour le nom de domaine justincoutarel.fr, j’ai un dossier /srv/www/justincoutarel.fr. Cela permet de s’y retrouver rapidement s’il y a beaucoup de sites hébergés sur le serveur. Bien entendu, je pars du principe que vous disposez déjà d’un nom de domaine. Sinon, vous pourrez en acheter un pour une dizaine d’euros par an chez un des différents prestataires disponibles sur le Web. Ainsi, renommez le dossier, avec le nom de domaine du site, avec la commande suivante:

Afin que le serveur Web Apache puisse lire et écrire dans le dossier du site, nous allons fixer le propriétaire et le groupe du dossier et de ses sous-dossiers et ses sous-fichiers. Pour cela, entrez la commande suivante:

Ensuite, il est nécessaire d’ajouter un virtualhost. Un virtualhost permet notamment de lier un nom de domaine avec un dossier sur le serveur. Ainsi, le fichier /etc/apache2/sites-available/000-default.conf lie le domaine localhost, c’est à dire le serveur lui même avec le dossier /srv/www. Pour cela, dupliquez le fichier /etc/apache2/sites-available/000-default.conf avec la commande suivante:

Ouvrez et éditez ensuite le fichier copié, avec par exemple la commande suivante:

Décommentez la variable ServerName en enlevant le # (dièse) devant le nom de la variable et donnez lui pour valeur votre nom de domaine. Modifiez ensuite la valeur de la variable DocumentRoot avec comme valeur le chemin absolu menant au dossier contenant les fichiers du site. Ainsi, vous devriez avoir un fichier ressemblant à ceci:

Il faut ensuite activer le virtualhost créé. Pour cela entrez la commande suivante:

Il ne reste plus qu’à redémarrer le serveur Web Apache. Pour cela, tapez la commande suivante:

Afin que le site soit pleinement fonctionnel, vous devez modifier la Zone DNS de votre nom de domaine pour que l’enregistrement de type A ou AAAA pointe sur le serveur avec son adresse IP respectivement en version 4 et en version 6. Un délai de 24 à 48h peut être nécessaire afin que les modifications soient diffusées sur l’ensemble des serveurs DNS (serveurs de noms de domaine). Cette opération fera l’objet d’un futur article.

Une fois votre nom de domaine correctement configuré, vous devriez pouvoir accéder à votre site depuis votre navigateur.

  • Configurer la page d’accueil du serveur

Remarque importante: si vous souhaitez créer une redirection sur votre nom de domaine, il doit au préalable être configuré pour pointer sur le serveur. Dans le cas contraire, vous n’aurez plus accès aux applications Web disponibles sur le serveur. Je présente la configuration de noms de domaine dans l’article Configuration de noms de domaines chez Online.net et 1and1.fr pour pointer sur un serveur dédié Kimsufi.

Dans la première section de ce billet, nous avons configuré le serveur Web Apache pour que le virtualhost par défaut, celui qui sera utilisé lors que l’on accède au serveur Web Apache par l’adresse IP du serveur retourne le site situé dans le dossier /srv/www. Ceci nous a permis de tester la configuration du serveur Web Apache. Cependant, en laissant la configuration telle quelle, il est possible d’accéder à tous les sites du serveur en ajoutant à la fin de l’URL le nom de domaine d’un site. Ainsi, il est préférable de créer une redirection. Ceci permet de rediriger le navigateur de l’internaute vers un site précis lorsque celui entre directement l’adresse IP du serveur dans son navigateur. Pour cela, ouvrez et éditez de nouveau le fichier /etc/apache2/sites-available/000-default.conf, avec la commande suivante par exemple:

Puis ajoutez la ligne suivante:

Avant la balise fermante </VirtualHost> en modifiant le nom de domaine, comme ici:

Il ne reste plus qu’à redémarrer le serveur Web Apache. Pour cela, tapez la commande suivante:

Vous pouvez maintenant tester si la redirection fonctionne. Ainsi, ouvrez votre navigateur et entrez l’adresse IP du serveur (précédée éventuellement de http://). Vous devriez voir l’adresse prendre pour valeur le nom de domaine que vous avez entré.

  • Rechargement de la configuration de fail2ban

Dans le précédent article consacré à la sécurisation minimale du serveur, nous avons mis en place le service fail2ban. Celui-ci permet de protéger le serveur contre d’éventuelles attaques. Nous avons également configuré fail2ban pour qu’il protège le serveur des requêtes DFind w00tw00t. Pour cela, fail2ban avait besoin d’un serveur Web Apache opérationnel. Maintenant que notre serveur Web Apache est pleinement opérationnel, il est nécessaire de recharger la configuration de fail2ban. Pour cela, entrez avec la commande suivante:

Le serveur Web Apache est à présent pleinement fonctionnel. Cependant, bon nombre de sites et d’application Web utilise une base de données. Il s’agit fréquemment de MySQL. Ainsi, nous allons devoir l’installer. Cette opération sera le sujet de mon prochain article.

EDIT: cet article a été mis à jour suite à la remarque de raphael, donnée en commentaire, concernant la configuration de la redirection vers un nom de domaine lorsque l’on tente d’accéder au serveur par le biais de son adresse IP.

5 réponses à ”Installation du serveur Web Apache sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS” :

  1. “ajoutez la ligne suivante:

    1 Redirect 301 / http://NOM_DOMAINE/

    Si on fait cela sans avoir son nom de domaine configuré l’adresse nsXXXX…..eu ou l’IP utilisée pour configurer le serveur ne nous permettront pas d’accéder au services installés ( http://XXXXXX/phpmyadmin OU Postfix OU Roundcube etc ….) puisque le domaine ne répondra pas.

    1. Bonjour,

      effectivement, si on met en place cette directive, nous serons redirigé vers le nom de domaine. S’il n’est pas encore configuré, nous n’accéderons pas aux applications Web disponibles sur le serveur. Ici, je prends un peu d’avance sur la configuration du nom de domaine. La mise en place de cette directive ne devrait se faire qu’une fois le nom de domaine correctement configuré. Je vais apporter cette précision à l’article. Merci pour votre remarque et votre lecture attentive de cet article.

  2. Bonjour,

    J’ai un souci lors de la copie du site compressé vers le serveur:
    – Je tape la commande indiquée et je rajoute le paramètre -i en indiquant le chemin sur le serveur vers le fichier contenant ma clé publique: -i /home/NOM_UTILISATEUR/.ssh/authorized_keys.
    -Rien ne se passe, je dois donc faire une erreur quelque part.
    Peut-être pourrais-je avoir un exemple concret de la commande incluant le chemin à écrire après -i?
    Merci par avance pour l’aide

    1. Bon, j’y suis arrivé en faisant:
      scp -P PORT_SSH MonFichier.zip NOM_UTILISATEUR@IP_SERVEUR:/home/NOM_UTILISATEUR
      Pas eu besoin du -i.
      A priori, c’est en train de copier.
      Désolé pour la question…

      1. Bonjour,

        désolé pour le retard. Le paramètre -i permet d’indiquer le chemin vers la clé privée, stockée sur votre machine de travail. Vous avez indiqué le fichier qui conserve les clés publiques autorisées à se connecter sur le compte utilisateur de la machine cible. J’ai l’impression que vous avez confondu avec le chemin indiqué dans l’article précédent, dans les commandes:

        que l’on tape sur le serveur et non pas sur la machine de travail. Je vais corriger l’article afin de lever toute ambiguïté.

Leave a Reply

Your email address will not be published. Required fields are marked *