Installation serveur · 6 min read · Dec 31, 2025

Installation de Nginx avec support PHP5 et MySQL sur Debian Squeeze

Installation de Nginx avec support PHP5 et MySQL sur Debian Squeeze

Version 1.0
Auteur : Falko Timme
Suivez-moi sur Twitter

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 Squeeze 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 là où cela est approprié.

2 Installation de MySQL 5

Pour installer MySQL, nous exécutons

apt-get 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 [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 : <– votremotdepasse Répétez le mot de passe pour l’utilisateur “root” de MySQL : <– votremotdepasse

3 Installation de Nginx

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

apt-get install nginx

Démarrez nginx ensuite :

/etc/init.d/nginx start

Le répertoire racine par défaut de nginx est /var/www qui n’existe pas encore ; par conséquent, nous devons le créer comme suit :

mkdir /var/www  
 chown www-data:www-data /var/www

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 suivante :

Vous obtenez une erreur 403 interdit car il n’y a pas de page d’index dans /var/www.

4 Installation de PHP5

Nous pouvons faire fonctionner PHP5 dans nginx via FastCGI. Heureusement, Debian Squeeze 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) :

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

Ensuite, ouvrez /etc/php5/cgi/php.ini et décommentez la ligne cgi.fix_pathinfo=1 :

vi /etc/php5/cgi/php.ini

| [...] ; cgi.fix_pathinfo fournit un support *réel* pour PATH_INFO/PATH_TRANSLATED pour CGI. Le comportement précédent de PHP était de définir PATH_TRANSLATED sur SCRIPT_FILENAME, et de ne pas comprendre ce qu'est PATH_INFO. Pour plus d'informations sur PATH_INFO, voir les spécifications cgi. Le définir à 1 fera en sorte que PHP CGI corrige ses chemins pour se conformer à la spécification. Un réglage à zéro fait que PHP se comporte comme avant. La valeur par défaut est 1. Vous devriez corriger vos scripts pour utiliser SCRIPT_FILENAME plutôt que PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=1 [...] |

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

apt-get install lighttpd

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

Démarrage du serveur web : lighttpd2011-02-24 01:43:18: (network.c.358) impossible de se lier au port :  80 Adresse déjà utilisée  
  échoué !  
 invoke-rc.d : initscript lighttpd, action "start" échouée.

C’est comme cela que cela doit être 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 parce que nous avons besoin juste d’un 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 apprendre 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; ## écouter pour ipv4 listen [::]:80 default ipv6only=on; ## écouter pour ipv6 server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www; 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$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } # refuser l'accès aux fichiers .htaccess, si le répertoire racine du document 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; signifie que le répertoire racine est le répertoire /var/www.

La partie importante pour PHP est le bloc location ~ .php$ {}. Décommentez-le pour l’activer. Veuillez vous assurer que vous modifiez la ligne fastcgi_param en fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; (remplacez /var/www par le répertoire racine 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 répertoire racine /var/www :

vi /var/www/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

À propos de l’auteur

Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le responsable principal de HowtoForge (depuis 2005) et l’un des développeurs principaux d’ISPConfig (depuis 2000). Il a également contribué au livre O’Reilly “Administration système Linux”.

Share: X/Twitter LinkedIn

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

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