GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configuration d'Apache 2.4 avec Fastcgi sur Ubuntu 16.04 - Que dois-je faire avec Php7.0-fpm.conf ?

J'ai réussi à faire fonctionner FastCGI avec Apache 2.4 sur Ubuntu 16.04 en adaptant les instructions de ce fil askubuntu, de ce document HowtoForge et de ce didacticiel Digital Ocean.

Toutes ces sources disent de créer /etc/apache2/conf-available/php7.0-fpm.conf et vous dire ce qu'il faut y mettre. Mais après avoir installé php-fpm , j'ai déjà ce fichier, avec le contenu suivant :

# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
    # Enable http authorization headers
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

    <FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <FilesMatch ".+\.phps$">
        # Deny access to raw php sources by default
        # To re-enable it's recommended to enable access to the files
        # only in specific virtual host or directory
        Require all denied
    </FilesMatch>
    # Deny access to files without filename (e.g. '.php')
    <FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
        Require all denied
    </FilesMatch>
</IfModule>

J'ai donc plutôt créé ma propre conf et y ai mis le code des instructions et l'ai activé.

Quel est le php7.0-fpm.conf existant pour? Si je l'active en plus de ma conf, mes sites Web cessent de fonctionner. Je crains de ne pas le faire comme prévu et d'avoir des problèmes à l'avenir. Il est vraiment difficile de trouver une bonne documentation à jour à ce sujet.

Pour référence, voici toute ma procédure :

sudo apt install libapache2-mod-fastcgi php-fpm
sudo a2dismod php7.0 mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker
sudoedit /etc/apache2/conf-available/custom-fpm.conf

Contenu de /etc/apache2/conf-available/custom-fpm.conf :

<IfModule mod_fastcgi.c>
    AddHandler php7-fcgi .php
    Action php7-fcgi /php7-fcgi virtual
    Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header
    <Directory /usr/lib/cgi-bin>
            Require all granted
    </Directory>
</IfModule>

Suite des commandes :

sudo a2enconf custom-fpm
sudo systemctl restart apache2 && sudo systemctl restart php7.0-fpm

Merci d'avance pour votre aide.

Réponse acceptée :

J'ai frappé la même confusion, je ressens ta douleur. Après de nombreuses lectures, il est devenu clair pour moi que la plupart des articles sont obsolètes et font référence à des méthodes précédentes (ou parfois à des combinaisons).

En utilisant PHP-FPM avec la configuration intégrée d'Ubuntu 16.04, vous seulement besoin de faire ceci :

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

J'ai fait la plupart de ce que vous avez fait, puis j'ai tout supprimé, lorsque cette configuration personnalisée n'avait pas de sens.

A quoi sert le php7.0-fpm.conf existant ?

La configuration que vous avez trouvée installée par le paquet est pour l'utilisation de mod_proxy_fcgi. Il lie les fichiers .php via mod_proxy_fcgi à PHP FPM, en utilisant mod_proxy, via un socket de domaine Unix. Pour autant que je sache, il s'agit de la "recette" la plus récente (des six actuellement disponibles !)

Vous n'avez pas besoin d'installer libapache2-mod-fastcgi c'est une méthode différente et plus ancienne. Vous n'avez pas besoin d'écrire cette configuration - c'est pour utiliser mod_fastcgi directement. Vous n'avez pas besoin d'installer les actions fastcgi alias car ils doivent configurer mod_fastcgi.

Connexe :Comment tuer tous les processus à l'exception d'un processus spécifique ?

Je trouve étrange qu'aucun des articles - même ceux pour Ubuntu 16 - ne mentionne que la nouvelle recette est entièrement configurée pour vous !

Ce commentaire m'a clarifié l'historique :

La méthode préférée est maintenant fastcgi, en utilisant l'une de ces recettes :

(mod_fastcgi, httpd 2.2) http://wiki.apache.org/httpd/php-fastcgi

(mod_fcgid, httpd 2.2) http://wiki.apache.org/httpd/php-fcgid

(mod_proxy_fcgi, httpd 2.4) http://wiki.apache.org/httpd/PHP-FPM

http://php.net/manual/en/install.unix.debian.php#112544 (2013)

De plus, cet article d'Apache détaille les trois sous-options de configuration de mod_proxy_fcgi pour se connecter à FPM, en utilisant soit ProxyPassMatch, soit SetHandler + UDS. Notez que l'UDS est depuis Apache 2.4.10 par https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html donc on a besoin de trusty-backports ou plus récent.

https://wiki.apache.org/httpd/PHP-FPM

J'en suis donc venu à visualiser qu'il existe maintenant six façons de le configurer :

Dans l'ordre à peu près historique :

  1. Module Apache PHP :mod_php (ancienne méthode)

  2. Via FastCGI - en utilisant la configuration Handler/Action/Alias/FastCgiExternalServer

    un. mod_fastcgi

    b. mod_fcgid

  3. Utilisation de PHP-FPM via mod_proxy_fcgi, configuré via soit :

    un. Socket TCP (IP et port) ProxyPassMatch … fcgi://127.0.0.1:9000/path/

    b. Socket de domaine Unix (UDS) ProxyPassMatch … unix:/path/to/socket

    c. (UDS) via SetHandler "proxy:unix:OU SetHandler "proxy:fcgi:

Avis de non-responsabilité :c'est tout nouveau pour moi, donc j'ai probablement encore cinq erreurs et dix choses à apprendre.


Ubuntu
  1. Comment installer Apache sur Ubuntu 18.04

  2. Comment installer Apache sur Ubuntu 20.04

  3. Sécurisez Apache avec Lets Encrypt sur Ubuntu 18.04

  4. Comment installer et configurer Nextcloud avec Apache sur Ubuntu 18.04

  5. Comment installer et configurer ownCloud avec Apache sur Ubuntu 18.04

Installer WordPress sur Ubuntu 20.04 avec Apache, MariaDB, PHP7.4 (LAMP)

Installer WordPress sur Ubuntu 20.04 avec Nginx, MariaDB, PHP7.4 (LEMP)

Comment installer WordPress 4.7 sur Ubuntu 16.04 avec Apache, MariaDB, PHP7

Comment installer plusieurs versions de PHP avec Apache sur Ubuntu 18.04 et 16.04

Installer Apache Kafka sur Ubuntu 20.04

Comment sécuriser Apache avec Let's Encrypt sur Ubuntu 20.04