GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configurer Apache 2.4 et Php FPM avec mod proxy fcgi sur Ubuntu 13.10

mod_proxy_fcgi

Le module mod_proxy_fcgi est nouveau et il permet à apache de se connecter/de transmettre des requêtes à un gestionnaire de processus fastcgi externe comme php fpm. Cela permet une séparation complète entre l'exécution des scripts php et Apache.

Auparavant, nous devions utiliser des modules comme mod_fcgid et mod_fastcgi qui avaient tous des limitations. Mod_fcgid, par exemple, n'a pas correctement utilisé la capacité de gestion des processus de php-cgi alors que mod_fastcgi est un module tiers.

Avec l'arrivée de mod_proxy_fcgi Apache obtient enfin la possibilité de parler proprement aux gestionnaires de processus fastcgi externes, ce qui le rend plus efficace dans la tâche.

La délégation des requêtes php à des serveurs fpm externes réduit considérablement la charge sur les serveurs Web comme apache, ce qui se traduit par une utilisation efficace des ressources de la machine et un traitement plus rapide.

request page.php --> Apache --> Php FPM service --> Le processus Php exécute page.php

Parallèlement à tout cela, php fpm peut exécuter des moteurs de mise en cache d'opcodes comme apc de manière très stable.

Donc, dans cet article, notre tâche consiste à configurer apache + php-fpm à l'aide du connecteur mod_proxy_fcgi.

1. Installer et configurer Apache

Ubuntu 13.10 est déjà livré avec apache 2.4, donc tous les installables se trouvent dans le référentiel lui-même.

Installez Apache si ce n'est déjà fait

$ sudo apt-get install apache2

Activer mod_proxy_fcgi

$ sudo a2enmod proxy_fcgiConsidération du proxy de dépendance pour proxy_fcgi :Activation du module proxy.Activation du module proxy_fcgi.Pour activer la nouvelle configuration, vous devez exécuter :service apache2 restart

Redémarrez Apache

$ sudo service apache2 redémarrer

Configurer les hôtes virtuels

La tâche suivante consiste à configurer un vhost pour utiliser le proxy mod fcgi pour communiquer avec fpm. Les fichiers de configuration vhost sont stockés à l'emplacement suivant

/etc/apache2/sites-available

Entrez-y et créez votre nouveau fichier de configuration vhost en copiant le fichier 000-default.conf fourni avec apache.

$ cd /etc/apache2/sites-available$ sudo cp 000-default.conf monsite.conf$ sudo nano monsite.conf

Il est maintenant temps de configurer l'hôte virtuel. Voici comment j'ai configuré le fichier

..... ServerName fpm.localhost ServerAdmin [email protected] DocumentRoot /var/www/mysite..... ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR} /access.log combiné..... #Include conf-available/serve-cgi-bin.conf ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/ var/www/monsite/$1  Order allow,deny Allow from all AllowOverride FileInfo All # Nouvelle directive nécessaire dans Apache 2.4.3 :Require all allowed  

Les choses importantes à noter sont :

1. Nom du serveur - Il s'agit du domaine ou du sous-domaine de votre vhost. Dans cet exemple, j'ai utilisé fpm.localhost afin que lors de l'utilisation de ce sous-domaine sur localhost, php fpm soit utilisé.

2. DocumentRoot - Il s'agit de la racine de ce vhost à partir de laquelle les fichiers Web doivent être servis.

3. ProxyPassMatch - Il s'agit de la directive qui indique de transmettre toutes les demandes de fichiers ".php" au serveur fcgi à 127.0.0.1:9000. C'est là que notre gestionnaire de processus php fpm serait exécuté. Plus d'informations à ce sujet dans la section suivante.
L'url fcgi doit contenir le chemin exact vers la racine du document. Sinon, il indiquerait "Fichier introuvable" lors de la demande de fichiers.

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/monsite/$1

Le premier paramètre est le modèle à faire correspondre. Ainsi, toutes les URL contenant un ".php" suivi d'une barre oblique d'option et de tout le reste sont mises en correspondance et la partie correspondante est transmise au serveur fcgi fonctionnant à 127.0.0.1:9000.

4. Exiger que tous soient accordés - Après la ligne ProxyPassMatch, nous avons ajouté une section avec les directives Require et AllowOverride. Il est nécessaire à partir d'Apache 2.4

Enregistrez le fichier et activez-le à l'aide de la commande a2ensite qui évite d'avoir à créer le lien symbolique dans le répertoire activé pour les sites.

$ sudo a2ensite monsiteActivation du site monsite. Pour activer la nouvelle configuration, vous devez exécuter :service apache2 reload

Rechargez maintenant la configuration apache

$ sudo service apache2 reload * Rechargement du serveur web apache2

Cela termine la configuration apache. L'autre moitié de la tâche consiste à configurer php fpm pour qu'il puisse enfin fonctionner.

2. Configurer Php-FPM (gestionnaire de processus FastCGI)

La prochaine chose est de configurer php fpm. Installez-le via synaptic, si ce n'est déjà fait.

$ sudo apt-get install php5-fpm

Les fichiers de configuration pour fpm sont situés à

/etc/php5/fpm
/etc/php5/fpm$ lsconf.d php-fpm.conf php.ini pool.d

Le répertoire pool.d contient le fichier de configuration pour chaque pool fpm et php-fpm.conf est le fichier de configuration principal. Notre seul travail consiste à configurer un pool fpm qui doit être utilisé avec apache ou l'hôte virtuel spécifique.

Le fichier de configuration d'un pool est assez volumineux et de nombreux paramètres peuvent être configurés. Mais dans cet article, nous ne parlerons que des champs importants qui doivent être définis pour que fpm soit opérationnel

 ; Démarrer un nouveau pool nommé 'www'.; la variable $pool peut être utilisée dans n'importe quelle directive et sera remplacée par le; nom du pool ("www" ici)[www] ; Par préfixe de pool ; Il s'applique uniquement aux directives suivantes : ; - 'slowlog' ; - 'écouter' (unixsocket); - 'chrooté' ; - 'chdir'; - 'php_values' ; - 'php_admin_values' ; Lorsqu'il n'est pas défini, le préfixe global (ou /usr) s'applique à la place.; Remarque :Cette directive peut également être relative au préfixe global. ; Valeur par défaut :none;prefix =/path/to/pools/$pool; Utilisateur/groupe de processus Unix ; Remarque :L'utilisateur est obligatoire. Si le groupe n'est pas défini, le groupe de l'utilisateur par défaut ; sera utilisé.user =groupe éclairé =éclairé ; L'adresse sur laquelle accepter les requêtes FastCGI.; Les syntaxes valides sont : ; 'ip.add.re.ss:port' - pour écouter sur un socket TCP à une adresse spécifique; un port spécifique;; 'port' - pour écouter sur un socket TCP toutes les adresses sur a ; port spécifique;; '/path/to/unix/socket' - pour écouter sur un socket unix.; Remarque :Cette valeur est obligatoire.listen =127.0.0.1:9000 ; Définir le backlog de listen(2).; Valeur par défaut :128 (-1 sur FreeBSD et OpenBSD);listen.backlog =128

Créez un nouveau fichier de configuration en copiant le fichier www.conf. Et modifiez les champs comme expliqué ci-dessous.

1. La première option est le nom du pool. Nous l'avons nommé 'www' ici. Nommez-le comme vous le souhaitez ou après le nom de domaine avec lequel il sera utilisé. 'votresite' par exemple. De cette façon, il serait plus facile de s'en souvenir.

2. Configurez l'utilisateur et le groupe avec lesquels ce pool sera exécuté. Lorsque vous configurez plusieurs sites/domaines/hôtes virtuels sur un serveur, vous souhaiterez toujours configurer des comptes d'utilisateurs distincts et un pool correspondant pour chacun d'entre eux. Il s'agit d'une mesure de sécurité essentielle, afin que chaque pool ait les privilèges de son propre utilisateur uniquement.

3. Configurez la prise d'écoute. Il s'agit de la socket sur laquelle le processus maître fpm doit écouter les requêtes entrantes. Il peut s'agir d'un socket unix ou d'un socket tcp. Cependant mod_proxy_fcgi ne supporte pas encore les sockets unix, nous sommes donc limités aux sockets tcp.
Par ici son numéro de port 9000 sur localhost.

Redémarrez maintenant fpm

$ sudo service php5-fpm redémarrer

Maintenant, le nouveau pool de fpm devrait prendre effet. Vous pouvez voir le nouveau processus de pool dans htop par exemple.

3. Testez la configuration

Maintenant que apache et php fpm sont configurés et configurés, il est temps de tester. Entrez dans le répertoire racine du document et créez un fichier php contenant un appel à la fonction phpinfo() et ouvrez-le dans votre navigateur.
L'"API du serveur" doit être signalée comme "FPM/FastCGI".

Maintenant qu'apache et php sont configurés, vous voudrez peut-être installer d'autres choses comme APC, la base de données mariadb, phpmyadmin etc. Parcourez ce site pour trouver des guides pratiques sur ceux-ci.

Ressources

Consultez les liens suivants pour en savoir plus
https://wiki.apache.org/httpd/PHP-FPM


Ubuntu
  1. Comment activer et désactiver le module PHP curl avec Apache sur Ubuntu Linux

  2. Comment configurer Opencart avec LAMP (PHP, Apache, Mariadb) sur Ubuntu 20.04

  3. Installer et configurer Apache et PHP avec cgi sur Ubuntu ou Debian

  4. Configurer Apache et Php avec mod_fcgid sur Ubuntu/Debian

  5. Installer et configurer Apache et php avec le mod fastcgi sur Ubuntu/Debian

Comment configurer le cluster Apache Tomcat avec 3 nœuds sur Ubuntu

Ansible Playbook pour installer et configurer Apache sur Ubuntu

Comment configurer WordPress sur Ubuntu Server avec Apache

Comment installer et configurer Apache Spark sur Ubuntu 21.04

Comment installer Lighttpd avec PHP et MariaDB sur Ubuntu 15.04

Comment installer et configurer Apache Spark sur Ubuntu/Debian