Apprenez à installer un serveur Web sous Debian !
Last updated on Tuesday, November 19, 2013
  • 2 heures
  • Moyen

Ce cours est visible gratuitement en ligne.

Got it!

Introduction du cours

Bonjour et bienvenue sur mon premier tutoriel, nous allons apprendre à installer et configurer un serveur web sur Debian.

Le serveur web, Apache

Nous nous occuperons en premier d'Apache, le serveur qui enverra les pages web aux visiteurs. :)

Commençons par installer les paquets nécessaires :

  • apache2 : Le serveur web ;

  • apache2-utils : Quelques utilitaires ;

  • php5 : Le module PHP ;

  • php5-dev : Fichiers de développements (nécessaires pour certains modules) ;

  • php5-gd : La librairie GD, pour manipuler les images. (ça n'est pas forcément obligatoire, mais autant l'installer pendant que nous y sommes)

C'est très rapide avec aptitude :

aptitude install apache2 apache2-utils php5 php5-dev php5-gd

La Configuration

Passons maintenant à la configuration d'Apache.

Les Adresses et les Ports

Apache peut écouter sur différentes adresses et ports, pour cela nous éditerons le fichier ports.conf.
Dans ce fichier, les directives vont par deux :

  • NameVirtualHost : On défini un VirtualHost. (prochaine sous-partie)

  • Listen : Dit a apache d'écouter sur un certain port.

Exemple : vim /etc/apache2/ports.conf

# On définit un VH toutes les adresses (*) et le port 80
NameVirtualHost *:80
# On dit à Apache d'écouter sur le port 80
Listen 80

# Vous pouvez en faire plusieurs, par exemple sur un autre port.
# On en défini un autre sur toutes les adresses (*) et le port 8080
NameVirtualHost *:8080
# On dit a Apache d'écouter aussi sur le port 8080
Listen 8080

# Je n'expliquerai pas l'utilisation de SSL (https) ici.
<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

La Sécurité

Les directives concernant la sécurité sont dans le fichier conf.d/security : vim /etc/apache2/conf.d/security
Nous changerons :

  • ServerTokens : Envoi des informations (comme l'OS et la version d'Apache) aux clients ;

  • ServerSignature : Donne des informations en bas des pages d'erreurs ;

  • TraceEnable : La méthode TRACE est réservée pour le débogage.

# Chercher la ligne du ServerTokens et remplacer par :
ServerTokens Prod

# Chercher la ligne du ServerSignature et remplacer par :
ServerSignature Off

# Chercher la ligne du TraceEnable et remplacer par :
TraceEnable Off

Les VirtualHosts

Les VirtualHosts (en français "hôtes virtuels") permettent de "découper" le serveur en plusieurs sites.

Pour en fabriquer un, créez un fichier du nom de votre site dans "sites-available" : vim /etc/apache2/sites-available/monsite

# Le virtualHost de monsite.fr
<VirtualHost *:80>
    ServerAdmin webmaster@monsite.fr        # L'E-Mail de l'administrateur
    ServerName  monsite.fr                  # L'adresse du site
    ServerAlias www.monsite.fr monsite.com  # Les alias du site
    
    # Les documents du site (Souvent /var/www/monsite ou /home/monsite)
    DocumentRoot /var/www/monsite.fr/
    
    # Les options du site (comme dans un .htaccess)
    <Directory /var/www/monsite.fr/>
        # On autorise tous le monde a voir le site
        Order allow,deny
        allow from all
    </Directory>
    
    # Les logs (historiques des IPs et des fichiers envoyés)
    ErrorLog /var/log/apache2/monsite.fr-error_log      # Erreurs
    TransferLog /var/log/apache2/monsite.fr-access_log  # Acces
</VirtualHost>

Nous avons fini la configuration, activons le VH et redémarrons le serveur :

a2ensite monsite
/etc/init.d/apache2 restart

Testons Apache

Pour vérifier que tout cela fonctionne, connectez vous au serveur avec son IP : http://aaa.bbb.ccc.ddd/
Vous devez normalement voir un grand "It works!" : C'est la page par défaut.

Si vous avez un problème ici, regardez les dernières lignes du log d'erreurs : tail /var/log/apache2/error.log
Si il n'y a rien d'anormal dans le log, le firewall bloque surement apache : iptables -L | grep 'DROP'

Le serveur FTP, ProFTPD

Nous allons ensuite installer et configurer un serveur FTP, j'ai retenu ProFTPD qui est très simple et rapide à configurer. ;)

On l'installe:

apt-get install proftpd

Aptitude vous demandera comment installer ProFTPD :
Choisissez "standalone" pour démarrer ProFTPD indépendamment.

Configuration

Ouvrez proftpd.conf : vim /etc/proftpd/proftpd.conf
Et modifiez :

# Le nom de votre serveur FTP (sera affiché à la connexion) :
ServerName "Le serveur FTP de monsite.fr"

# Vérifiez que ServerType est bien "standalone" :
ServerType standalone

# Dé-commentez cette ligne pour que les utilisateurs restent dans leurs dossier:
DefaultRoot ~

# Vous pouvez changer le port pour des raisons de sécurité (défaut : 21)
Port 2121

Vous pouvez donc redémarrer ProFTPD :

/etc/init.d/proftpd restart

Pour vous connecter, utilisez le même compte qu'avec SSH.

Nous pouvons donc créer des comptes utilisateurs facilement :

adduser <nom>

# Exemple pour monsite.fr :
adduser monsitefr --home /var/www/monsite.fr/
# Quand vous vous connecterez, vous serez dans /var/www/monsite.fr/

# Pour savoir plus d'arguments
man adduser

Le serveur SQL, MySQL

Dans cette partie très courte, nous allons installer MySQL, qui est le serveur SQL plus répandu.

Commençons par installer les paquets mysql-server et l'extension PHP :

apt-get install mysql5-server php5-mysql

MySQL va vous demander un mot de passe, entrez-en un, de préférence compliqué.

Configuration

Ouvrez le fichier my.cnf: vim /etc/mysql/my.cnf

# Cherchez la ligne commençant par "language" pour changer la langue:
#language = /usr/share/mysql/english
language = /usr/share/mysql/french

Redémarrez MySQL :

/etc/init.d/mysql restart

Sécurisation

Pour terminer, entrez la commande mysql_secure_installation pour sécuriser l'installation : il vous demandera le mot de passe root MySQL entré précédemment, puis vous pourrez (dans l'ordre) :

  • Changer le mot de passe ;

  • Enlever l'accès anonyme ;

  • Empêcher l'accès root depuis un autres ordinateur ;

  • Supprimer la base de donnée de test et son accès ;

  • Recharger la table des privilèges.

Installation de phpMyAdmin

Pour mettre en pratique tout ce que nous avons appris, nous allons installer phpMyAdmin. :)

Le VirtualHost

Ouvrons le fichier du VH de votre site : vim /etc/apache2/sites-available/monsite
Ajoutez y ce code :

# Le virtualHost de sql.monsite.fr
<VirtualHost *:80>
    ServerAdmin webmaster@monsite.fr
    ServerName  sql.monsite.fr
    DocumentRoot /var/www/sql.monsite.fr/

    <Directory /var/www/sql.monsite.fr/>
        # On autorise tous le monde a voir le site
        Order allow,deny
        allow from all
        # Vous pouvez mettre ici une protection comme dans le tutoriel xHTML de M@teo21
    </Directory>

    ErrorLog /var/log/apache2/sql.monsite.fr-error_log      # Erreurs
    TransferLog /var/log/apache2/sql.monsite.fr-access_log  # Accès
</VirtualHost>

Pour que Apache n'affiche pas d'erreurs, il faut créer le dossier "/var/www/sql.monsite.fr/" :

mkdir /var/www/sql.monsite.fr/

Il faut encore redémarrer apache :

/etc/init.d/apache2 restart

Télécharger phpMyAdmin

Comme l'indique le titre, nous allons maintenant télécharger et installer phpMyAdmin.

Allez sur le site de phpMyAdmin, http://www.phpmyadmin.net/ et repérez a droite dans une boite "Download" le ".gz" : Copiez l'adresse du lien. Vous vous retrouvez donc normalement avec une URL de sourceforge.net.

Sur votre serveur, téléchargez l'archive et déplacez son contenu dans "/var/www/sql.monsite.fr/" : (sans oublier les ' au wget)

cd ~
wget 'http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.3.4/phpMyAdmin-3.3.4-all-languages.tar.gz/download#!md5!7ef6078dd709f01a6cf10c718b98e4c5' -O phpmyadmin.tar.gz
tar -xzvf phpmyadmin.tar.gz
rm phpmyadmin.tar.gz
mv phpMyAdmin-*/* /var/www/sql.monsite.fr/
rm -r phpmyadmin-*/

Entrez dans le dossier contenant PMA déplacez la configuration :

mv config.sample.inc.php config.inc.php

Si vous avez déjà installé le serveur DNS (lien dans la conclusion), vous pouvez y accéder avec http://sql.monsite.fr/

Vous avez maintenant un serveur web fonctionnel, il n'y a plus qu'à y mettre votre site. ;)

Si vous voulez en savoir plus, je vous conseille ce tutoriel sur les DNS et celui-ci sur la sécurité d'un serveur.

How courses work

  • 1

    You have now access to the course contents and exercises.

  • 2

    You will advance in the course week by week. Each week, you will work on one part of the course.

  • !

    Exercises must be completed within one week. The completion deadline will be announced at the start of each new part in the course. You must complete the exercises to get your certificate of achievement.

  • 3

    At the end of the course, you will get an email with your results. You will also get a certificate of achievement if you are a

Example of certificate of achievement
Example of certificate of achievement