GNU/Linux >> Znalost Linux >  >> Debian

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

Fastcgi založený php handler

Mod_fastcgi je modul Apache, který umožňuje Apache komunikovat s aplikacemi podporujícími fastcgi. Lze jej použít ke spouštění php kódu přes fastcgi prostřednictvím binárního souboru php-cgi, který podporuje fastcgi.

Fastcgi má mnoho vylepšení oproti tradičnímu cgi modelu spouštění externích programů na webovém serveru. S fastcgi je několik procesů udržováno naživu a každý proces je znovu použit pro obsluhu více požadavků jeden po druhém. K dispozici jsou nastavení pro řízení maximálního počtu požadavků, které může proces obsloužit, načež se proces ukončí a spustí se nový.

Nainstalujte balíčky

První věc, kterou musíte udělat, je nainstalovat potřebné balíčky ze synaptic. Potřebujeme nainstalovat server apache, mod_fastcgi, mpm worker a php spolu s binárkou cgi. Všimněte si, že pokud již máte nainstalovaný php s mpm prefork a mod-php, bude při instalaci těchto balíčků odstraněn

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

Na ubuntu konfigurační soubor Apache umístěný na

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

Binární soubor php cgi se nachází v /usr/bin/php-cgi.

Konfigurace fastcgi

Po instalaci balíčků je čas nakonfigurovat apache tak, aby používal mod_fastcgi ke spouštění php skriptů. Stejně jako cgi bude i fastcgi spouštět procesy php pomocí binárního souboru php-cgi.

Nejprve povolte modul fastcgi pomocí příkazu a2enmod

$ sudo a2enmod fastcgi

Příkaz a2enmod zkopíruje konfigurační soubor modulu z /etc/apache2/mods-available do adresáře /etc/apache2/mods-enabled . Konfigurační soubor je v tomto případě fastcgi.conf. Vypadá to takto

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

Mod_fastcgi registruje handler s názvem fastcgi-script s apache. To lze použít k určení, které programy se mají spustit prostřednictvím mod_fastcgi.

Dobře, pojďme dál. Další věcí je nakonfigurovat příslušný vhost pro spouštění php pomocí obslužného programu fastcgi. Vložte následující konfiguraci do požadovaného bloku vhost v konfiguračním souboru 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>

FastCgiServer registruje /usr/local/bin/php-fastcgi-wrapper jako aplikace fastcgi s různými možnostmi.
Všimněte si, že toto je skript shellu, který spustí binární soubor php-cgi s různými nastaveními. Všimněte si, že jsme požádali FastCgiServer o vytvoření a správu 10 procesů.

Řádek AddHandler deklaruje nový handler pro soubory ".php" s názvem php-fastcgi. Toto lze pojmenovat podle libosti.
Řádek Action říká apache, aby zpracoval soubor php-fastcgi pomocí programu cgi /cgi-bin/php-fastcgi-wrapper.

Nyní umístění /cgi-bin/php-fastcgi-wrapper není skutečné. Aby ukazoval na skutečné umístění wrapper skriptu, používá se direktiva Alias. Ukazuje /cgi-bin na /usr/local/bin.

Wrapper skript

Nyní přichází obalový skript, který bude fastcgi používat ke spuštění 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

Všimněte si nastavení PHP_FCGI_CHILDREN. Specifikuje, že každý php proces by měl dále rozvětvovat a spravovat 5 dalších podřízených php procesů. Takže dříve bylo fastcgi řečeno, aby vytvořilo 10 procesů. Celkem je 10*5 =50 procesů. Probíhají 2 úrovně procesního řízení. Mod_fastcgi spravuje 10 php procesů a každý php proces dále spravuje 5 procesů.

Tento soubor je uložen na následující cestě

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

Ujistěte se, že soubor je spustitelný. Udělejte na něm chmod

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

Na umístění souboru nezáleží. Skript wrapper je nezbytný, aby bylo možné do procesu php předat různé možnosti jako PHP_FCGI_MAX_REQUESTS.

Nyní restartujte apache a otestujte nastavení otevřením php skriptu v prohlížeči. Zobrazte obsah proměnné $_SERVER v php. Mělo by obsahovat [FCGI_ROLE] => RESPONDER . To znamená, že fastcgi je v akci.

Zkontrolujte také tabulku procesů pomocí htop nebo System Monitor. Měli byste vidět 50 spuštěných procesů php-cgi.

Zdroj

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. Nainstalujte a nakonfigurujte PHP OPcache na Ubuntu 20.04

  2. Nainstalujte a nakonfigurujte Apache Spark na Ubuntu 20.04

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

  1. Jak nainstalovat a nakonfigurovat Nextcloud s Apache na Ubuntu 18.04

  2. Jak nainstalovat a nakonfigurovat ownCloud s Apache na Ubuntu 18.04

  3. Nastavte Apache a Php pomocí mod_fcgid na Ubuntu/Debian

  1. Jak nainstalovat Drupal 8 s Apache, MySQL a SSL na Ubuntu 15.10

  2. Jak nainstalovat a nakonfigurovat Drupal s Apache na Debian 9

  3. Jak nainstalovat a nakonfigurovat modul mod_pagespeed s Apache na Ubuntu 18.04 LTS