GNU/Linux >> Znalost Linux >  >> Debian

Instalace Nginx s PHP (jako PHP-FPM) a MariaDB (LEMP) na Debian 8

Tento výukový program vám ukáže instalaci webového serveru Nginx na Debian 8. Nginx (vyslovováno „engine x“) je bezplatný, open source, vysoce výkonný HTTP server. Nginx je známý svou stabilitou, bohatou sadou funkcí, jednoduchou konfigurací a nízkou spotřebou zdrojů. Tento tutoriál ukazuje, jak můžete nainstalovat Nginx s podporou PHP (prostřednictvím PHP-FPM) a MariaDB jako náhradu za MySQL. Toto nastavení je často označováno jako LEMP =L inux + nginx (vyslovováno „e ngine x") + M ySQL + P HP).

Předběžná poznámka

V tomto tutoriálu používám název hostitele server1.example.com s IP adresou 192.168.1.100. Tato nastavení se pro vás mohou lišit, takže je musíte v případě potřeby nahradit. Měli byste mít server Debian 8, jako základní systém pro tento tutoriál použiji minimální server Debian.

Aktualizace systému

Než začneme s nastavením Nginx, doporučujeme aktualizovat seznamy balíčků a nainstalovat všechny čekající aktualizace. Spuštěním následujících příkazů nainstalujte všechny čekající aktualizace.

apt-get update
apt-get upgrade -y

K úpravě konfiguračních souborů později použiji nano editor. Nano lze nainstalovat pomocí tohoto příkazu:

apt-get -y install nano 

Instalace MariaDB (jako náhrada MySQL drop-in)

Abychom mohli nainstalovat MariaDB, spustíme:

apt-get -y install mariadb-server mariadb-client

Budete požádáni o zadání hesla pro uživatele root MariaDB – toto heslo je platné pro uživatele [chráněno e-mailem] i [chráněno e-mailem], takže později nemusíme heslo uživatele MariaDB root zadávat ručně:

Nové heslo pro uživatele „root“ MariaDB:<-- yourrootsqlpassword
Opakujte heslo pro uživatele „root“ MariaDB:<-- yourrootsqlpassword

 

Instalace Nginx

Nginx je k dispozici jako balíček pro Debian Jessie, který můžeme nainstalovat následovně:

apt-get -y install nginx

Poté spusťte Nginx:

systemctl start nginx.service

Zadejte do prohlížeče IP adresu nebo název hostitele svého webového serveru (např. http://192.168.1.100) a měla by se zobrazit následující stránka:

Výchozí kořen dokumentu nginx na Debianu 8 je /var/www/html.

Instalace PHP

Můžeme zajistit fungování PHP5 v nginx pomocí PHP-FPM (PHP-FPM (FastCGI Process Manager) je alternativní implementace PHP FastCGI s některými dalšími funkcemi užitečnými pro weby jakékoli velikosti, zejména rušnější weby), které nainstalujeme následovně:

apt-get -y install php5-fpm

PHP-FPM je proces démona (se souborem systemd unit php5-fpm.service), který spouští FastCGI server na soketu /var/run/php5-fpm.sock.

Konfigurace nginx

Konfigurace nginx je v /etc/nginx/nginx.conf, který nyní otevíráme:

nano /etc/nginx/nginx.conf

Konfigurace je snadno pochopitelná (více se o ní můžete dozvědět zde:http://wiki.nginx.org/NginxFullExample a zde:http://wiki.nginx.org/NginxFullExample2)

Nejprve nastavte keepalive_timeout na rozumnou hodnotu, například 2 sekundy:

[...]
    keepalive_timeout   2;
[...]

Virtuální hostitelé jsou definováni v kontejnerech serveru {}. Výchozí vhost je definován v souboru /etc/nginx/sites-available/default – upravme jej následovně:

nano /etc/nginx/sites-available/default
[...]
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]

název_serveru _; dělá z tohoto výchozího catchall vhost (samozřejmě zde můžete také zadat název hostitele jako www.example.com).

Do řádku indexu jsem přidal index.php. root /var/www/html; znamená, že kořen dokumentu je adresář /var/www/html.

Důležitou součástí pro PHP je umístění ~ \.php$ {} stanza. Chcete-li jej povolit, odkomentujte jej, jak je uvedeno výše.

Nyní uložte soubor a znovu načtěte Nginx:

systemctl reload nginx.service

Dále otevřete /etc/php5/fpm/php.ini...

nano /etc/php5/fpm/php.ini

... a nastavte cgi.fix_pathinfo=0:

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

Znovu načtěte PHP-FPM:

systemctl reload php5-fpm.service

Nyní vytvořte následující soubor PHP v kořenovém adresáři dokumentu /var/www/html/:

nano /var/www/html/info.php
<?php
phpinfo();
?>

Nyní tento soubor nazýváme v prohlížeči (např. http://192.168.1.100/info.php):

Jak vidíte, PHP5 funguje a funguje přes FPM/FastCGI, jak je znázorněno na řádku Server API. Pokud se posunete dále dolů, uvidíte všechny moduly, které jsou již povoleny v PHP5. MySQL zde není uveden, což znamená, že v PHP zatím nemáme podporu MariaDB / MySQL.

Získání podpory MySQL / MariaDB v PHP

Abychom získali podporu MySQL v PHP, můžeme nainstalovat balíček php5-mysqlnd. Je dobré nainstalovat některé další moduly PHP, stejně jako je můžete potřebovat pro své aplikace. Dostupné moduly PHP můžete vyhledat takto:

apt-cache search php5

Vyberte ty, které potřebujete, a nainstalujte je takto:

apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

APCu je bezplatný a otevřený PHP opcode cacher pro ukládání do mezipaměti a optimalizaci PHP přechodného kódu, který rozšiřuje PHP opcache. Nahrazuje mezipaměť APC. a je to podobné jako u jiných cacherů PHP operačních kódů, jako jsou eAccelerator a Xcache. Důrazně se doporučuje mít jeden z nich nainstalovaný, aby se urychlila vaše stránka PHP.

APCu lze nainstalovat následovně:

apt-get install php5-apcu

Nyní znovu načtěte PHP-FPM:

systemctl reload php5-fpm.service

Nyní znovu načtěte http://192.168.1.100/info.php ve svém prohlížeči a znovu přejděte dolů do sekce moduly. Nyní byste tam měli najít spoustu nových modulů, včetně modulu MySQL:

Nastavení PHP-FPM pomocí připojení TCP (volitelné)

Ve výchozím nastavení PHP-FPM naslouchá na soketu /var/run/php5-fpm.sock. Je také možné, aby PHP-FPM používal TCP spojení. Chcete-li to provést, otevřete /etc/php5/fpm/pool.d/www.conf...

nano /etc/php5/fpm/pool.d/www.conf

... a řádek pro poslech nastavte následovně:

[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]

Díky tomu bude PHP-FPM naslouchat na portu 9000 na IP 127.0.0.1 (localhost). Ujistěte se, že používáte port, který se ve vašem systému nepoužívá.

Poté znovu načtěte PHP-FPM:

systemctl reload php5-fpm.service

Dále projděte konfiguraci Nginx a všechny své vhosty a změňte řádek fastcgi_pass unix:/var/run/php5-fpm.sock; na fastcgi_pass 127.0.0.1:9000;, např. takhle:

nano /etc/nginx/sites-available/default
[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
} [...]

Nakonec znovu načtěte Nginx:

systemctl reload nginx.service

Obrázek virtuálního počítače

Tento tutoriál je k dispozici jako virtuální stroj připravený k použití ve formátu OVA / OVF pro předplatitele Howtoforge. Formát VM je kompatibilní s VMWare a Virtualbox a pravděpodobně s některými dalšími nástroji, které dokážou tento formát importovat. Odkaz ke stažení najdete v pravém menu nahoře. Kliknutím na název souboru zahájíte stahování.

Přihlašovací údaje virtuálního počítače jsou:

Přihlášení SSH

Uživatelské jméno:root
Heslo:howtoforge

Přihlášení do MariaDB

Uživatelské jméno:root
Heslo:howtoforge

Po prvním spuštění změňte hesla.

VM je nakonfigurován pro statickou IP 192.168.1.100, IP lze změnit v souboru /etc/network/interfaces.

  • nginx:http://nginx.net/
  • nginx Wiki:http://wiki.codemongers.com/Main
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MariaDB: https://mariadb.org/
  • Debian:http://www.debian.org/

Debian
  1. Jak nainstalovat Phorum s Nginx na Debian 9

  2. Jak nainstalovat a nastavit PHP a Nginx (LEMP) na Debian 11

  3. Nainstalujte Pagekit na Debian 7 VPS s Nginx, PHP-FPM a MariaDB

  1. Instalace Nginx s PHP a MariaDB (jako náhrada MySQL) - LEMP -na Ubuntu 15.10 (Wiley Werewolf)

  2. Jak nainstalovat Etherpad s Nginx a SSL na Debian 11

  3. Instalace Nginx s PHP5 (a PHP-FPM) a podporou MySQL (LEMP) na Ubuntu 13.04

  1. Instalace Lighttpd s PHP (režim PHP-FPM) a MySQL nebo MariaDB na Ubuntu 15.04

  2. Instalace Lighttpd s PHP (režim PHP-FPM) a MySQL nebo MariaDB na Ubuntu 15.10

  3. Instalace Nginx s podporou PHP5 (a PHP-FPM) a MySQL (LEMP) na Debian Wheezy