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

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

Mod Fcgid

Mod Fcgid ist ein Apache-Modul, das es ermöglicht, mit fastcgi-fähigen Anwendungen zu kommunizieren. Es kann verwendet werden, um mit Apache einzurichten, um PHP über fastcgi auszuführen. Es ist eine Alternative zum älteren mod_fastcgi und weist einige Unterschiede zu diesem auf.
In diesem Beitrag werden wir Apache mit PHP unter Verwendung dieses Moduls einrichten. Sie können Apache + PHP auch mit mod_fastcgi einrichten.

Da fastcgi die PHP-Ausführung von Apache fernhält, steht es uns frei, ein threadbasiertes mpm wie mpm worker zu verwenden.

Installieren

Für die Einrichtung benötigen wir Apache, PHP (mit CGI Binary), mod_fcgid, mpm worker. Installieren Sie sie direkt von der Befehlszeile aus.

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

Aktivieren Sie mod_fcgid

# sudo a2enmod fcgid

Konfigurationsdateien suchen

Nach der Installation der erforderlichen Pakete ist es an der Zeit, mod_fcgid zu konfigurieren. Die Konfiguration erfolgt meist über verschiedene Konfigurationsdateien. Daher ist es wichtig zu wissen, wo sich die Konfigurationsdateien befinden.

Die Apache-Konfigurationsdatei auf Ubuntu/Debian befindet sich unter folgendem Pfad

/etc/apache2/sites-available/default

Um den Speicherort der Apache-Konfigurationsdatei für Ihre Distribution herauszufinden, verwenden Sie den Befehl 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

Die Konfigurationsdatei befindet sich also unter /etc/apache2/sites-enabled/000-default .

Fcgid konfigurieren

Apache muss so konfiguriert werden, dass er mod_fcgid verwendet, um alle ".php"-Dateien zu verarbeiten, und mod_fcgid muss der Speicherort der PHP-Fastcgi-Binärdatei mitgeteilt werden, die php-cgi unter

ist
/usr/bin/php-cgi

Fügen Sie die folgende Konfiguration zum Stammverzeichnisabschnitt im vhost-Block

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

Dies weist Apache an, das Wrapper-Skript zu verwenden, um den Fastcgi-Prozess php-cgi zu starten. Außerdem weist es Apache an, .php-Dateien mit dem fcgid-Handler auszuführen.

Um die fcgid-Einstellungen wie die maximale Anzahl von Prozessen zu steuern, fügen Sie die relevanten Einstellungen außerhalb des vhost-Blocks hinzu.

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

Diese Einstellungen gelten für den Serverkontext und müssen sich daher außerhalb eines Vhost-Blocks befinden.

Wrapper-Skript

Nun das Wrapper-Skript, das von mod_fcgid verwendet wird, um php-cgi-Prozesse zu starten.

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

Wir speichern das Wrapper-Skript unter /usr/local/bin/php-fcgid-wrapper aber es kann überall gespeichert werden und der Pfad muss in der Apache-Konfiguration angegeben werden.

Machen Sie das Wrapper-Skript mit chmod

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

Andernfalls erhalten Sie einen Fehler in Ihrem Apache-Protokoll wie diesen

[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

Stellen Sie außerdem sicher, dass Sie nicht die Einstellung „PHP_FCGI_CHILDREN“ verwenden. Die php-cgi-Binärdatei kann mehrere untergeordnete Prozesse auslagern und verwalten, aber fcgid wird nicht mehr als eine einzelne Anfrage gleichzeitig an die php-cgi-Binärdatei weiterleiten, daher werden die untergeordneten Prozesse nicht verwendet. Dies wird in der Dokumentation erklärt

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.

Außerdem können Sie APC nicht mit fcgid verwenden.

Referenzen

http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
Debian
  1. Beschleunigen Sie Apache mit mod_pagespeed und Memcached auf Debian 8

  2. So richten Sie IP-Failover mit KeepAlived unter Ubuntu und Debian ein

  3. So richten Sie Opencart mit LAMP (PHP, Apache, Mariadb) unter Ubuntu 20.04 ein

  4. So richten Sie Opencart mit LAMP (PHP, Apache, Mariadb) unter Debian 11 ein

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

So richten Sie WordPress auf Ubuntu Server mit Apache ein

So installieren Sie Apache, MariaDB und PHP (LAMP) unter Debian 11

So installieren Sie Apache mit PHP-FPM unter Debian 10

So installieren und konfigurieren Sie Apache Spark unter Ubuntu 21.04

So installieren Sie Drupal mit Apache auf Debian und Ubuntu

So installieren und konfigurieren Sie Apache Spark unter Ubuntu/Debian