PHP FPM (FastCGI Process Manager) est un gestionnaire de processus PHP qui permet d’exécuter du code PHP et qui est appelé via FastCGI par votre serveur web. Elle permet à votre serveur Web de communiquer avec PHP et qui offre en général de bien meilleur performances. Le but est de faire fonctionner PHP de manière séparée et d’installer le module FastCGI d’Apache afin de faire communiquer Apache et PHP.


Installation d’Apache

Dans un premier temps, il est nécessaire d’installer Apache sur la machine concernée via la commande suivante :

 apt-get install apache2

Installation de MySQL

Ensuite, il faut procéder à l’installation de MySQL via la commande suivante :

 apt-get install mysql-server

Pendant l’installation, il vous sera demandé de choisir un mot de passe root.

Il est conseillé de bien choisir son mot de passe de préférence alphanumérique et contenant des caractères spéciaux.

Pour poursuivre l’installation, la commande suivante doit être executée :

 mysql_secure_installation

Saisissez votre mot de passe root au moment demandé et validez les 4 questions suivantes par yes :

 Enter current password for root (enter for none):
    OK, successfully used password, moving on...

Remove anonymous users? [Y/n] y
 ... Success!

Disallow root login remotely? [Y/n] y
... Success!

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

Installation de PHP-FPM

Enfin, il faut procéder à l’installation de PHP-FPM :

sudo apt-get install php5-fpm

Afin que Apache puisse joindre PHP-FPM, nous installons le module Fast-CGI :

sudo apt-get install libapache2-mod-fastcgi

Configuration de PHP-FPM

À partir de là, vous avez accès à la configuration de PHP :

ls -l /etc/php5/
total 4
drwxr-xr-x+ 3 root root   33 Jan 23 11:11 cli
drwxr-xr-x+ 4 root root   65 Jan 29 14:52 fpm
drwxr-xr-x+ 2 root root 4096 Jan 23 12:14 mods-available

Dossier de configuration pour PHP en ligne de commande.

Dossier de configuration pour PHP-FPM.

Dossier des différents modules installés pour PHP, nous y reviendrons lors de l’installation de modules PHP.

Les modifications de configuration s’effectue par édition du fichier php.ini.

/etc/php5/fpm/php.ini

Notez cependant que la configuration par défaut est tout à fait suffisante.
Après toute modification, il sera nécessaire de relancer PHP-FPM :

sudo service php5-fpm restart

Configuration d’Apache en FastCGI

PHP-FPM est actuellement fonctionnel mais Apache doit maintenant savoir comment interpréter le code PHP.
Le module fastcgi doit être modifié de la manière suivante :

vim /etc/apache2/mods-available/fastcgi.conf

# Configuration à ajouter au fichier fastcgi.conf
<IfModule mod_fastcgi.c>
  AddHandler php5-fcgi .php
  Action php5-fcgi /php5-fcgi
  Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
  FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header  Authorization

  <Directory /usr/lib/cgi-bin>
      Require all granted
  </Directory>
</IfModule>

On active maintenant le module Actions et on relance Apache :

sudo a2enmod actions
sudo service apache2 restart

L’installation et la configuration de PHP-FPM est terminée, chacun des fichiers PHP (.php) sera désormais traité par PHP-FPM.


Installation de modules PHP

Il est possible que votre système ne dispose pas encore des librairies/modules dont vous pourriez avoir besoin pour votre développeur cependant vous pouvez en ajouter d’autres comme GD pour le traitement d’image avec PHP :

### Afficher les librairies/modules déjà disponibles et intégré à PHP
php -m

### Installation de modules complémentaires
sudo apt-get install php5-gd
sudo service apache2 restart

Les modules installés sont automatiquement activés et leurs fichiers de configurations respectifs sont localisés dossier /etc/php5/conf.d/ qui renvoie aux fichiers du dossier /etc/php5/fpm/mods-available/ précédemment vu.

 ls -l /etc/php5/fpm/conf.d/
total 0
lrwxrwxrwx 1 root root 32 Jan 23 11:11 05-opcache.ini -> ../../mods-available/opcache.ini
lrwxrwxrwx 1 root root 28 Jan 23 11:11 10-pdo.ini -> ../../mods-available/pdo.ini
lrwxrwxrwx 1 root root 29 Jan 23 11:42 20-curl.ini -> ../../mods-available/curl.ini
lrwxrwxrwx 1 root root 27 Jan 23 12:14 20-gd.ini -> ../../mods-available/gd.ini
lrwxrwxrwx 1 root root 29 Jan 23 11:11 20-json.ini -> ../../mods-available/json.ini
lrwxrwxrwx 1 root root 31 Jan 23 12:14 20-mcrypt.ini -> ../../mods-available/mcrypt.ini
lrwxrwxrwx 1 root root 31 Jan 23 12:14 20-mysqli.ini -> ../../mods-available/mysqli.ini
lrwxrwxrwx 1 root root 30 Jan 23 12:14 20-mysql.ini -> ../../mods-available/mysql.ini
lrwxrwxrwx 1 root root 34 Jan 23 12:14 20-pdo_mysql.ini -> ../../mods-available/pdo_mysql.ini
lrwxrwxrwx 1 root root 33 Jan 23 11:11 20-readline.ini -> ../../mods-available/readline.ini