09
JAN

Tutorial: Créer un serveur web complet sous debian - #2 PHP5 et MySQL

Publié le 09/01/09 à 08h42 par DJo

Voici un nouveau tutorial qui vous sera sans doute utile si vous venez d'installer la distribution linux Debian (Ou Ubuntu) sur votre serveur.

Tutorial Debian - Installation serveur Web complet

Introduction

Objectif de ce tutorial

L'objectif du tutorial est d'obtenir un serveur linux debian permettant d'héberger et de gérer vos sites web PHP / MySQL à distance, uniquement avec un accès SSH.

Voici les différentes parties du tutorial qui seront divisées en 5 billets:

 

Pré requis

Pour réaliser ce tutorial, vous devrez au préalable avoir des connaissances en ligne de commande linux (Au moins les commandes basiques: cd, mkdir, mv ...).

Disposer d'un client SSH (Comme Putty), d'un client FTP (Comme FileZilla), et bien sûr de votre serveur avec une Debian fraichement installée.

Vous aurez aussi besoin d'au moins un nom de domaine pointant sur votre serveur.

 

Installation et configuration de PHP5

Maintenant que notre serveur Apache2 est opérationnel, nous allons pouvoir lui ajouter le plugin PHP5.

PHP 5 - Installation sur Debian

Il existe deux types d'installation de PHP5.

Soit le mode CGI, soit le module apache (libapache2-mod-php5).

Nous utiliserons le mode apache qui a l'avantage d'être fonctionnel dès son installation avec apache.

Retournez sur votre console SSH en mode root ou utilisez sudo devant chaque commande.

root [~] > apt-get install libapache2-mod-php5

Et c'est tout, PHP5 est installé ! Simple non ?

Problème d'installation de PHP5 sur debian ?

Si APT ne trouve pas le package libapache2-mod-php5, c'est sans doute que vous n'utilisez pas une version de debian récente. Dans ce cas, ajoutez le dépôt suivant dans /etc/apt/sources.list

deb http://packages.dotdeb.org ./

Mettez à jour les dépôts avec apt-get update puis réitérez l'installation.

Installation des plugins supplémentaires pour PHP5

PHP dispose d'un grand nombre de plugins, voici une liste des principaux qui vous serons sans doute utile:

  • php5-dev: Fichiers permettant le développement de modules PHP5.
  • php5-gd : Ajout du support de GD 2 pour le traitement des images en PHP.
  • php5-mcrypt: Ajout du support de la librairie mcrypt qui ajoute des fonctions de cryptage avancées.
  • php5-memcache: Ajout du module memcache sur PHP. Memcache est un démon permettant de réduire la charge du serveur en mettant en cache des informations (Appels en BDD) directement dans la mémoire serveur.
  • php5-mysql: Le module MySQL pour PHP5. Nous verrons comment installer MySQL dans le chapitre suivant.
  • php-pear: PEAR le framework et système de distribution d'applications.

Installons maintenant les extensions PHP qui nous serons utiles:

root [~] > apt-get install php5-gd php5-mcrypt php-pear

Vérifiez bien que APT ne vous impose pas d'installer d'autres versions de PHP.

 

Un petit tour dans la configuration de PHP

Maintenant que tout est opérationnel, allons faire un tour dans la configuration de PHP pour faire quelques modifications:

root [~] > nano /etc/php5/apache2/php.ini

Balises d'ouverture de PHP

Ligne 83

short_open_tag = On

Si vous utilisez des balises courtes dans vos scripts PHP au lieu de , activez short_open_tag.

Il est néanmoins conseillé de ne pas utiliser les balises courtes, pour disposer d'un code portable et compatible.

 

Affichage des erreurs

Pour plus de confidentialité et sécurité, si vous êtes en production, il est conseillé d'empêcher l'affichage des erreurs pour ne donner aucune information sur votre code.

Ligne 323

display_errors = Off

Passez la valeur display_errors à Off pour ne plus afficher les erreurs.

Et vous pouvez par contre activer le reporting d'erreurs dans un fichier de log que vous seul pourrez voir:

Ligne 333

log_errors = On

 

Upload de fichiers

Si vous souhaitez permettre l'upload de fichiers en PHP, vous pouvez modifier les valeurs d'upload:

Ligne 537

; Whether to allow HTTP file uploads.
file_uploads = On

Activez ou refusez les uploads en PHP.

Ligne 545

; Maximum allowed size for uploaded files.
upload_max_filesize = 8M

Augmentez ou réduisez le poids maximum des fichiers uploadables.

Ligne 267

max_execution_time = 60 

Si vous activez l'upload, augmentez le temps maximal d'éxécution des scripts php, à au moins 1 minute.

 

Sauvegardez et quittez le fichier de config puis restartez apache2 pour prendre en compte les modifications.

root [~] > apache2ctl restart

 

Test de l'installation de PHP

Nous allons tester si l'installation de PHP et de ses plugins s'est bien effectuée.

Dans votre répertoire web, supprimez le fichier index.html de test précedemment créé, puis créez un nouveau fichier index.php dans ce répertoire.

root [/var/www/lafermeduweb] > rm -rf index.html
root [/var/www/lafermeduweb] > nano index.php
<?php
phpinfo();
?>

Enregistrez et quittez le fichier index.php.

Ouvrez votre navigateur et entrez l'adresse de votre serveur:

PHP Infos

Si tout s'est passé correctement, le PHPInfo devrait s'afficher.

Vérifiez que tous les modules soient bien chargés (GD, mcrypt ...).

 

Installation et configuration de MySQL

MySQL - Installation sur Debian

Passons maintenant à l'installation de notre base de données favorite (... ou pas, mais quand même bien pratique avec PHP).

 

Installer MySQL sur debian (ou ubuntu)

root [/var/www/lafermeduweb] > apt-get install mysql-server

Les paquets suivants devraient être installés:

libdbd-mysql-perl libdbi-perl libnet-daemon-perl libplrpc-perl
  mysql-client-5.0 mysql-server mysql-server-5.0 psmisc

Comme nous l'avions vu dans le chapitre précedent, il existe un package php5-mysql qui va nous permettre d'installer la prise en charge de MySQL dans PHP.

root [/var/www/lafermeduweb] > apt-get install php5-mysql

Les paquets suivants devraient être installés:

libmysqlclient15off mysql-common php5-mysql

MySQL est maintenant installé, passons à sa configuration.

 

Changer le mot de passe root de MySQL

Première chose à faire, car assez critique, attribuer un mot de passe root à votre serveur MySQL si celui-ci ne vous est pas demandé lors de l'installation précédente.

root [/var/www/lafermeduweb] > mysql

Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 8
Server version: 5.0.32-Debian_7etch8-log Debian etch distribution

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> UPDATE user SET password = PASSWORD('VOTREPASSMYSQL') WHERE user = 'root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>quit
Bye

Voilà, maintenant votre mot de passe root est défini (N'oubliez pas de remplacer VOTREPASSMYSQL par votre propre mot de passe ...)

La configuration de base de MySQL suffit pour notre environnement web, si vous souhaitez modifier des options spécifiques, modifiez le fichier /etc/mysql/my.cnf

 

Installation de phpMyAdmin

Installation de phpMyAdmin sur Debian

Pour plus de confort, il est recommandé d'installer phpMyAdmin qui nous permettra de gérer notre base de données MySQL visuellement à partir de notre navigateur web.

Là encore, APT nous simplifie bien la tâche, en une seule commande, phpMyAdmin est prêt à emploi (ou presque):

root [/var/www/lafermeduweb] > apt-get install phpmyadmin

Configuration de phpmyadmin

Par défaut, la configuration de phpMyAdmin est prête à être utilisée, mais vous pouvez changer quelques paramètres:

root [/var/www/lafermeduweb] >  nano /etc/phpmyadmin/config.inc.php

Par exemple, changer la méthode d'identification:

$cfg['Servers'][$i]['auth_type']     = 'cookie';    // Authentication method (config, http or cookie based)?

Je vous invite à regarder les différentes options disponibles et de les changer si besoin.

Dans notre cas, nous garderons la configuration par défaut.

Vérifiez aussi, dans le cas où vous utilisiez le mode d'authentification 'cookie' (defaut), qu'il y'ai bien l'instruction:

$cfg['blowfish_secret'] = 'dYSD2H5lFcfHUJDsC0GrQczfwP';

avec une chaîne de caractères aléatoire, dans le fichier blowfish_secret.inc.php

 

Test de phpMyAdmin

Un bon test 3 en 1 qui va nous permettre de voir si PHP, MySQL et phpMyAdmin sont correctement installés.

Ouvrez votre navigateur, tapez l'adresse suivante:

http://IP_SERVEUR/phpmyadmin/

phpMyAdmin - Login

Entrez votre login root et le mot de passe associé.

Si tout marche bien, l'identification fonctionnera et vous verrez les bases de données de MySQL dans la colonne de gauche.

 

Conclusion de cette partie 2

Votre serveur web avec la prise en charge de PHP5 et MySQL est désormais opérationnel.

Mais développer avec une console SSH n'est pas vraiment pratique ...

Dans le prochain épisode, nous verrons comment installer et configurer un serveur FTP pour transférer nos fichiers sur le serveur.

 

Aide & Questions: Pour tous problèmes ou questions à propos de ce tutorial, merci d'utiliser le topic dédié dans le forum de La Ferme du Web

Baraguiné par le 09/01/09 à 13h56
Pour le PC user, j'ai créer un biller pour installer un serveur web complet en local :
http://www.itsystem.fr/blog/installer-un-serveur-web-sur-son-pc/
Baraguiné par DJo le 09/01/09 à 17h54
DJo sur La Ferme du Web
Merci pour l'info, c'est bon à savoir, mais un serveur Web sous linux est toujours plus performant et stable qu'un serveur sous Windows :D
Baraguiné par le 18/07/09 à 23h23
Il manquerait un petit : mysql_secure_installation ;)
Baraguiné par le 11/08/09 à 22h58
Salut, j'ai suivi toutes les étapes, mais malgré cela, je n'ai pas accès à phpMyAdmin via http://"l'ip de mon serveur"/phpmyadmin/ j'ai essayé avec différente casse de phpmyadmin (au cas ou) mais rien n'y fait pourtant je n'ai fait péter aucune erreur depuis le début de l'install de php, mysql et phpmyadmin ...
Baraguiné par traxedo le 10/09/09 à 18h31
traxedo sur La Ferme du Web
Toujours aussi performant, merci... Je commence à prendre réellement goût à Linux...
Baraguiné par doudi le 10/06/10 à 15h02
doudi sur La Ferme du Web
Franchement, ces tutos sont excellents.
Je n'ai qu'un reproche à leur faire :
Ils sont obsolètes :-(
Une petite mise à jour s'impose ;-)

Et... la suite aussi, car on y prend gout !! :-D

Mille merci ;-)
Baraguiné par le 26/07/11 à 14h03
@Ugo Laboute : Apparemment il faut créer un lien symbolique entre phpmyadmin et le site web...

ln -s /usr/share/phpmyadmin /var/www

Ca marche pour moi :)
Baraguiné par Kevin59192 le 16/10/11 à 18h50
Kevin59192 sur La Ferme du Web
Bonjour,

Je voudrais savoir si c'est possible d'avoir un fichier de conf de phpmyadmin car le mien tout est installer mais fonctionne pas
Baraguiné par ixil12 le 21/12/11 à 17h20
ixil12 sur La Ferme du Web
@ Toufic Halwani :

Mec, je t'aime !

Ca faisait des heures que je cherchais en vain une solution, grâce à toi ça marche !

Merci !! :D
Baraguiné par le 03/02/12 à 16h24
Merci pour ce tuto ;)
Baraguiné par mlhomme le 24/04/12 à 11h12
mlhomme sur La Ferme du Web
Boujour,
merci pour toutes les informations ; j'ai rencontré 2 petites difficultées : "Changer le mot de passe root de MySQL" il faut coder : root@debian:~# mysql -u root -p
et cette mise à jour n'existe plus : libmysqlclient15off dans la version Squeeze
merci .
Baraguiné par mptlse31 le 27/04/12 à 01h18
mptlse31 sur La Ferme du Web
Bonsoir,

Merci pour ce tuto et les commentaires associés.

J'ai juste un petit probleme avec phpmyadmin :

PHP ne peut charger l'extension mysqli. Veuillez vérifier votre configuration de PHP. - Documentation

La réponse semble etre :
1.20 I receive the error "cannot load MySQL extension, please check PHP Configuration".

To connect to a MySQL server, PHP needs a set of MySQL functions called "MySQL extension". This extension may be part of the PHP distribution (compiled-in), otherwise it needs to be loaded dynamically. Its name is probably mysql.so or php_mysql.dll. phpMyAdmin tried to load the extension but failed.

Usually, the problem is solved by installing a software package called "PHP-MySQL" or something similar.

Mais j'ai bien installé php5-mysql

Une idée pour corriger ce probleme ?
Baraguiné par mptlse31 le 27/04/12 à 01h52
mptlse31 sur La Ferme du Web
Oubliez mon post precedent... je ne sais pas pourquoi l'alerte a disparue...
Baraguiné par alexquitwitte le 01/12/12 à 12h37
alexquitwitte via Twitter
Merci de compléter ce tuto avec le commentaire de @Toufic Halwani !

Juste avant le premier test de phpMyAdmin, il faut exécuter cette ligne :

ln -s /usr/share/phpmyadmin /var/www/lafermeduweb
Baraguiné par soyuka le 23/02/13 à 20h15
soyuka sur La Ferme du Web
Pour ceux qui n'arrivent pas a lancer phpMyAdmin, editez /etc/apache2/apache2.conf et ajoutez la ligne Include /etc/phpmyadmin/apache.conf
Baraguiné par FreeCommu le 16/07/13 à 19h56
FreeCommu via Twitter
Pour ceux qui galèrent avec PHPMYADMIN, genre il est bien cfg mais un 404 apparaît lorsqu'ils testent, c'est surement parce que "
ln -s /usr/share/phpmyadmin /var/www" ne convient pas.

Il faut faire un
ln -s /usr/share/phpmyadmin /var/www/VOTRE.DOMAINE/phpmyadmin.

Merci pour le tuto en passant, super intéressant et efficace !
Baraguiné par le 12/03/14 à 15h11
Bonjour à vous,

je suis totalement perdu : j'essaie d'installer LAMP sur mon Nokia N900. Easy Debian fonctionne sans problème. Mais lorsque j'essaie d'installer Apache, PHP ou Mysql sous Easy Debian, rien ne fonctionne ! J'ai beau faire les mises à jour, et réinstaller Easy Debian à plusieurs reprises, mais j'ai toujours des messages d'erreur (paquets non installés). Comment faire ? Un connaisseur de cette configuration pourrait-il me guider pas à pas ? Merci d'avance !
Baraguiné par maya le 27/09/15 à 14h08
maya sur La Ferme du Web
Que la paix soit sur toi. Tu ma vraiment aider et je ne sais pas comment vous remercié. Que Dieu facillite ta vie et que la paix soit sur toi. Ben Ali

Ajouter un Commentaire

Pour poster un commentaire, vous devez être identifié. Vous pouvez choisir parmi ces trois méthodes d'identification:

Compte la Ferme du Web

Identifiez-vous
Inscrivez-vous

Compte Facebook

Connexion avec Facebook

Compte Twitter

Connexion avec votre compte twitter
Rechercher sur la Ferme du web