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… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tutoriel:internet:serveur:nginx2apache:start1 [2022/02/12 13:50] – ↷ Nom de la page changé de tutoriel:internet:serveur:nginx2apache:start1 à tutoriel:internet:serveur:nginx2apache:start admintutoriel:internet:serveur:nginx2apache:start1 [2022/08/13 22:15] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +{{tag>tutoriel}}
  
 +====== 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 =====
 +
 +<WRAP list-deep>
 +  - **Installez [[apt>php-fpm]]** <cli prompt='$ '>...@...:~$ sudo apt install php-fpm</cli>
 +  - **Configurez PHP-FPM** : créez un fichier de pool par site, sur la base du fichier /etc/php/7.4/fpm/pool.d/www.conf (Remplacez www par le nom de votre site) :<code - /etc/php/7.4/fpm/pool.d/monsite.conf>
 +(...)
 +#~ [www]
 +[monsite]
 +(...)
 +; Unix user/group of processes
 +; Note: The user is mandatory. If the group is not set, the default user's group
 +;       will be used.
 +user = www-data
 +group = www-data
 +
 +; The address on which to accept FastCGI requests.
 +; Valid syntaxes are:
 +;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
 +;                            a specific port;
 +;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
 +;                            a specific port;
 +;   'port'                 - to listen on a TCP socket to all addresses
 +;                            (IPv6 and IPv4-mapped) on a specific port;
 +;   '/path/to/unix/socket' - to listen on a unix socket.
 +; Note: This value is mandatory.
 +listen = /run/php/php7.4-fpm.sock
 +(...)
 +; Set permissions for unix socket, if one is used. In Linux, read/write
 +; permissions must be set in order to allow connections from a web server. Many
 +; BSD-derived systems allow connections regardless of permissions.
 +; Default Values: user and group are set as the running user
 +;                 mode is set to 0660
 +listen.owner = www-data
 +listen.group = www-data
 +;listen.mode = 0660
 +; When POSIX Access Control Lists are supported you can set them using
 +; these options, value is a comma separated list of user/group names.
 +; When set, listen.owner and listen.group are ignored
 +#~ ;listen.acl_users =
 +#~ ;listen.acl_groups =
 +listen.acl_users = www-data
 +listen.acl_groups = www-data
 +
 +; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
 +; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
 +; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
 +; must be separated by a comma. If this value is left blank, connections will be
 +; accepted from any ip address.
 +; Default Value: any
 +#~ ;listen.allowed_clients = 127.0.0.1
 +listen.allowed_clients = 127.0.0.1
 +(...)
 +</code>
 +</WRAP>
 +  - **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 :<code - /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
 +</code>
 +  - 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 :<code - /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</code>
 +  - **Configuration du VirtualHost** : Dans la configuration du VirtualHost, ajoutez les directives correspondant au mode socket<code - >
 +<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></code>
 +===== Autres étapes =====
 +
 +===== Conclusion =====
 +
 +===== Problèmes connus =====
 +
 +===== Voir aussi =====
 +
 +  * **(fr)** [[https://www.dsfc.net/infra/lamp-infrastructure/abandon-de-nginx-pour-apache-et-php-fpm/]]
 +
 +----
 +//Basé sur << [[https://www.dsfc.net/infra/lamp-infrastructure/abandon-de-nginx-pour-apache-et-php-fpm/|Abandon de Nginx pour Apache et PHP-FPM]] >> par Denis Szalkowski.//