Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Ceci est une ancienne révision du document !


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

  1. Installez php-fpm

    ...@...:~$ sudo apt install php-fpm

  2. 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
  1. modules Apache :
    1. 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
  2. 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
  3. 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