Installation serveur · 5 min read · Dec 30, 2025

Installation de Nginx avec PHP5 et support MySQL sur Debian Lenny

Installation de Nginx avec PHP5 et support MySQL sur Debian Lenny

Version 1.0
Auteur : Falko Timme

Nginx (prononcé “engine x”) est un serveur HTTP gratuit, open-source et haute performance. Nginx est connu pour sa stabilité, son ensemble de fonctionnalités riche, sa configuration simple et sa faible consommation de ressources. Ce tutoriel montre comment installer Nginx sur un serveur Debian Lenny avec support PHP5 (via FastCGI) et support MySQL.

Je ne garantis pas que cela fonctionnera pour vous !

1 Remarque préliminaire

Dans ce tutoriel, j’utilise le nom d’hôte server1.example.com avec l’adresse IP 192.168.0.100. Ces paramètres peuvent différer pour vous, donc vous devez les remplacer si nécessaire.

2 Installation de MySQL 5.0

Pour installer MySQL, nous exécutons

aptitude install mysql-server mysql-client

On vous demandera de fournir un mot de passe pour l’utilisateur root de MySQL - ce mot de passe est valide pour l’utilisateur root@localhost ainsi que pour [email protected], donc nous n’avons pas besoin de spécifier un mot de passe root MySQL manuellement plus tard :

Nouveau mot de passe pour l’utilisateur “root” de MySQL : <– votremotdepassemysql
Répéter le mot de passe pour l’utilisateur “root” de MySQL : <– votremotdepassemysql

3 Installation de Nginx

Nginx est disponible en tant que paquet pour Debian Lenny que nous pouvons installer comme suit :

aptitude install nginx

Démarrez nginx ensuite :

/etc/init.d/nginx start

Tapez l’adresse IP ou le nom d’hôte de votre serveur web dans un navigateur (par exemple, http://192.168.0.100), et vous devriez voir la page d’accueil de nginx :

4 Installation de PHP5

Nous pouvons faire fonctionner PHP5 dans nginx via FastCGI. Heureusement, Debian Lenny fournit un paquet PHP5 activé pour FastCGI que nous installons comme ceci (avec quelques modules PHP5 comme php5-mysql dont vous avez besoin si vous souhaitez utiliser MySQL depuis vos scripts PHP) :

aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Ensuite, ouvrez /etc/php5/cgi/php.ini et ajoutez la ligne cgi.fix_pathinfo = 1 à la fin du fichier :

vi /etc/php5/cgi/php.ini

| [...] cgi.fix_pathinfo = 1 |

Il n’y a pas de paquet de démon FastCGI autonome pour Debian Lenny, donc nous utilisons le programme spawn-fcgi de lighttpd. Nous installons lighttpd comme suit :

aptitude install lighttpd

Vous verrez un message d’erreur indiquant que lighttpd ne peut pas démarrer car le port 80 est déjà utilisé :

Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can't bind to port: 80 Address already in use  
 failed!

C’est normal car nginx écoute déjà sur le port 80. Exécutez

update-rc.d -f lighttpd remove

pour que lighttpd ne démarre pas au démarrage.

Nous avons installé lighttpd car nous avons besoin d’un seul programme qui vient avec le paquet, /usr/bin/spawn-fcgi, que nous pouvons utiliser pour démarrer des processus FastCGI. Jetez un œil à

spawn-fcgi --help

pour en savoir plus à ce sujet.

Pour démarrer un démon PHP FastCGI écoutant sur le port 9000 sur localhost et s’exécutant en tant qu’utilisateur et groupe www-data, nous exécutons la commande suivante :

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

Bien sûr, vous ne voulez pas taper cette commande manuellement chaque fois que vous démarrez le système, donc pour que le système exécute la commande automatiquement au démarrage, ouvrez /etc/rc.local…

vi /etc/rc.local

… et ajoutez la commande à la fin du fichier (avant la ligne de sortie) :

| [...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid [...] |

5 Configuration de nginx

La configuration de nginx se trouve dans /etc/nginx/nginx.conf que nous ouvrons maintenant :

vi /etc/nginx/nginx.conf

La configuration est facile à comprendre (vous pouvez en savoir plus ici : http://wiki.codemongers.com/NginxFullExample et ici : http://wiki.codemongers.com/NginxFullExample2)

Tout d’abord (c’est optionnel) augmentez le nombre de processus de travail et définissez le keepalive_timeout à une valeur raisonnable :

| [...] worker_processes 5; [...] keepalive_timeout 2; [...] |

Les hôtes virtuels sont définis dans des conteneurs server {}. L’hôte virtuel par défaut est défini dans le fichier /etc/nginx/sites-available/default - modifions-le comme suit :

vi /etc/nginx/sites-available/default

| [...] server { listen 80; server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; index index.php index.html index.htm; } location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location /images { root /usr/share; autoindex on; } #error_page 404 /404.html; # rediriger les pages d'erreur du serveur vers la page statique /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } # proxy les scripts PHP à Apache écoutant sur 127.0.0.1:80 # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # passer les scripts PHP au serveur FastCGI écoutant sur 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include fastcgi_params; } # interdire l'accès aux fichiers .htaccess, si le document root d'Apache # coïncide avec celui de nginx # location ~ /\.ht { deny all; } } [...] |

servername ; fait de ceci un hôte virtuel par défaut (bien sûr, vous pouvez également spécifier un nom d’hôte ici comme www.example.com).

Dans la partie location /, j’ai ajouté index.php à la ligne d’index. root /var/www/nginx-default; signifie que le document root est le répertoire /var/www/nginx-default.

La partie importante pour PHP est le bloc location ~ .php$ {}. Décommentez-le pour l’activer. Veuillez vous assurer que vous changez la ligne fastcgi_param en fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; (remplacez /var/www/nginx-default par le document root de votre hôte virtuel) car sinon l’interpréteur PHP ne trouvera pas le script PHP que vous appelez dans votre navigateur.

Assurez-vous qu’il y a des espaces entre include et fastcgi_params; - dans le fichier par défaut, cela est écrit comme un seul mot, ce qui est un bug.

Maintenant, enregistrez le fichier et redémarrez nginx :

/etc/init.d/nginx restart

Maintenant, créez le fichier PHP suivant dans le document root /var/www/nginx-default :

vi /var/www/nginx-default/info.php

| |

Maintenant, nous appelons ce fichier dans un navigateur (par exemple, http://192.168.0.100/info.php) :

Comme vous le voyez, PHP5 fonctionne, et il fonctionne via FastCGI, comme indiqué dans la ligne Server API. Si vous faites défiler plus bas, vous verrez tous les modules qui sont déjà activés dans PHP5, y compris le module MySQL :

6 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.