GNU/Linux >> Znalost Linux >  >> Debian

Nastavte Apache a Php pomocí mod_fcgid na Ubuntu/Debian

Mod Fcgid

Mod Fcgid je modul Apache, který mu umožňuje komunikovat s aplikací podporující fastcgi. Lze jej použít k nastavení pomocí Apache ke spuštění php přes fastcgi. Je to alternativa ke staršímu mod_fastcgi a má s ním určité rozdíly.
V tomto příspěvku nastavíme apache s php pomocí tohoto modulu. Můžete také nastavit apache + php pomocí mod_fastcgi.

Protože fastcgi udržuje spouštění php mimo Apache, můžeme volně používat mpm založené na vláknech jako mpm worker.

Instalovat

Pro nastavení potřebujeme apache, php (s cgi binárním), mod_fcgid, mpm worker. Nainstalujte je přímo z příkazového řádku.

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

Povolit mod_fcgid

# sudo a2enmod fcgid

Najděte konfigurační soubory

Po instalaci potřebných balíčků je čas nakonfigurovat mod_fcgid. Konfigurace se většinou provádí pomocí různých konfiguračních souborů. Proto je důležité vědět, kde jsou konfigurační soubory.

Konfigurační soubor Apache na ubuntu/debian je umístěn na následující cestě

/etc/apache2/sites-available/default

Chcete-li zjistit umístění konfiguračního souboru apache pro vaši distribuci, použijte příkaz 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

Konfigurační soubor je tedy na adrese /etc/apache2/sites-enabled/000-default .

Nakonfigurujte Fcgid

Apache musí být nakonfigurován tak, aby používal mod_fcgid ke zpracování všech souborů ".php" a mod_fcgid je třeba sdělit umístění binárního souboru php fastcgi, což je php-cgi umístěné na

/usr/bin/php-cgi

Přidejte následující konfiguraci do sekce kořenového adresáře v bloku 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>

To říká Apache, aby použil obalový skript ke spuštění procesu fastcgi php-cgi. Také říká Apache, aby spouštěl soubory .php pomocí manipulátoru fcgid.

Chcete-li ovládat nastavení fcgid, jako je maximální počet procesů, přidejte příslušná nastavení mimo blok vhost.

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

Tato nastavení platí pro kontext serveru, a proto musí být mimo jakýkoli blok Vhost.

Wrapper skript

Nyní obalový skript, který používá mod_fcgid ke spouštění procesů 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

Skript obalu ukládáme na adrese /usr/local/bin/php-fcgid-wrapper ale může být uložen kdekoli a cesta musí být uvedena v konfiguraci Apache.

Udělejte obalový skript spustitelný pomocí chmod

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

V opačném případě se ve vašem protokolu Apache zobrazí chyba, jako je tato

[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

Také se ujistěte, že nepoužíváte nastavení „PHP_FCGI_CHILDREN“. Binární soubor php-cgi může rozdělit více podřízených procesů a spravovat je, ale fcgid nepředá více než jeden požadavek na binární soubor php-cgi najednou, a proto se nebudou používat podřízené procesy. To je vysvětleno v dokumentaci

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.

Také nemůžete používat APC s fcgid.

Odkazy

http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
Debian
  1. Zrychlete Apache pomocí mod_pagespeed a Memcached na Debianu 8

  2. Jak nastavit IP Failover s KeepAlived na Ubuntu a Debianu

  3. Jak nastavit Opencart pomocí LAMP (PHP, Apache, Mariadb) na Debianu 11

  1. Jak nastavit Opencart s LAMP (PHP, Apache, Mariadb) na Ubuntu 20.04

  2. Nainstalujte a nakonfigurujte Apache a PHP s cgi na Ubuntu nebo Debianu

  3. Jak nastavit Apache, PHP a MongoDB na Ubuntu 20.04

  1. Jak nainstalovat Laravel na Ubuntu 18.04 s Apache

  2. Nainstalujte a nakonfigurujte Apache a php pomocí mod fastcgi na Ubuntu/Debian

  3. Nastavení Apache 2.4 a Php FPM s mod proxy fcgi na Ubuntu 13.10