GNU/Linux >> Tutoriels Linux >  >> Debian

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

Gestionnaire PHP basé sur Fastcgi

Mod_fastcgi est un module apache qui permet à apache de communiquer avec les applications compatibles fastcgi. Il peut être utilisé pour exécuter du code php sur fastcgi via le binaire php-cgi qui est activé pour fastcgi.

Fastcgi présente de nombreuses améliorations par rapport au modèle cgi traditionnel d'exécution de programmes externes à l'intérieur d'un serveur Web. Avec fastcgi, plusieurs processus sont maintenus en vie et chaque processus est réutilisé pour traiter plusieurs requêtes les unes après les autres. Il existe des paramètres pour contrôler le nombre maximum de requêtes qu'un processus peut traiter, après quoi le processus est terminé et un nouveau est démarré.

Installer les packages

La première chose à faire est d'installer les packages nécessaires à partir de synaptic. Nous devons installer le serveur apache, mod_fastcgi, mpm worker et php avec le binaire cgi. Notez que si vous avez déjà installé php avec mpm prefork et mod-php, il sera supprimé lors de l'installation de ces packages

$ sudo apt-get install apache2 libapache2-mod-fastcgi apache2-mpm-worker php5 php5-cgi

Sur ubuntu, le fichier de configuration apache situé à

/etc/apache2/sites-enabled/000-default

Le binaire php cgi se trouve dans /usr/bin/php-cgi.

Configurer fastcgi

Après avoir installé les packages, il est temps de configurer apache pour utiliser mod_fastcgi pour exécuter des scripts php. Comme cgi, fastcgi exécutera également des processus php en utilisant le binaire php-cgi.

Activez d'abord le module fastcgi avec la commande a2enmod

$ sudo a2enmod fastcgi

La commande a2enmod copie le fichier de configuration du module depuis /etc/apache2/mods-available dans le répertoire /etc/apache2/mods-enabled . Le fichier de configuration dans ce cas est fastcgi.conf. Il ressemble à ceci

<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
  FastCgiIpcDir /var/lib/apache2/fastcgi
</IfModule>

Mod_fastcgi enregistre un gestionnaire appelé fastcgi-script avec apache. Cela peut être utilisé pour spécifier les programmes à exécuter via mod_fastcgi.

Ok, passons à autre chose. La prochaine chose est de configurer le vhost approprié pour exécuter php en utilisant le gestionnaire fastcgi. Placez la configuration suivante dans le bloc vhost souhaité dans le fichier de configuration apache.

<Ifmodule mod_fastcgi.c>
	FastCgiServer /usr/local/bin/php-fastcgi-wrapper -processes 10 -restart-delay 1 -init-start-delay 1 -pass-header HTTP_AUTHORIZATION
	
	Alias /binary /usr/local/bin
	<Location /binary/php-fastcgi-wrapper>
		Options ExecCGI
		SetHandler fastcgi-script
	</Location>
	AddHandler php-fastcgi .php
	Action php-fastcgi /binary/php-fastcgi-wrapper
</IfModule>

Le FastCgiServer enregistre /usr/local/bin/php-fastcgi-wrapper comme l'application fastcgi avec diverses options.
Notez qu'il s'agit d'un script shell qui lancera le binaire php-cgi avec divers paramètres. Notez que nous avons demandé au FastCgiServer de créer et gérer 10 processus.

La ligne AddHandler déclare un nouveau gestionnaire pour les fichiers ".php" appelé php-fastcgi. Cela peut être nommé comme vous le souhaitez.
La ligne Action indique à apache de gérer le fichier php-fastcgi à l'aide du programme cgi /cgi-bin/php-fastcgi-wrapper.

Maintenant, l'emplacement /cgi-bin/php-fastcgi-wrapper n'est pas réel. Pour le faire pointer vers l'emplacement réel du script wrapper, la directive Alias ​​est utilisée. Il pointe /cgi-bin vers /usr/local/bin.

Script d'encapsulation

Vient maintenant le script wrapper qui sera utilisé par fastcgi pour exécuter php.

#!/bin/sh
# Set desired PHP_FCGI_* environment variables.
# Example:
# PHP FastCGI processes exit after 500 requests by default.
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS

PHP_FCGI_CHILDREN=5
export PHP_FCGI_CHILDREN

# Replace with the path to your FastCGI-enabled PHP executable
exec /usr/bin/php-cgi

Notez le paramètre PHP_FCGI_CHILDREN. Il spécifie que chaque processus php doit en outre créer et gérer 5 processus php enfants supplémentaires. Donc, plus tôt, fastcgi a été invité à créer 10 processus. Le total est de 10*5 =50 processus. Il y a 2 niveaux de gestion des processus en cours. Mod_fastcgi gère 10 processus php et chaque processus php gère en outre 5 processus chacun.

Ce fichier est stocké au chemin suivant

/usr/local/bin/php-fastcgi-wrapper

Assurez-vous que le fichier est exécutable. Faites un chmod dessus

/usr/local/bin# chmod +x php-fastcgi-wrapper

L'emplacement du fichier n'a pas d'importance. Le script wrapper est nécessaire pour que diverses options telles que PHP_FCGI_MAX_REQUESTS puissent être transmises au processus php.

Maintenant, redémarrez apache et testez la configuration en ouvrant un script php dans le navigateur. Affichez le contenu de la variable $_SERVER dans php. Il doit contenir [FCGI_ROLE] => RESPONDER . Cela indique que fastcgi est en action.

Vérifiez également la table de processus à l'aide de htop ou de System Monitor. Vous devriez voir 50 processus php-cgi en cours d'exécution.

Ressource

http://www.fastcgi.com/drupal/node/25
http://www.opensource.apple.com/source/apache_mod_php/apache_mod_php-12/php/sapi/cgi/README.FastCGI


Debian
  1. Comment installer et configurer Nextcloud avec Apache sur Ubuntu 18.04

  2. Installer et configurer PHP OPcache sur Ubuntu 20.04

  3. Installer et configurer Apache Spark sur Ubuntu 20.04

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

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

Comment installer et configurer le serveur Web Apache sur Debian 11

Comment installer Apache avec PHP-FPM sur Debian 10

Installer et configurer OwnCloud sur Ubuntu 21 / Debian 11

Comment installer et configurer Apache sur Debian 11 ?

Comment installer Drupal avec Apache sur Debian et Ubuntu

Comment installer et configurer Memcached avec Apache et PHP