GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Installieren und konfigurieren Sie Apache und PHP mit mod fastcgi auf Ubuntu/Debian

Fastcgi-basierter PHP-Handler

Mod_fastcgi ist ein Apache-Modul, das es Apache ermöglicht, mit fastcgi-fähigen Anwendungen zu kommunizieren. Es kann verwendet werden, um PHP-Code über fastcgi durch die php-cgi-Binärdatei auszuführen, die Fastcgi-fähig ist.

Fastcgi hat viele Verbesserungen gegenüber dem traditionellen CGI-Modell der Ausführung externer Programme innerhalb eines Webservers. Mit fastcgi werden mehrere Prozesse am Leben erhalten und jeder Prozess wird wiederverwendet, um mehrere Anfragen nacheinander zu bedienen. Es gibt Einstellungen zur Steuerung der maximalen Anzahl von Anfragen, die ein Prozess bedienen kann, nach denen der Prozess beendet und ein neuer gestartet wird.

Installieren Sie die Pakete

Als erstes müssen die notwendigen Pakete von synaptic installiert werden. Wir müssen den Apache-Server, mod_fastcgi, mpm worker und php zusammen mit der CGI-Binärdatei installieren. Beachten Sie, dass, wenn Sie bereits php mit mpm prefork und mod-php installiert haben, es bei der Installation dieser Pakete entfernt wird

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

Unter Ubuntu befindet sich die Apache-Konfigurationsdatei unter

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

Die PHP-CGI-Binärdatei befindet sich unter /usr/bin/php-cgi.

fastcgi konfigurieren

Nach der Installation der Pakete ist es an der Zeit, Apache so zu konfigurieren, dass er mod_fastcgi zum Ausführen von PHP-Skripten verwendet. Wie cgi führt auch fastcgi PHP-Prozesse mit der php-cgi-Binärdatei aus.

Aktivieren Sie zuerst das fastcgi-Modul mit dem Befehl a2enmod

$ sudo a2enmod fastcgi

Der Befehl a2enmod kopiert die Konfigurationsdatei des Moduls aus /etc/apache2/mods-available in das Verzeichnis /etc/apache2/mods-enabled . Die Konfigurationsdatei ist in diesem Fall fastcgi.conf. Es sieht so aus

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

Mod_fastcgi registriert einen Handler namens fastcgi-script bei Apache. Dies kann verwendet werden, um anzugeben, welche Programme durch mod_fastcgi ausgeführt werden sollen.

Okay, machen wir weiter. Als nächstes muss der relevante vhost konfiguriert werden, um PHP mit dem fastcgi-Handler auszuführen. Fügen Sie die folgende Konfiguration in den gewünschten vhost-Block in der Apache-Konfigurationsdatei ein.

<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>

Der FastCgiServer registriert /usr/local/bin/php-fastcgi-wrapper B. die fastcgi-Anwendung mit verschiedenen Optionen.
Beachten Sie, dass dies ein Shell-Skript ist, das die php-cgi-Binärdatei mit verschiedenen Einstellungen startet. Beachten Sie, dass wir den FastCgiServer gebeten haben, 10 Prozesse zu erstellen und zu verwalten.

Die Zeile AddHandler deklariert einen neuen Handler für ".php"-Dateien namens php-fastcgi. Dies kann nach Belieben benannt werden.
Die Aktionszeile weist Apache an, die php-fastcgi-Datei mit dem CGI-Programm /cgi-bin/php-fastcgi-wrapper zu handhaben.

Jetzt ist der Speicherort /cgi-bin/php-fastcgi-wrapper kein echter. Damit es auf den tatsächlichen Speicherort des Wrapper-Skripts zeigt, wird die Alias-Direktive verwendet. Es verweist /cgi-bin auf /usr/local/bin.

Wrapper-Skript

Jetzt kommt das Wrapper-Skript, das von fastcgi verwendet wird, um php auszuführen.

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

Beachten Sie die Einstellung PHP_FCGI_CHILDREN. Es gibt an, dass jeder PHP-Prozess 5 weitere untergeordnete PHP-Prozesse weiter forken und verwalten soll. So wurde früher fastcgi angewiesen, 10 Prozesse zu erstellen. Insgesamt sind das 10*5 =50 Prozesse. Es gibt 2 Ebenen des Prozessmanagements. Mod_fastcgi verwaltet 10 PHP-Prozesse und jeder PHP-Prozess verwaltet weiterhin jeweils 5 Prozesse.

Diese Datei wird unter folgendem Pfad gespeichert

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

Stellen Sie sicher, dass die Datei ausführbar ist. Führen Sie einen chmod darauf aus

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

Der Speicherort der Datei spielt keine Rolle. Das Wrapper-Skript ist notwendig, damit verschiedene Optionen wie PHP_FCGI_MAX_REQUESTS an den PHP-Prozess weitergegeben werden können.

Starten Sie nun Apache neu und testen Sie das Setup, indem Sie ein PHP-Skript im Browser öffnen. Zeigen Sie den Inhalt der $_SERVER-Variablen in PHP an. Es sollte [FCGI_ROLE] => RESPONDER enthalten . Dies zeigt an, dass fastcgi aktiv ist.

Überprüfen Sie auch die Prozesstabelle mit htop oder System Monitor. Sie sollten 50 php-cgi-Prozesse laufen sehen.

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. So installieren und konfigurieren Sie Nextcloud mit Apache unter Ubuntu 18.04

  2. Installieren und konfigurieren Sie PHP OPcache auf Ubuntu 20.04

  3. Installieren und konfigurieren Sie Apache Spark unter Ubuntu 20.04

  4. Installieren und konfigurieren Sie Apache und PHP mit cgi auf Ubuntu oder Debian

  5. Richten Sie Apache und Php mit mod_fcgid auf Ubuntu/Debian ein

So installieren und konfigurieren Sie den Apache-Webserver unter Debian 11

So installieren Sie Apache mit PHP-FPM unter Debian 10

Installieren und konfigurieren Sie OwnCloud auf Ubuntu 21 / Debian 11

Wie installiere und konfiguriere ich Apache unter Debian 11?

So installieren Sie Drupal mit Apache auf Debian und Ubuntu

So installieren und konfigurieren Sie Memcached mit Apache und PHP