Tutoriel : Installation d'un serveur LAMP sur un Debian Etch

Cette article montre la marche à suivre pour installer et configurer un système LAMP c'est à dire Apache 2, PHP 5 et MySQL sur une distribution Debian Etch.

Avant de commencer : il faut que les DNS soit configurés pour que le domaine pointe vers l'IP du serveur. Si les DNS ne sont pas encore propagés, modifiez le fichier /etc/hosts (sous Linux & Mac) ou le fichier c:\windows\system32\drivers\etc\ (sous Windows) de votre ordinateur en ajoutant la ligne "www.mondomaine.fr  0.0.0.0" où 0.0.0.0 est l'ip de votre serveur.

Tout au long de l'article, je vais utiliser "mondomaine.fr" comme nom de domaine d'exemple.

Mise à jour de Debian

Executez les commandes :

# apt-get update
# apt-get upgrade

Installation d'Apache

Grâce au gestionnaire de paquet apt-get, l'installation des logiciels est très simple.

# apt-get install apache2

Pour vérifier que l'installation a fonctionné, allez sur http://www.mondomaine.fr. La configuration par défaut d'Apache devrait vous renvoyer vers une page où il est écrit : "It works!". Si ce n'est pas le cas, vérifiez vos DNS.

Sécuriser Apache

Nous allons ajouter quelques règles pour sécuriser un peu Apache.
Pour cela, on peut ajouter ces règles dans le fichier de configuration principal, mais j'ai choisi de créer mon propre fichier de config qui sera stocké dans /etc/apache2/conf.d/ et sera nommé local_configs.conf.

Ce fichier contiendra :

# Contrôler l'accès aux fichiers systèmes
<Directory />
        # Interdit l'accès aux fichiers
        Order Deny,Allow
        Deny from all
        # Empêche l'utilisation des fichiers .htaccess dans tous les dossiers
        # à part pour ceux spécifiquement activés
        AllowOverride None
</Directory>

# Limite la récupération d'informations à propos du serveur
ServerSignature Off
ServerTokens Prod


Structure de notre serveur web

Nous allons ensuite configurer Apache pour diriger un nom de domaine vers le site web.

/var/www/
Ce répertoire est la racine du serveur web où seront stockés les différents sites.
/var/www/mondomaine.fr/
Un répertoire à créer qui contiendra les fichiers du site mondomaine.com. Ce répertoire ne sera pas accessible via le web.
/var/www/mondomaine.fr/htdocs/
Un répertoire à créer où seront stockées toutes les données publiques de mondomaine.com
/etc/apache2/sites-available/mondomaine.fr
Ce fichier à créer contiendra la configuration de notre domaine virtuel mondomaine.com. Chaque fichier dans le répertoire site-available défini un domaine virtuel différent.
/etc/apache2/sites-enabled/mondomaine.fr
La commande "a2ensite mondomaine.com" permet de créer dans le répertoire "site-enbabled" un lien vers le fichier de configuration correspondant au domaine. La présence de ce lien a pour effet d'activer le site web.

Configuration du site web

Pour commencer nous créons dans /var/www le répertoire du site web :

# mkdir /var/www/mondomaine.fr

Puis on crée le répertoire public htdocs qui sera le seul répertoire où les données seront accessibles via le web.

# mkdir /var/www/mondomaine.fr/htdocs

Maintenant, créons un petit fichier qui permettra de tester la configuration.

# echo "Hello" > /var/www/mondomaine.fr/htdocs/index.html

Apache crée par défaut une redirection vers un répertoire de test. Nous allons la supprimer.

Editer le fichier /etc/apache2/sites-available/default, et dans <Directory /var/www/>, supprimez la ligne où il y a "RedirectMatch".

Configurons ensuite notre Virtual Host :

créez le fichier /etc/apache2/sites-available/mondomaine.fr

et insérez :

<VirtualHost *>
        ServerName www.mondomaine.fr
        DocumentRoot /var/www/mondomaine.fr/htdocs

        <Directory /var/www/mondomaine.fr/htdocs>
                Order Deny,Allow
                Allow from all
                Options -Indexes
        </Directory>
</VirtualHost>


Voilà, Apache est configurer. Maintenant activons le site grâce à la commande :

# a2ensite mondomaine.fr

Puis on relance Apache pour que la configuration soit pris en compte :

# /etc/init.d/apache2 reload

ou

# /apache2ctl restart

Note : pour désactiver un site web, on utilise la commande "a2dissite mondomaine.fr"

Si les DNS fonctionnent, le site devrait être accessible à www.mondomaine.com

Installation de PHP 5

Pour installer PHP, c'est très simple :

# apt-get install php5 libapache2-mod-php5

Configuration de PHP 5

La configuration de PHP est stockée dans /etc/php5/apache2/php.ini.

Cependant, il existe un fichier recommandé pour les serveurs en production.

Nous allons l'utiliser à la place du fichier de configuration par défaut.

Faisons une sauvegarde du fichier original :

# mv /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.original

puis on déplace le fichier recommandé à la place du fichier original

# cp /usr/share/doc/php5-common/examples/php.ini-recommended /etc/php5/apache2/php.ini

Maintenant, nous allons caché les informations sur notre configuration de PHP. Pour cela, éditez le fichier php.ini et changez la valeur de "expose_php" en Off.

expose_php = Off

Installation de MySQL

# apt-get install mysql-server

Mettre un mot de passe pour le root :

# mysqladmin -u root password MyPassword

Pour se connecter à MySQL en ligne de commande, on utilise la commande :

# mysql -u root -p

Installation de phpMyAdmin

phpMyAdmin fournit une interface graphique accessible via le web pour pouvoir gérer sa base mySQL.

# apt-get install phpMyAdmin

On crée un lien symbolique vers /usr/share/phpmyadmin dans le répertoire /var/www/monsite.fr/htdocs pour pouvoir accéder à l'interface : 
# ln -s /usr/share/phpmyadmin /var/www/mondomaine.fr/htdocs

on relance le serveur :

# /etc/init.d/mysql restart

L'interface est accessible via : http://www.mondomaine.fr/phpmyadmin/

Liens

http://www.debian-administration.org/articles/357

Si vous avez des suggestions pour améliorer la mise en place d'un serveur LAMP, n'hésitez pas à les poster en commentaire. Je suis particulièrement intéressé par l'amélioration de la sécurité donc si vous avez quelques conseils, je suis preneur :)

7 commentaires

Petite remarque php.ini-recommended par défaut n'affiche pas les erreurs donc pour développer il vaudrai mieux faire un petit:
display_errors = on
(sinon le phpinfo() ne marche pas en recommended c'est normal? je pense que oui mais bon ^^ sûrement le expose_php = Off). Voici mon fichier pour un virtualhost avec le support de ssl

NameVirtualHost *:80
NameVirtualHost *:443


ServerName exemple.com
ServerAdmin webmaster@example.com

DocumentRoot /var/www/exemple.com/htdocs

#les logs
ErrorLog /var/www/exemple.com/logs/error_log
TransferLog /var/www/exemple.com/logs/access_log


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order Deny,Allow
Allow from all


#support du ssl


ServerName exemple.com
ServerAdmin webmaster@example.com

# Activation du support SSL
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache.pem
SSLCertificateKeyFile /etc/ssl/certs/apache.pem

DocumentRoot /var/www/exemple.com/htdocs
ErrorLog /var/www/exemple.com/logs/error_log
TransferLog /var/www/exemple.com/logs/access_log

Order Deny,Allow
Allow from all
Options Indexes FollowSymLinks MultiViews

mmh à la place de
ServerTokens production
plutot
ServerTokens prod
non? http://www.debuntu.org/2006/07/30/77-how-to-apache-web-server-basic-security-measures

Effectivement, il semble qu'il n'y ait pas de ServerTokens production. La documentation indique uniquement ServerTokens Prod ou ServerTokens ProductOnly.

Pas mal cet article sur les mesures de sécurité sur Debian/Ubuntu.

Okay, merci je viens de corriger l'erreur :)

Merci Creatix pour ton fichier de configuration Apache.

merci beucoup, pour ce super tuto

deux petites remarques :

Il n'y a pas d'espace entre "-" et "u" dans l aligne mysqladmin -u root -p MyPassword

Il manque la création d'un lien symbolique vers /usr/share/phpmyadmin dans le répertoire /var/www/monsite.fr/htdocs.

Par défaut ce lien est établi lors de l'installation de phpmyadmin dans /var/www/, or avec la création du virtualhost, ce répertoire n'est plus "utilisé".

@Hicham : de rien :-)

@David : merci c'est corrigé :-)


À propos de cette note

Cette note a été rédigée par Fabien le Sunday May 11, 2008 à 5:21 PM.

Retrouvez le contenu récent sur l'index principal ou allez dans les archives pour retrouver tout le contenu.



Commenter cette note