GNU/Linux >> Linux Esercitazione >  >> Debian

Configura Apache e Php con mod_fcgid su Ubuntu/Debian

Mod Fcgid

Mod Fcgid è un modulo apache che gli consente di parlare con l'applicazione abilitata fastcgi. Può essere utilizzato per configurare con apache l'esecuzione di php su fastcgi. È un'alternativa al vecchio mod_fastcgi e presenta alcune differenze.
In questo post configureremo apache con php usando questo modulo. Puoi anche configurare apache + php con mod_fastcgi.

Poiché fastcgi mantiene l'esecuzione di php fuori da Apache, siamo liberi di utilizzare un mpm basato su thread come mpm worker.

Installa

Per l'installazione abbiamo bisogno di apache, php (con cgi binary), mod_fcgid, mpm worker. Installali subito dalla riga di comando.

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

Abilita mod_fcgid

# sudo a2enmod fcgid

Individuare i file di configurazione

Dopo aver installato i pacchetti necessari, è il momento di configurare mod_fcgid. La configurazione viene eseguita principalmente tramite vari file di configurazione. Pertanto è importante sapere dove si trovano i file di configurazione.

Il file di configurazione di apache su ubuntu/debian si trova nel seguente percorso

/etc/apache2/sites-available/default

Per scoprire la posizione del file di configurazione di Apache per la tua distribuzione, usa il comando 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

Quindi il file di configurazione si trova in /etc/apache2/sites-enabled/000-default .

Configura Fcgid

Apache deve essere configurato per utilizzare mod_fcgid per elaborare tutti i file ".php" e a mod_fcgid deve essere detto il percorso del binario php fastcgi, che è php-cgi situato in

/usr/bin/php-cgi

Aggiungi la seguente configurazione alla sezione della directory principale nel blocco 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>

Questo dice ad Apache di usare lo script wrapper per avviare il processo fastcgi php-cgi. Dice anche ad Apache di eseguire file .php usando il gestore fcgid.

Per controllare le impostazioni fcgid come il numero massimo di processi, aggiungi le impostazioni pertinenti al di fuori del blocco vhost.

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

Queste impostazioni si applicano al contesto del server e quindi devono essere esterne a qualsiasi blocco Vhost.

Script wrapper

Ora lo script wrapper utilizzato da mod_fcgid per avviare i processi 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

Stiamo archiviando lo script wrapper in /usr/local/bin/php-fcgid-wrapper ma può essere archiviato ovunque e il percorso deve essere menzionato nella configurazione di apache.

Rendi eseguibile lo script wrapper usando chmod

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

Altrimenti viene visualizzato un errore nel registro di apache come questo

[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

Assicurati inoltre di non utilizzare l'impostazione "PHP_FCGI_CHILDREN". Il binario php-cgi può sborsare più processi figlio e gestirli, ma fcgid non passerà più di una singola richiesta al binario php-cgi alla volta, quindi i processi figlio non verranno utilizzati. Questo è spiegato nella documentazione

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.

Inoltre non puoi usare APC con fcgid.

Riferimenti

http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
Debian
  1. Come configurare Opencart con LAMP (PHP, Apache, Mariadb) su Ubuntu 20.04

  2. Installa e configura Apache e PHP con cgi su Ubuntu o Debian

  3. Installa e configura Apache e php con mod fastcgi su Ubuntu/Debian

  4. Configura Apache 2.4 e Php FPM con mod proxy fcgi su Ubuntu 13.10

  5. Come configurare Apache, PHP e MongoDB su Ubuntu 20.04

Come configurare WordPress su Ubuntu Server con Apache

Come installare Apache, MariaDB e PHP (LAMP) su Debian 11

Come installare Apache con PHP-FPM su Debian 10

Come installare e configurare Apache Spark su Ubuntu 21.04

Come installare Drupal con Apache su Debian e Ubuntu

Come installare e configurare Apache Spark su Ubuntu/Debian