Ceci est une ancienne révision du document !
Table des matières
De Nginx à Apache : remplacer Nginx par Apache sans perdre les données du site Web et avec le minimum de temps d'arrêt
Introduction
Voici un tuto pour implémenter Apache MPM Event associé au PHP-FPM sur les distributions Fedora / CentOS / Red Hat !
J’ai mis en production Nginx depuis plusieurs mois et l’essai, à vrai dire, est peu concluant. Complexité de la configuration, complication à mettre en place Awstats, pas de .htaccess, modules à compiler du fait de leur indisponibilité, plantages intempestifs inexpliqués … Du coup, j’ai décidé de revenir à ce bon vieux Apache, plus riche, plus simple.
Apache en mode PHP-FPM : Nginx utilise le PHP en mode CGI, en s’appuyant sur PHP-FPM (PHP FastCGI Process Manager). Vous pouvez en faire de même sur un serveur Apache.
Pré-requis
Première étape
- Installez php-fpm
...@...:~$ sudo apt install php-fpm
- Configurez PHP-FPM : créez un fichier de pool par site, sur la base du fichier /etc/php-fpm.d/www.conf :
;Remplacez www par le nom de votre site [srv2] user = apache group = apache #En mode socket listen = /run/php-fpm/srv2.sock #En mode application Tcp/Ip #listen = 127.0.0.1:9000 listen.owner = apache listen.group = apache listen.acl_users = apache listen.acl_groups = apache listen.allowed_clients = 127.0.0.1
- modules Apache :
- Utilisez le module multi-processus Event : Éditez avec les droits d'administration le fichier /etc/httpd/conf.modules.d/00-mpm.conf pour le modifier comme ceci :
- /etc/httpd/conf.modules.d/00-mpm.conf
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #LoadModule mpm_worker_module modules/mod_mpm_worker.so LoadModule mpm_event_module modules/mod_mpm_event.so
Pour éviter les conflits, éditez avec les droits d'administration le fichier /etc/httpd/conf.modules.d/00-proxy.conf pour désactiver les modules qui ne sont pas nécessaires :- /etc/httpd/conf.modules.d/00-proxy.conf
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
Configuration du VirtualHost : Dans la configuration du VirtualHost, ajoutez les directives correspondant au mode socket<VirtualHost *:80> DocumentRoot "/home/www" ServerAdmin dszalkowski@gmail.com ServerName 195.154.102.202:80 ServerAlias 2001:bc8:34b7:200:: ErrorLog logs/srv2-error_log CustomLog logs/srv2-access_log combined env=!dontlog #En mode socket <FilesMatch \.php$> SetHandler "proxy:unix:/run/php-fpm/srv2.sock|fcgi://127.0.0.1" </FilesMatch> #En mode application Tcp/Ip #ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/www/$1 </VirtualHost>
Autres étapes
Conclusion
Problèmes connus
Voir aussi