PhP est le langage le plus populaires dans le développement d’applica-tions pour le web. Ce n’est par un langage compilé, mais un interpréteur. Dans sa version FPM, (FastCgi Process Manager), il tourne en parallèle avec le service Web dont il n’est plus un module.
Ce langage peut être utilisé de manière ‘procédurale’ ou ‘objet’ (depuis la génération ‘5’.
Il est relié au service web par une ‘socket unix’, sur un port d’écoute particulier. C’est donc une des manière les plus modernes et performantes d’utiliser ce moteur de script.
Cette solution apporte en plus un ‘système de cache’ permettant de renvoyer un même résultat si la demande est la même, et offre un meilleur niveau de sécurité notamment dû à l’utilisation d’un utilisateur spécifique aux droits limités.
Ainsi, PHP-FPM est un interpréteur de langage, particulièrement adapté pour les sites aux très fortes charges, et se trouve être un compagnon idéal pour Nginx et son aspect multiplexage de requêtes, et mysql/Mariadb. Ces trois logiciels sont donc parfaitement cohérents, robustes et rapides pour une architecture web exigeante.
2. INSTALLATION DES PAQUETS REQUIS POUR PHP 7.0 AVEC MYSQL
su
# Mise à niveau du système
apt-get update
apt-get upgrade
# Installation de PhP-FPM
apt-get install php-fpm php-cli php-mysql php-sqlite3 php-pgsql
3. INSTALLATION DE MODULES PHP COMPLÉMENTAIRES
apt-get install php-intl php-json php-mbstring php-xml php-zip php-bz2 php-imap php-soap php-ldap php-gmp php-curl
apt-get install php-gd php-imagick
4. VÉRIFICATIONS PRÉALABLES
ls /etc/php
vérifier que le fichier-socket /var/run/php/php7.3-fpm.sock :
existe,…
qu’il est bien associé au groupe ‘www-data‘, ….
qu’il est bien mentionné dans le fichier configuration: (ligne ‘listen’) dans :/etc/php/7.3/fpm/pool.d/www.conf
5. MODIFIER LE FICHIER PARAMÈTRES DE PHP-FPM
nano /etc/php/7.3/fpm/php.ini
Vérifier la présence et/ou adapter les paramètres tels que ci-dessous (sans toucher aux autres)
cgi.fix_pathinfo = 0
…
max_execution_time = 180…
# messages d’erreur
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT…
display_errors = On
; Development Value: On – Production Value: Off…
display_startup_errors = On
; Development Value: On – Production Value: Off…
log_errors = On
; Development Value: On – Production Value: On…
track_errors = On
; Development Value: On – Production Value: Off…
# Téléchargement maxi user
upload_max_filesize = 20M…
# Paramètres de cache
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=5000
opcache.revalidate_freq=1
opcache.save_comments=1
Selon que le site sera en développement ou en production, il conviendra d’adapter ce fichier paramètre en conséquence.
6. VÉRIFIER LA CONNECTION DE LA ‘SOCKET’ FPM
nano /etc/php/7.3/fpm/pool.d/www.conf
rechercher la ligne : listen = 127.0.0.1:9000
remplacer la par: (si ce n’est déjà le cas, car en principe, déjà fait !) : listen = /var/run/php/php7.3-fpm.sock
7. RECONNAISSANCE DES SCRIPTS PHP PAR NGINX
nano /etc/nginx/sites-available/domainepme.tld
Ajouter un bloc ‘location’ (emplacement), au dessous du marqueur ‘SED’
#
# Interprétation des scripts php par Nginx
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_buffers 16 4k;
}
8. RELANCER LES SERVICES POUR PRISE EN COMPTE
# relancer le serveur web NginX
systemctl nginx reload# relancer le module autonome php
systemctl php7.3-fpm start
9. SUPPRIMER LA PAGE INDEX.HTML Et LA RECRÉER COMME INDEX.PHP
Pour le service web, la page index.html, étant en général prioritaire sur index.php, il convient donc de la supprimer, tout en la recréant sous la forme : index.php. Pour tester la présence effective de Php, ajouter à cette page html : <?php php_info’() ?> (à oter après vérifications).
cd /var/www/domainepme.tld
mv index.html index.php