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