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.
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 :
Installation d'Apache
Grâce au gestionnaire de paquet apt-get, l'installation des logiciels est très simple.
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 :
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 :
Puis on crée le répertoire public htdocs qui sera le seul répertoire où les données seront accessibles via le web.
Maintenant, créons un petit fichier qui permettra de tester la configuration.
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 :
Voilà, Apache est configurer. Maintenant activons le site grâce à la commande :
Puis on relance Apache pour que la configuration soit pris en compte :
ou
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 :
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 :
puis on déplace le fichier recommandé à la place du fichier original
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.
Installation de MySQL
Mettre un mot de passe pour le root :
Pour se connecter à MySQL en ligne de commande, on utilise la commande :
Installation de phpMyAdmin
phpMyAdmin fournit une interface graphique accessible via le web pour pouvoir gérer sa base mySQL.
on relance le serveur :
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 :)
Executez les commandes :
# apt-get update# apt-get upgradeInstallation d'Apache
Grâce au gestionnaire de paquet apt-get, l'installation des logiciels est très simple.
# apt-get install apache2Pour 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 ProdStructure 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.frPuis 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/htdocsMaintenant, créons un petit fichier qui permettra de tester la configuration.
# echo "Hello" > /var/www/mondomaine.fr/htdocs/index.htmlApache 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.frPuis on relance Apache pour que la configuration soit pris en compte :
# /etc/init.d/apache2 reloadou
# /apache2ctl restartNote : 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-php5Configuration 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.originalpuis 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.iniMaintenant, 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 = OffInstallation de MySQL
# apt-get install mysql-serverMettre un mot de passe pour le root :
# mysqladmin -u root password MyPasswordPour se connecter à MySQL en ligne de commande, on utilise la commande :
# mysql -u root -pInstallation de phpMyAdmin
phpMyAdmin fournit une interface graphique accessible via le web pour pouvoir gérer sa base mySQL.
# apt-get install phpMyAdminOn 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/htdocson relance le serveur :
# /etc/init.d/mysql restartL'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 :)

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é :-)