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.
Odkazy
- 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/