Aller au menu - Aller au contenu

Icône Apprenez à installer un serveur Web sous Debian !

Mise à jour : 20/07/2010
Difficulté : Intermédiaire Intermédiaire Durée d'étude : 1 heure, 30 minutes Creative Commons BY-NC-SA
812 visites depuis 7 jours, classé 152/786
Bonjour et bienvenue sur mon premier tutoriel, nous allons apprendre à installer et configurer un serveur web sur Debian.

J'ai choisi Debian car c'est une distribution très utilisée sur les serveurs.
Vous pourrez facilement adapter les commandes pour d'autres distributions.

Si vous utilisez un serveur dédié, il vous faudra savoir utiliser SSH.
Je vous conseille ce cours de M@teo21.

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 :
Code : Console
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
Code : Apache
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 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.

Code : Apache
1
2
3
4
5
6
7
8
# 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
Code : Apache
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 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 :
Code : Console
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: Code : Console
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 :Code : Autre
1
2
3
4
5
6
7
8
9
10
11
# 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 :Code : Console
/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 :Code : Console
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 :
Code : Console
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
Code : Autre
1
2
3
# Cherchez la ligne commençant par "language" pour changer la langue:
#language = /usr/share/mysql/english
language = /usr/share/mysql/french


Redémarrez MySQL :
Code : Console
/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 :
Code : Apache
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 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/" :
Code : Console
mkdir /var/www/sql.monsite.fr/

Il faut encore redémarrer apache :
Code : Console
/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)Code : Console
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 :
Code : Console
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.

Partager

48 commentaires pour "Apprenez à installer un serveur Web sous Debian !"
Note moyenne : 3.11 / 4 (38 votes)
Pseudo Commentaire
Hors ligne Romlig # Posté le 24/03/2012 à 19:15:57
Ci-dessous, mon avatar.
Avatar

Avis : Bon

Bon tutoriel. Pour moi ça marche bien mais on pourrait juste rajouter dans le tuto comment utiliser vim et il y a une erreur à corriger le paquet de mysql c'est mysql-server et pas mysql5-server.

@Vincent Pageaud : Il est déconseillé de se connecter en root en ftp. Mieux vaut se créer un autre compte. Mais pour le faire quand même, utiliser l'option RootLogin on.

Ⓒⓐⓡⓐⓒⓣⓔⓡⓔⓢ Ⓤⓝⓘⓒⓞⓓⓔ ⓔⓝ ⓥⓡⓐⓒ :
☂☃♟✎☁☣☑☎☯☠☀✿㎦
(Il n'y a aucune image dans cette signature)
 
Hors ligne khadijasup # Posté le 14/04/2012 à 12:58:22

Bonjour,
bon tuto, cependant j'arrive pas à configurer mon serveur, dans la partie concernant Les VirtualHosts j'ai fait la même chose que vous (juste pour le test), j'active mon VH avec la commande'a2ensite monsite' ça me donneSite monsite already enabled et quand je redémarre mon serveur par la commande'/etc/init.d/apache2 restart' ça me donneSyntax error on line 3 of /etc/apache2/sites-enabled/monsite:
ServerAdmin takes one argument, The email address of the server administrator
Action 'configtest' failed.
The Apache error log may have more information.
failed!

sachant que quand je me connecte à mon serveur avec son adresse ip ca marche ca affiche It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.



pourriez m'indiquer d’où viens l'erreur quand je redémarre mon serveur :euh:
Merci d'avance
Hors ligne Falken # Posté le 18/04/2012 à 12:57:10

Citation : khadijasup
Syntax error on line 3 of /etc/apache2/sites-enabled/monsite:
ServerAdmin takes one argument, The email address of the server administrator
Action 'configtest' failed.
The Apache error log may have more information.
failed!


Enlève tous les commentaires qui ne commencent pas en début de ligne. C'est ce qui pose problème.

Falken
Hors ligne zakora # Posté le 07/05/2012 à 16:18:49

Salut,

Un peu d'explication sur tes choix aurait été apprécié ;) . Je pense notamment à : pourquoi Apache (pourquoi pas nginx, lighttpd, ...) ? Pourquoi FTP plutôt que scp ou rsync? Pourquoi MySQL plutôt que PostgreSQL?
Enfin voilà, dés fois c'est appréciable de lire un tuto qui explique les choix qu'il fait, ça permet d'avoir du recul et parfois de découvrir de nouvelles choses.
Connecté Chucky2401 # Posté hier à 12:36:17
Avatar

Ville : Pollestres
Pays : France métropolitaine

Bonjour,

moi j'ai trouvé ce tuto superbe ! Bien détaillé, précis, pile poile pour un débutant sur un serveur Web Debian.
Mais il aurait fallu, je pense, parler un peu de vim, c'est quand la même la base avant de faire des modifs. Et je pensais aussi, qu'il serait peut-être intéressant de parler d'un server de message comme postfix.

Comme certains le pense, la vie n'est pas un long fleuve tranquille, mais une mer aussi vaste que la planète remplie de remous.
 

Voir tous les commentaires