Je pars du principe que nous avons un serveur web (Apache avec virtualhost et PHP) fonctionnel. Si ce n’est pas le cas vous pouvez suivre la documentation que j’ai écrite et que vous trouverez respectivement ici, et la.
Installation de php-fpm
Maintenant que nous avons un serveur web fonctionnel, nous allons pouvoir installer php-fpm. Pour cela nous allons taper la commande suivante :
Activation de php-fpm dans php :
Avant de modifier la configuration et comme à chaque fois nous allons la sauvegarder. Pour cela nous allons taper la commande suivante :
1
|
# cp /etc/httpd/conf.d/php.conf{,.ori}
|
Nous allons activer php-fpm dans php. Pour cela nous allons éditer le fichier « php.conf » via la commande suivante :
1
|
# vi /etc/httpd/conf.d/php.conf
|
On modifie le fichier comme suit :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.php>
#SetHandler application/x-httpd-php
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
#
# Allow php to handle Multiviews
#
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory indexes.
#
DirectoryIndex index.php
#
# Uncomment the following lines to allow PHP to pretty-print .phps
# files as PHP source code:
#
#<FilesMatch \.phps$>
# SetHandler application/x-httpd-php-source
#</FilesMatch>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
#php_value session.save_handler "files"
#php_value session.save_path "/var/lib/php/session"
|
Résumé des modifications :
- Commenter la ligne 5
- Ajout de la ligne 6
- Commenter les lignes 31 et 32
Avant de modifier la configuration et comme à chaque fois nous allons la sauvegarder. Pour cela nous allons taper la commande suivante :
1
|
# cp /etc/php-fpm.d/www.conf{,.ori}
|
Nous devons avoir autant de « pool » php-fpm que de vhost Apache (sites web). Afin de nous simplifier la configuration, nous allons nous appuyer sur le fichier « www.conf ». Pour cela nous allons renommer ce fichier via la commande suivante :
1
|
# mv /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.monsiteweb.fr.conf
|
On édite le fichier via la commande suivante :
1
|
# vi /etc/php-fpm.d/www.monsiteweb.fr.conf
|
On remplace le nom du « pool » comme ci-dessous (ligne 2) :
Comme nous allons configurer php-fpm pour travail en mode socket, on modifie la directive « listen » comme ci-dessous (ligne 12) :
1
|
listen = /run/php-fpm/php-php_www.monsiteweb.fr.sock
|
On va activer et modifier les directives « listen.owner », « listen.group » et « listen.mode » comme ci-dessous (lignes 31 à 33) :
1
2
3
|
listen.owner = apache
listen.group = apache
listen.mode = 0660
|
On va modifier le nom du fichier de log pour le site web « www.monsiteweb.fr » comme ci-dessous (ligne 156) :
1
|
slowlog = /var/log/php-fpm/www.monsiteweb.fr-slow.log
|
On va modifier le nom du fichier de log des erreurs pour le site web « www.monsiteweb.fr » comme ci-dessous (ligne 219) :
1
|
php_admin_value[error_log] = /var/log/php-fpm/www.monsiteweb.fr-error.log
|
Afin d’utiliser php-fpm avec Apache, nous devons modifier le Multi-Processing Modules (MPM) configurer par défaut. Avant cela nous allons sauvegarder le fichier de configuration via la commande suivante :
1
|
# cp /etc/httpd/conf.modules.d/00-mpm.conf{,.ori}
|
Maintenant on édite le fichier via la commande suivante :
1
|
# vi /etc/httpd/conf.modules.d/00-mpm.conf
|
On modifie le fichier comme suit pour activer MPM event :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:
# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
LoadModule mpm_event_module modules/mod_mpm_event.so
|
Résumé des modifications :
- Commenter la ligne 6
- Décommenter la ligne 18
Maintenant nous devons désactiver l’ensemble des modules proxy à l’exception de « mod-proxy » et mod_proxy_fcgi ». Avant cela, nous allons sauvegarder le fichier de configuration via la commande suivante :
1
|
# cp /etc/httpd/conf.modules.d/00-proxy.conf{,.ori}
|
On édite le fichier via la commande suivante :
1
|
# vi /etc/httpd/conf.modules.d/00-proxy.conf
|
On modifie le fichier comme ci-dessous :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
|
Résumé des modifications :
- Commenter les lignes3 à 10 et de 12 à 16
Nous avons fini de configurer php-fpm, nous devons maintenant l’activer dans la configuration du vhost Apache « monsiteweb.fr.conf ». Pour cela, on édite son fichier de configuration via la commande suivante :
1
|
# vi /etc/httpd/conf.d/monsiteweb.fr.conf
|
On modifie le fichier comme ci-dessous :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<VirtualHost *:80>
ServerAdmin postsmaster@moniteweb.fr
ServerName www.monsiteweb.fr
DocumentRoot /var/www/html/monsiteweb.fr/
<Directory /var/www/html/monsiteweb.fr/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/php-fpm_monsiteweb.sock|fcgi://127.0.0.1"
</FilesMatch>
ErrorLog /var/log/httpd/monsiteweb.fr/error.log
CustomLog /var/log/httpd/monsiteweb.fr/access.log combined
ServerSignature Off
</VirtualHost>
|
On vérifie qu’il n’y a pas de coquille dans la configuration via la commande suivante :
Maintenant que tout est bon. On active php-fpm au démarrage et on démarre/redémarre les services :
1
2
3
|
# systemctl enable php-fpm.service
# systemctl start php-fpm.service
# systemctl restart httpd.service
|