======Installation de Php-Fpm et PHP======
===== Compiler PHP avec utilisation de PHP-FPM =====
Voir script dans /home/admin/script/nginx/ :
* Passer en admin : '' su * admin ''
* Se rendre dans le dossier des scripts : '' cd script/nginx/ ''
* Lancer le script : '' sh php_5.6.sh ''
Modifier les paramètres du fichier php.ini : '' vi /etc/php/5.6/php.ini ''
* upload_max_filesize = 32M
* post_max_size = 32M
* short_open_tag = On
* memory_limit = 512M
* max_execution_time = 60
* max_input_time = 60
==== Notes concernant la compilation de Php 5.6 sur Debian 8 Jessie ====
Installation de paquets :
* Supprimer le paquet : '' libcurl3-dev ''
* remplacer '' libjpeg62-dev '' par '' libjpeg62-turbo-dev ''
Paramètre de '' ./configure '' :
* remplacer '' --with-libdir=lib64 '' par '' --with-libdir=/lib/x86_64-linux-gnu ''
===== Installer la bibliothèque //imagemagick// et l'extension PHP //imagick// =====
* Utiliser le script ''/home/admin/script/divers/imagemagick_6.8.sh'' pour avoir la lib //imagemagick// dans le système.
* Le script s'occupe de compiler l'extension pour PHP : 7.0, 7.1
===== Activer les extensions dans php.ini =====
; Ajout de l'extension imagick
; Elles sont cherchées par défaut dans : /lib64/extensions/no-debug-non-zts-xxx/
extension=imagick.so
; Activation de opcache
zend_extension=opcache.so
;opcache.memory_consumption=64
;opcache.max_accelerated_files=2000
Voir ci-dessous les dossiers où les extensions sont stockées en fonction de la version de PHP.
=====Dossiers d'installation des modules de PHP=====
* php 7.0 : /lib64/extensions/no-debug-non-zts-20151012/
* php 5.6 : /lib64/extensions/no-debug-non-zts-20131226/
* php 5.5 : /lib64/extensions/no-debug-non-zts-20121212/
* php 5.4 : /lib64/extensions/no-debug-non-zts-20100525/
===== Installer le moniteur pour opcache =====
* Pour chaque domaine, se placer dans '' /home/utilisateur/www ''
* Télécharger le fichier op.php : '' wget https://raw.github.com/amnuts/opcache-gui/master/index.php -O op.php ''
* Le consulter à la page : http://mon_domaine/op.php
===== Installer le service php-fpm =====
* Avec systemd :
* '' ln -s /home/admin/scripts/services/systemd/php-71-fpm.service /etc/systemd/system/php-71-fpm.service ''
* '' chmod +x /etc/init.d/php-56-fpm ''
* Avec system5 :
* '' cp /home/admin/src/php-5.6.5/sapi/fpm/init.d.php-fpm /etc/init.d/php-56-fpm ''
* '' chmod +x /etc/init.d/php-56-fpm ''
* Afin de permettre à admin d’accéder aux différentes versions de php-fpm, pour que l'on puisse accéder au status et ping, il est nécessaire de données les droits à admin sur les fichiers .sock. Pour ce faire, ajouter la ligne suivante dans /etc/init.d/php-56-fpm dans la section "start" après //echo "done"// :
# [2014-10-22] (jpm) : Changement des droits du .sock pour accéder au status et ping depuis admin
chown root:admin /var/run/php-56-fpm.sock
===== Configuer php-fpm =====
* '' cp /etc/php/5.6/php-fpm.conf.default /etc/php/5.6/php-fpm.conf ''
* Modifier le fichier // /etc/php/5.6/php-fpm.conf // :
* Ligne 15 -> décommenter : '' include=etc/fpm.d/*.conf ''
* Ligne 32 -> indiquer le chemin vers le fichier de log : '' error_log = /home/log/php-56-fpm.log ''
* Ligne 164 -> indiquer le socket unix : '' listen = /run/php-56-fpm.sock; ''
* Ligne 176 -> '' listen.owner = www-data ''
* Ligne 177 -> '' listen.group = www-data ''
* Ligne 178 -> '' listen.mode = 0660 ''
* Ligne 361 -> '' pm.status_path = /php-56-fpm-status ''
* Ligne 374 -> '' ping.path = /php-56-fpm-ping ''
* Créer le dossier contenant les fichiers ini de chaque site : '' mkdir /etc/php/5.6/fpm.d/ ''
* Démarrer php-fpm : '' service php-56-fpm start ''
* Vérifier le status de php-fpm : '' netstat -tlnp |grep php-fpm ''
* Ajouter des directives au niveau du fichier de configuration propre à la //pool// (cot cot).
* Exemple pour //apitest// , fichier ''/etc/php/5.6/fpm.d/api-test.clapas.org.pool.conf''
; Doc sur les paramètres : http://www.php.net/manual/fr/install.fpm.configuration.php
[apitest]
listen = /var/run/apitest_fpm.sock
listen.owner = apitest
listen.group = apitest
listen.mode = 0660
user = apitest
group = apitest
pm = dynamic
pm.max_children = 16
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 1000
request_terminate_timeout = 3600s
chdir = /
php_admin_value[session.save_path] = "/home/apitest/_sessions"
php_admin_value[open_basedir] = "/lib/php:/home/apitest:/usr/share/pear:/usr/share/php:/tmp:/usr/local/lib/php:/home/apitest/www/images"
catch_workers_output = yes
===== Erreurs =====
==== Erreur : connect() to unix:/var/run/admin_fpm.sock failed (13: Permission denied) while connecting to upstream ====
* Remplacer dans le fichier de config php-fpm du domaine concerné, les valeurs suivantes :
* '' listen.owner = www-data ''
* '' listen.group = www-data ''
* '' listen.mode = 0660 ''
* Apparemment, il faut que '' listen.owner '' et '' listen.group '' aient la même valeur que l'utilisateur et le groupe de nginx (voir '' /etc/nginx/nginx.conf '').