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
parlibjpeg62-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
etlisten.group
aient la même valeur que l'utilisateur et le groupe de nginx (voir/etc/nginx/nginx.conf
).