GNU/Linux >> Linux Esercitazione >  >> Debian

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

Gestione php basato su Fastcgi

Mod_fastcgi è un modulo apache che consente ad apache di comunicare con applicazioni abilitate a fastcgi. Può essere utilizzato per eseguire codice php su fastcgi tramite il binario php-cgi che è abilitato per fastcgi.

Fastcgi ha molti miglioramenti rispetto al tradizionale modello cgi di esecuzione di programmi esterni all'interno di un server web. Con fastcgi vengono mantenuti in vita più processi e ogni processo viene riutilizzato per soddisfare più richieste una dopo l'altra. Esistono impostazioni per controllare il numero massimo di richieste che un processo può servire, dopodiché il processo viene terminato e ne viene avviato uno nuovo.

Installa i pacchetti

La prima cosa da fare è installare i pacchetti necessari da synaptic. Abbiamo bisogno di installare il server apache, mod_fastcgi, mpm worker e php insieme al binario cgi. Nota che se hai già installato php con mpm prefork e mod-php, verrà rimosso durante l'installazione di questi pacchetti

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

Su Ubuntu il file di configurazione di apache che si trova in

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

Il binario php cgi si trova in /usr/bin/php-cgi.

Configura fastcgi

Dopo aver installato i pacchetti, è il momento di configurare apache per utilizzare mod_fastcgi per eseguire gli script php. Come cgi, anche fastcgi eseguirà processi php usando il binario php-cgi.

Per prima cosa abilita il modulo fastcgi con il comando a2enmod

$ sudo a2enmod fastcgi

Il comando a2enmod copia il file di configurazione del modulo da /etc/apache2/mods-available nella directory /etc/apache2/mods-enabled . Il file di configurazione in questo caso è fastcgi.conf. Sembra così

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

Mod_fastcgi registra un gestore chiamato fastcgi-script con apache. Questo può essere utilizzato per specificare quali programmi eseguire tramite mod_fastcgi.

Ok, andiamo avanti. La prossima cosa è configurare il vhost pertinente per eseguire php usando il gestore fastcgi. Inserisci la seguente configurazione all'interno del blocco vhost desiderato nel file di configurazione di 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>

Il FastCgiServer registra /usr/local/bin/php-fastcgi-wrapper come l'applicazione fastcgi con varie opzioni.
Nota che questo è uno script di shell che lancerà il binario php-cgi con varie impostazioni. Nota che abbiamo chiesto a FastCgiServer di creare e gestire 10 processi.

La riga AddHandler dichiara un nuovo gestore per i file ".php" chiamato php-fastcgi. Questo può essere chiamato a qualsiasi cosa tu voglia.
La linea Action dice ad Apache di gestire il file php-fastcgi usando il programma cgi /cgi-bin/php-fastcgi-wrapper.

Ora la posizione /cgi-bin/php-fastcgi-wrapper non è reale. Per indicare la posizione reale dello script wrapper, viene utilizzata la direttiva Alias. Punta /cgi-bin a /usr/local/bin.

Script wrapper

Ora arriva lo script wrapper che verrà utilizzato da fastcgi per eseguire 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

Nota l'impostazione PHP_FCGI_CHILDREN. Specifica che ogni processo php dovrebbe eseguire ulteriormente il fork e gestire altri 5 processi php figlio. Quindi prima a fastcgi è stato detto di creare 10 processi. Il totale è 10*5 =50 processi. Ci sono 2 livelli di gestione dei processi in corso. Mod_fastcgi gestisce 10 processi php e ogni processo php gestisce ulteriormente 5 processi ciascuno.

Questo file è archiviato nel percorso seguente

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

Assicurati che il file sia eseguibile. Fai un chmod su di esso

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

La posizione del file non ha importanza. Lo script wrapper è necessario affinché varie opzioni come PHP_FCGI_MAX_REQUESTS possano essere passate al processo php.

Ora riavvia Apache e verifica l'installazione aprendo uno script php nel browser. Visualizza il contenuto della variabile $_SERVER in php. Dovrebbe contenere [FCGI_ROLE] => RESPONDER . Questo indica che fastcgi è in azione.

Controllare anche la tabella dei processi utilizzando htop o System Monitor. Dovresti vedere 50 processi php-cgi in esecuzione.

Risorsa

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. Come installare e configurare Nextcloud con Apache su Ubuntu 18.04

  2. Installa e configura PHP OPcache su Ubuntu 20.04

  3. Installa e configura Apache Spark su Ubuntu 20.04

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

  5. Configura Apache e Php con mod_fcgid su Ubuntu/Debian

Come installare e configurare Apache Web Server su Debian 11

Come installare Apache con PHP-FPM su Debian 10

Installa e configura OwnCloud su Ubuntu 21 / Debian 11

Come installare e configurare Apache su Debian 11?

Come installare Drupal con Apache su Debian e Ubuntu

Come installare e configurare Memcached con Apache e PHP