GNU/Linux >> Tutoriels Linux >  >> Debian

Configurer Apache et Php avec mod_fcgid sur Ubuntu/Debian

Mod Fcgid

Mod Fcgid est un module apache qui lui permet de parler à une application compatible fastcgi. Il peut être utilisé pour configurer avec apache pour exécuter php sur fastcgi. C'est une alternative à l'ancien mod_fastcgi et présente quelques différences avec lui.
Dans cet article, nous allons configurer apache avec php en utilisant ce module. Vous pouvez également configurer apache + php avec mod_fastcgi.

Étant donné que fastcgi empêche l'exécution de php d'apache, nous sommes libres d'utiliser un mpm basé sur des threads comme mpm worker.

Installer

Pour la configuration, nous avons besoin d'apache, php (avec le binaire cgi), mod_fcgid, mpm worker. Installez-les directement depuis la ligne de commande.

# sudo apt-get install apache2 libapache2-mod-fcgid apache2-mpm-worker php5 php5-cgi

Activer mod_fcgid

# sudo a2enmod fcgid

Rechercher les fichiers de configuration

Après avoir installé les packages nécessaires, il est temps de configurer mod_fcgid. La configuration se fait principalement via divers fichiers de configuration. Il est donc important de savoir où se trouvent les fichiers de configuration.

Le fichier de configuration apache sur ubuntu/debian se trouve au chemin suivant

/etc/apache2/sites-available/default

Pour connaître l'emplacement du fichier de configuration apache pour votre distribution, utilisez la commande apache2/httpd/apachectl.

# apachectl -S
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default:1)
Syntax OK

Le fichier de configuration se trouve donc dans /etc/apache2/sites-enabled/000-default .

Configurer Fcgid

Apache doit être configuré pour utiliser mod_fcgid pour traiter tous les fichiers ".php" et mod_fcgid doit être informé de l'emplacement du binaire php fastcgi, qui est php-cgi situé à

/usr/bin/php-cgi

Ajoutez la configuration suivante à la section du répertoire racine dans le bloc vhost

<Ifmodule mod_fcgid.c>
	# FCGID registers a handler named fcgid-script
	AddHandler fcgid-script .php
	Options +ExecCGI
	FcgidWrapper /usr/local/bin/php-fcgid-wrapper
</IfModule>

Cela indique à apache d'utiliser le script wrapper pour lancer le processus fastcgi php-cgi. Il indique également à apache d'exécuter les fichiers .php à l'aide du gestionnaire fcgid.

Pour contrôler les paramètres fcgid comme le nombre maximum de processus, ajoutez les paramètres pertinents en dehors du bloc vhost.

<Ifmodule mod_fcgid.c>
	# Context - server config
	FcgidMaxProcesses 150
	# Otherwise php output shall be buffered
	FcgidOutputBufferSize 0
</IfModule>

Ces paramètres s'appliquent au contexte du serveur et doivent donc être en dehors de tout bloc Vhost.

Script d'encapsulation

Maintenant, le script wrapper utilisé par mod_fcgid pour lancer les processus php-cgi.

#!/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

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

Nous stockons le script wrapper dans /usr/local/bin/php-fcgid-wrapper mais il peut être stocké n'importe où et le chemin doit être mentionné dans la configuration apache.

Rendre le script wrapper exécutable à l'aide de chmod

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

Sinon, vous obtenez une erreur dans votre journal apache comme celle-ci

[Tue Jun 11 02:53:20 2013] [warn] [client 127.0.0.1] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Tue Jun 11 02:53:20 2013] [error] [client 127.0.0.1] Premature end of script headers: server.php

Assurez-vous également de ne pas utiliser le paramètre "PHP_FCGI_CHILDREN". Le binaire php-cgi peut générer plusieurs processus enfants et les gérer, mais fcgid ne transmettra pas plus d'une requête au binaire php-cgi à la fois, par conséquent, les processus enfants ne seront pas utilisés. Ceci est expliqué dans la documentation

PHP child process management (PHP_FCGI_CHILDREN) should always be disabled with mod_fcgid, which will only route one request at a time to application processes it has spawned; thus, any child processes created by PHP will not be used effectively. (Additionally, the PHP child processes may not be terminated properly.) By default, and with the environment variable setting PHP_FCGI_CHILDREN=0, PHP child process management is disabled.

The popular APC opcode cache for PHP cannot share a cache between PHP FastCGI processes unless PHP manages the child processes. Thus, the effectiveness of the cache is limited with mod_fcgid; concurrent PHP requests will use different opcode caches.

Vous ne pouvez pas non plus utiliser APC avec fcgid.

Références

http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
Debian
  1. Accélérez Apache avec mod_pagespeed et Memcached sur Debian 8

  2. Comment configurer le basculement IP avec KeepAlived sur Ubuntu et Debian

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

  4. Comment configurer Opencart avec LAMP (PHP, Apache, Mariadb) sur Debian 11

  5. Comment configurer Apache, PHP et MongoDB sur Ubuntu 20.04

Comment configurer WordPress sur Ubuntu Server avec Apache

Comment installer Apache, MariaDB et PHP (LAMP) sur Debian 11

Comment installer Apache avec PHP-FPM sur Debian 10

Comment installer et configurer Apache Spark sur Ubuntu 21.04

Comment installer Drupal avec Apache sur Debian et Ubuntu

Comment installer et configurer Apache Spark sur Ubuntu/Debian