Vyhledávání na webu

Jak nainstalovat Nginx, MariaDB 10, PHP 7 (LEMP Stack) v 16.10/16.04


Zásobník LEMP je akronym, který představuje skupinu balíčků (OS Linux, webový server Nginx, databáze MySQL\MariaDB a dynamický programovací jazyk na straně serveru PHP), které se používají k nasazení dynamických webových aplikací a webové stránky.

Tento tutoriál vás provede instalací zásobníku LEMP s podporou MariaDB 10, PHP 7 a HTTP 2.0 pro Nginx na serverových/desktopových edicích Ubuntu 16.10 a Ubuntu 16.04.

Požadavky

  1. Instalace Ubuntu 16.04 Server Edition [návod funguje také na Ubuntu 16.10]

Krok 1: Nainstalujte webový server Nginx

1. Nginx je moderní a na zdroje efektivní webový server používaný k zobrazování webových stránek návštěvníkům na internetu. Začneme instalací webového serveru Nginx z oficiálních úložišť Ubuntu pomocí příkazového řádku apt.

sudo apt-get install nginx

2. Dále zadejte příkazy netstat a systemctl, abyste ověřili, zda je Nginx spuštěn a navázán na port 80.

netstat -tlpn

sudo systemctl status nginx.service

Jakmile budete mít potvrzení, že je server spuštěn, můžete otevřít prohlížeč a přejít na IP adresu serveru nebo záznam DNS pomocí protokolu HTTP, abyste mohli navštívit výchozí webovou stránku Nginx.

http://IP-Address

Krok 2: Povolte protokol Nginx HTTP/2.0

3. Protokol HTTP/2.0, který je ve výchozím nastavení sestaven v nejnovější verzi binárních souborů Nginx na Ubuntu 16.04 funguje pouze ve spojení s SSL a slibuje obrovské zlepšení rychlosti načítání webových stránek SSL.

Chcete-li povolit protokol v Nginx na Ubuntu 16.04, nejprve přejděte do konfiguračních souborů dostupných webů Nginx a zazálohujte výchozí konfigurační soubor vydáním níže uvedeného příkazu.

cd /etc/nginx/sites-available/
sudo mv default default.backup

4. Poté pomocí textového editoru vytvořte novou výchozí stránku podle následujících pokynů:

server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.php;

        server_name 192.168.1.13;

        location / {
                try_files $uri $uri/ =404;
        }

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        resolver 8.8.8.8 8.8.4.4;
        add_header Strict-Transport-Security "max-age=31536000;
        #includeSubDomains" always;


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

}

server {
       listen         80;
       listen    [::]:80;
       server_name    192.168.1.13;
       return         301 https://$server_name$request_uri;
}

Výše uvedený fragment konfigurace umožňuje použití HTTP/2.0 přidáním parametru http2 do všech direktiv naslouchání SSL.

Poslední část úryvku obsažená v direktivě serveru se také používá k přesměrování veškerého provozu bez SSL na výchozí hostitele SSL/TLS. Také nahraďte direktivu server_name tak, aby odpovídala vaší vlastní IP adrese nebo DNS záznamu (nejlépe FQDN).

5. Jakmile dokončíte úpravy výchozího konfiguračního souboru Nginx s výše uvedeným nastavením, vygenerujte a uveďte soubor certifikátu SSL a klíč provedením níže uvedených příkazů.

Vyplňte certifikát svými vlastními nastaveními a věnujte pozornost nastavení Common Name, aby odpovídalo vašemu DNS FQDN záznamu nebo IP adrese vašeho serveru, která bude použita pro přístup na webovou stránku.

sudo mkdir /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
ls /etc/nginx/ssl/

6. Vytvořte také silnou DH šifru, která byla změněna ve výše uvedeném konfiguračním souboru na instrukčním řádku ssl_dhparam, zadáním níže uvedeného příkazu:

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Po vytvoření klíče Diffie-Hellman ověřte, zda je konfigurační soubor Nginx správně zapsán a zda jej lze použít webovým serverem Nginx, a restartujte démona, aby se změny projevily spuštění níže uvedených příkazů.

sudo nginx -t
sudo systemctl restart nginx.service

8. Chcete-li otestovat, zda Nginx používá protokol HTTP/2.0, zadejte níže uvedený příkaz. Přítomnost inzerovaného protokolu h2 potvrzuje, že Nginx byl úspěšně nakonfigurován pro použití protokolu HTTP/2.0. Všechny moderní aktuální prohlížeče by měly tento protokol standardně podporovat.

openssl s_client -connect localhost:443 -nextprotoneg ''

Krok 3: Nainstalujte PHP 7 Interpreter

Nginx lze použít s interpretem jazyka dynamického zpracování PHP ke generování dynamického webového obsahu pomocí správce procesů FastCGI získaného instalací binárního balíčku php-fpm z oficiálních repozitářů Ubuntu.

9. Chcete-li získat PHP7.0 a další balíčky, které umožní PHP komunikovat s webovým serverem Nginx, zadejte na konzoli serveru následující příkaz:

sudo apt install php7.0 php7.0-fpm 

10. Jakmile bude překladač PHP7.0 úspěšně nainstalován na váš počítač, spusťte a zkontrolujte démona php7.0-fpm vydáním níže uvedeného příkaz:

sudo systemctl start php7.0-fpm
sudo systemctl status php7.0-fpm

11. Aktuální konfigurační soubor Nginx je již nakonfigurován pro použití správce procesů PHP FastCGI za účelem serveru dynamického obsahu.

Blok serveru, který umožňuje Nginxu používat PHP interpret, je uveden na níže uvedeném úryvku, takže nejsou nutné žádné další úpravy výchozího konfiguračního souboru Nginx.

location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

Níže je snímek obrazovky toho, jaké pokyny je třeba odkomentovat a upravit v případě původního výchozího konfiguračního souboru Nginx.

12. Chcete-li otestovat vztah webového serveru Nginx se správcem procesů PHP FastCGI, vytvořte testovací konfigurační soubor PHP info.php zadáním níže uvedeného příkazu a ověřte nastavení návštěvou tohoto konfiguračního souboru pomocí níže uvedené adresy: http://IP_nebo doména/info.php.

sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

Také zkontrolujte, zda server inzeruje protokol HTTP/2.0, a to umístěním řádku $_SERVER[‘SERVER_PROTOCOL’] na bloku PHP Variables, jak je znázorněno na níže uvedeném snímku obrazovky.

13. Chcete-li nainstalovat další moduly PHP7.0, použijte příkaz apt search php7.0 k vyhledání modulu PHP a jeho instalaci.

Zkuste také nainstalovat následující PHP moduly, které se mohou hodit v případě, že plánujete instalaci WordPressu nebo jiného CMS.

sudo apt install php7.0-mcrypt php7.0-mbstring

14. Chcete-li zaregistrovat extra moduly PHP, restartujte démona PHP-FPM zadáním níže uvedeného příkazu.

sudo systemctl restart php7.0-fpm.service

Krok 4: Nainstalujte databázi MariaDB

15. A konečně, abychom mohli dokončit náš zásobník LEMP, potřebujeme databázovou komponentu MariaDB pro ukládání a správu dat webových stránek.

Nainstalujte systém správy databází MariaDB spuštěním níže uvedeného příkazu a restartujte službu PHP-FPM, abyste mohli pro přístup k databázi použít modul MySQL.

sudo apt install mariadb-server mariadb-client php7.0-mysql
sudo systemctl restart php7.0-fpm.service

16. Chcete-li zabezpečit instalaci MariaDB, spusťte bezpečnostní skript poskytovaný binárním balíčkem z repozitářů Ubuntu, který vás požádá o nastavení hesla uživatele root, odebrání anonymních uživatelů, vzdálené zakázání přihlášení uživatele root a odebrání testovací databáze.

Spusťte skript zadáním níže uvedeného příkazu a na všechny otázky odpovězte ano. Použijte níže uvedený snímek obrazovky jako průvodce.

sudo mysql_secure_installation

17. Chcete-li nakonfigurovat MariaDB tak, aby běžní uživatelé měli přístup k databázi bez systémových oprávnění sudo, přejděte do rozhraní příkazového řádku MySQL s oprávněními root a spusťte níže uvedené příkazy na interpretu MySQL:

sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

Nakonec se přihlaste k databázi MariaDB a spusťte libovolný příkaz bez oprávnění root provedením níže uvedeného příkazu:

mysql -u root -p -e 'show databases'

To všechno! Nyní máte na serveru Ubuntu 16.10 a Ubuntu 16.04 nakonfigurován zásobník LEMP, který vám umožňuje nasazovat složité dynamické webové aplikace, které mohou interagovat s databázemi.