Tutoriel | Installation d’un environnement LAMP (Apache, PHP, Mysql)
Article publiée le 4 Octobre 2013
Mise à jour le 5 Octobre 2013
En parcourant une fois de plus les forums je me suis aperçus que beaucoup d'admins débutants avaient des difficultés pour installer un environnement LAMP (Apache, PHP, Mysql).
Ci-dessous un tutoriel complet sur l'installation d'un environnement LAMP avec quelques astuces en plus!
Ce tutoriel est adapté aussi bien pour les utilisateurs de Centos/RedHat que pour les utilisateurs de Debian/Ubuntu Server
1) Installation Apache
Sous Debian:
apt-get install apache2
Sous Redhat/Centos:
yum install httpd
service httpd start
Attention sous RedHat/Centos, n'oubliez pas de désactiver le firewall ou de le paramétrer en conséquence. (service iptables stop && chkconfig iptables off)
Vérifiez que les services apaches fonctionnement correctement en vous connectant via votre navigateur ) à l'ip ou le dns de votre machine.
Cette page devrait être affichée (pour les utilisateurs de Debian):
Pour les utilisateurs de Centos/RedHat:
2) Installation de PHP
Sous Debian
apt-get install php5 php5-mysql
Sous Centos/RedHat:
yum install php*
Redémarrez votre service apache:
/etc/init.d/apache2 restart (Sous Debian)
service httpd restart (Sous RedHat)
Sous debian j'ai déjà remarqué que le module php d'apache pouvait ne pas s'activer automatiquement ce qui fait que vos pages PHP ne seront pas interprétées!
Pour résoudre ce problème: a2enmod php && /etc/init.d/apache2 restart
3) Installation de Mysql
Sous Debian:
apt-get install mysql-server
Une interface peut apparaître afin de vous demander d'entrer le mot de passe root de Mysql
Sous Redhat/Centos
yum install mysql-server
Démarrer le service Mysql: service mysqld start
Petite parenthèse:
Certain voudrons certainement changer l'emplacement du tablespace (la ou sont stocké vos datas), pour cela:
- Créez le répertoire qui contiendra les tablespace de Mysql : mkdir <votre repertoire>
- Changez les droits de ce répertoire chown mysql:mysql <repertoire>
- Modifiez le fichier my.cnf en modifiant "datadir=/var/lib/mysql" par votre nouveau répertoire.
(Ce fichier se situe dans le répertoire /etc/ sous Centos/RedHat et dans /etc/mysql sous Debian).
Pour initialiser le mot de passe root de Mysql (ce que je recommande fortement pour des raisons évidentes de sécurité)
On vérifie:
3) PHPMyadmin
Si vous n'êtes pas très bon en base de donnée ou que vous avez tout simplement un client allergique à la ligne de commande je vous suggère d'installer PHPMyAdmin.
Pour ceux qui ne connaissent pas PHPMyadmin est une interface Web d'administration de Mysql.
Pour l'installer sous debian:
apt-get install phpmyadmin
Ce message devrait apparaître
Avec la barre d'espace sélectionnez apache2 puis sélectionnez OK
Sélectionnez "oui" et valider avec la touche entrer
Entrez le mot de passe root de mysql puis validez.
Sous RedHat/Centos ou installation manuelle:
Téléchargez phpmyadmin depuis le site: http://www.phpmyadmin.net/home_page/index.php
- Dezippez l'archive: unzip -e <archive>
- Créez un répertoire dans le répertoire web par défaut d'apache (/var/www ou /var/www/html suivant les distributions)
mkdir <répertoire web d'apache>/phpmyadmin
- Copiez tout le contenu dans ce répertoire
Se connecter à PHPMyAdmin
Une fois l'installation terminée connectez vous via votre navigateur à l'url: <IP ou DNS de votre serveur>/phpmyadmin
Connectez vous en indiquant les identifiant root de Mysql
Petite aperçu de phpmyadmin:
4) Quelque petits tuyaux!
Cette partie de ce tutoriel donne des réponses en vrac à des question récurrentes que je retrouve sur la plupart des forums:
Comment modifier le port d'écoute d'apache?
Sous RedHat Centos: modifiez le fichier /etc/httpd/conf/httpd.conf puis cherchez "Listen 80" et modifiez la valeur 80 par le port de votre choix.
Sous Debian/Ubuntu: modifiez le fichier /etc/apache2/ports.conf puis cherchez "Listen 80" et modifiez la valeur 80 par le port de votre choix.
Exemple de virtualhost:
<VirtualHost 1.1.1.3:80>
ServerName monsite.com
ServerAdmin [email protected]
DocumentRoot /monsite
DirectoryIndex index.php index.html index.htm
ErrorLog /var/log/apache2/monsitelog
CustomLog /var/log/apache2/monsite.log combined
<Directory /home/monsite/monsite/>
Options -Indexes
AllowOverride All
Order allow,deny
# Restriction par sous réseau pour plus de securité!
Allow from 192.168.0.0/24
</Directory>
php_value error_log /home/site/log/php/monsite.log
php_value warning_log /home/site/log/monsite.log
php_value log_errors On
php_value register_globals Off
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</VirtualHost>
Exemple de virtualhost avec SSL:
<VirtualHost 1.1.2..2:443>
ServerName monsite.com
ServerAdmin [email protected]
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
DocumentRoot /home/monsite/site
DirectoryIndex index.php index.html
LogLevel info
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
<Directory /home/monsite/site/>
ErrorDocument 404 /index.php?currentPage=pageUnfound
Options FollowSymLinks Indexes MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
php_value error_log /home/monsite/log/php/error.php.log
php_value warning_log /home/monsite/log/php/warning.php.log
php_value log_errors On
php_value register_globals Off
ServerSignature On
Options FollowSymLinks
</VirtualHost>
Si vous avez d'autres questions n'hésitez pas à me les envoyer via mon mail dans la rubrique "me contacter" ou en commentant cette article.
Hello,
Bien ton tuto !
Je me trompe en disant que si on n’installe pas phpmyadmin, on se retrouve sans le paquet php5-mysql ?
Quelques pistes pour améliorer ton tuto :
– Parler des dépôts Dotdeb très utilisés pour les environnements LAMP
– Parler du pinning et du fichier /etc/apt/preferences car il y a sûrement beaucoup de gens voulant s’amuser avec un nouveau serveur apache mais encore beaucoup plus d’admin voulant réinstaller/déplacer/tester/restaurer un serveur apache avec la même version php que le serveur actuellement en prod
Tcho !
Bonsoir cascador,
Rien ne t’empêche dinstalller le paquet php5-mysql indépendamment. Merci pour les suggestions je vais etudier ca 🙂
Hello,
En fait ce que je voulais dire (je m’exprime mal désolé lol), c’est qu’en suivant ton tuto, on n’a pas vraiment un serveur LAMP puisque php n’arrive pas à communiquer avec MySQL. Ca se discute, just my 2 cents.
Pour info, tu peux utiliser service apache2 restart sur Debian (donc tu peux utiliser service nomduservice action aussi bien sur Debian que sur Red Hat).
Tcho !
Hello,
En effet pour le premier point je vais légèrement modifier le tuto en préconisant l’ajout du paquet php5-mysql. Je te remercie pour cette remarque 🙂
Concernant « service » il est vrai que depuis la debian 7 (il me semble) on peut utiliser ce petit raccourci et j’en suis plus que ravi!! 😉
je veux mettre en place un serveur web sécurisé sous centos 5.3
aidez moi svp
je suis un peu embrouillé
merci d’avance
je veux mettre sur pied un serveur web sécurisé sous centos 5.3
et je ne sais comment m’y prendre
aidez moi
svp
Bonjour Florent,
Si tu désires monter toi même ton serveur Web je te conseille de prendre quelques dispositions afin d’éviter toutes surprises:
– Mettre en place les règles de Firewall adéquat (via Iptables) afin de laisser ouvert que les ports nécessaire (SSH, DNS ,HTT etc.)
– Attribues les bons droits à tes fichiers WEB (chmod 755
– Définis un virtualHost pour ton site (indiquer à la fin de mon tuto)
– Limiter le risque d’attaque pas déni de service (DOS) en ajustant les valeurs d’autorisation de connexions simultanées en fonctions du trafic estimé (dans le fichier /etc/httpd/httpd.conf.
MaxClients 100
KeepAlive On
MaxKeepAliveRequests 80
KeepAliveTimeout 5
-Enfin rajoute ServerTokens Prod dans le fichier de configuration d’apache (/etc/http/httpd.conf) afin d’éviter de donner trop d’information sur ta machine au cas où un petit malin s’amuse à faire un telnet sur ton port HTTP.
Je pense que si tu effectues ces actions tu pars sur de bonnes bases.
Pour le reste réfères toi à mon tutoriel 😉
Maintenant si tu as d’autres question n’hésites pas à me contacter via mon mail: [email protected]