Tento tutoriál vám ukáže, jak nainstalovat Nginx, MariaDB a PHP7.3 (LEMP stack) na Debian 10 Buster. Softwarový zásobník je sada softwarových nástrojů spojených dohromady. LEMP znamená L inux, Nginx , M ariaDB/M ySQL a P HP, z nichž všechny jsou open source a lze je používat zdarma. Jedná se o velmi běžný softwarový balík, který pohání dynamické webové stránky a webové aplikace. Linux je operační systém; Nginx je webový server; MariaDB/MySQL je databázový server a PHP je skriptovací jazyk na straně serveru zodpovědný za generování dynamických webových stránek.
Všechny čtyři komponenty jsou zdarma a s otevřeným zdrojovým kódem. Protože však MySQL nyní vlastní Oracle a existuje šance, že jej Oracle změní na uzavřený produkt, zvolíme místo MySQL MariaDB.
Předpoklady instalace LEMP Stack na Debian 10 Buster
Abyste mohli sledovat tento tutoriál, potřebujete operační systém Debian 10 spuštěný na vašem místním počítači nebo na vzdáleném serveru.
Pokud hledáte VPS (Virtual Private Server), můžete si zaregistrovat účet na Vultr prostřednictvím tohoto speciálního odkazu a získat kredit 50 $ zdarma (pouze pro nové uživatele). A pokud potřebujete nastavit LEMP stack s názvem domény, doporučuji koupit názvy domén od NameCheap, protože cena je nízká a poskytují ochranu soukromí whois doživotně zdarma.
Při instalaci softwaru do Debianu musíte mít oprávnění root. Můžete přidat sudo na začátek příkazu nebo použijte su -
příkaz pro přepnutí na uživatele root.
Krok 1:Aktualizace softwarových balíčků
Než nainstalujeme zásobník LEMP, je dobré aktualizovat úložiště a softwarové balíčky. Spusťte na svém operačním systému Debian 10 následující příkaz.
sudo apt update sudo apt upgrade
Krok 2:Nainstalujte webový server Nginx na Debian 10
Nginx je vysoce výkonný webový server a v dnešní době velmi populární. Může být také použit jako reverzní proxy a server pro ukládání do mezipaměti. Chcete-li nainstalovat webový server Nginx, zadejte následující příkaz.
sudo apt install nginx
Po instalaci by se Nginx měl automaticky spustit. Zkontrolujte jeho stav pomocí systemctl
.
systemctl status nginx
Ukázkový výstup:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en Active: active (running) since Sat 2019-08-10 06:20:26 UTC; 54s ago Docs: man:nginx(8) Main PID: 19713 (nginx) Tasks: 2 (limit: 1149) Memory: 4.6M CGroup: /system.slice/nginx.service ├─19713 nginx: master process /usr/sbin/nginx -g daemon on; master_pr └─19714 nginx: worker process
Tip:Pokud se výše uvedený příkaz okamžitě neukončí, můžete stisknutím klávesy Q získat zpět kontrolu nad oknem terminálu.
Pokud neběží, spusťte jej pomocí systemctl.
sudo systemctl start nginx
Je také dobré povolit Nginx, aby se automaticky spouštěl při spouštění.
sudo systemctl enable nginx
Zkontrolujte verzi Nginx:
sudo nginx -v
Výstup:
nginx version: nginx/1.14.2
Nyní zadejte veřejnou IP adresu vašeho serveru Debian 10 do adresního řádku prohlížeče. Měli byste vidět výchozí webovou stránku „Welcome to nginx“, což znamená, že webový server Nginx běží správně. Pokud instalujete LEMP na místní počítač Debian 10, měli byste zadat 127.0.0.1
nebo localhost
v adresním řádku prohlížeče.
Pokud je připojení odmítnuto nebo se nepodaří dokončit, může to být brána firewall, která brání příchozím požadavkům na port TCP 80. Pokud používáte bránu firewall iptables, musíte pro otevření portu TCP 80 spustit následující příkaz.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Pokud používáte UFW firewall, pak spusťte tento příkaz pro otevření TCP portu 80.
sudo ufw allow http
Nyní musíme nastavit www-data
(uživatel Nginx) jako vlastník kořenového adresáře dokumentu (také známého jako webový kořen). Ve výchozím nastavení je ve vlastnictví uživatele root. (Všimněte si, že Nginx ve výchozím nastavení používá /usr/share/nginx/html/
jako webový kořen, zatímco webový server Apache používá /var/www/html/
jak rootujeme.)
sudo chown www-data:www-data /usr/share/nginx/html/ -R
Krok 3:Nainstalujte databázový server MariaDB na Debian 10
MariaDB je drop-in náhrada za MySQL. Pro instalaci na Debian 10 zadejte následující příkaz.
sudo apt install mariadb-server mariadb-client
Po instalaci by se měl server MariaDB automaticky spustit. Použijte systemctl zkontrolovat jeho stav.
systemctl status mariadb
Výstup:
● mariadb.service - MariaDB 10.3.15 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: Active: active (running) since Sat 2019-08-10 06:38:58 UTC; 13s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 20669 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 1149) Memory: 77.7M CGroup: /system.slice/mariadb.service └─20669 /usr/sbin/mysqld
Pokud neběží, spusťte jej tímto příkazem:
sudo systemctl start mariadb
Chcete-li povolit automatické spouštění MariaDB při spouštění, spusťte
sudo systemctl enable mariadb
Nyní spusťte bezpečnostní skript po instalaci.
sudo mysql_secure_installation
Až budete požádáni o zadání rootovského hesla MariaDB, stiskněte klávesu Enter, protože heslo root ještě není nastaveno. Poté zadejte y pro nastavení hesla uživatele root pro server MariaDB.
Poté stačí stisknout Enter a odpovědět na všechny zbývající otázky. To odstraní anonymního uživatele, zakáže vzdálené přihlášení root a odstraní testovací databázi. Tento krok je základním požadavkem pro zabezpečení databáze MariaDB. (Všimněte si, že písmeno Y
je velká, což znamená, že se jedná o výchozí odpověď.)
Ve výchozím nastavení používá balíček MaraiDB v Debianu unix_socket k ověření přihlášení uživatele, což v podstatě znamená, že k přihlášení do konzole MariaDB můžete použít uživatelské jméno a heslo operačního systému. Můžete tedy spustit následující příkaz a přihlásit se bez zadání hesla root MariaDB.
sudo mariadb -u root
nebo
sudo mysql -u root
Chcete-li ukončit, spusťte
exit;
Zkontrolujte informace o verzi serveru MariaDB.
mariadb --version
Výstup:
mariadb Ver 15.1 Distrib 10.3.15-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Krok 4:Nainstalujte PHP7.3 na Debian 10
V době psaní tohoto článku je PHP7.3 nejnovější stabilní verzí PHP a má oproti předchozím verzím drobné zlepšení výkonu. Chcete-li nainstalovat PHP7.3 a některá běžná rozšíření PHP z úložiště Debian 10, zadejte následující příkaz.
sudo apt install php7.3 php7.3-fpm php7.3-mysql php-common php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline
Zkontrolujte informace o verzi PHP.
php --version
Výstup:
PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies
Nyní spusťte php7.3-fpm.
sudo systemctl start php7.3-fpm
Povolit automatické spouštění při spouštění.
sudo systemctl enable php7.3-fpm
Zkontrolujte stav:
systemctl status php7.3-fpm
Krok 5:Vytvořte blok serveru Nginx
Blok serveru Nginx je jako virtuální hostitel v Apache. Nepoužijeme výchozí blok serveru, protože je neadekvátní ke spuštění kódu PHP a pokud jej upravíme, stane se z toho nepořádek. Odstraňte tedy default
symbolický odkaz v sites-enabled
adresář spuštěním následujícího příkazu. (Stále je k dispozici jako /etc/nginx/sites-available/default
.)
sudo rm /etc/nginx/sites-enabled/default
Poté vytvořte zcela nový soubor bloku serveru pod /etc/nginx/conf.d/ adresář pomocí textového editoru příkazového řádku, jako je Nano.
sudo nano /etc/nginx/conf.d/default.conf
Do souboru vložte následující text. Následující úryvek způsobí, že Nginx bude naslouchat na portu IPv4 80 a portu IPv6 80 s názvem univerzálního serveru.
server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html/; index index.php index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } # A long browser cache lifetime can speed up repeat visits to your page location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } # disable access to hidden files location ~ /\.ht { access_log off; log_not_found off; deny all; } }
Uložte a zavřete soubor. (Chcete-li uložit soubor v textovém editoru Nano, stiskněte Ctrl+O
a poté stiskněte Enter pro potvrzení. Pro ukončení stiskněte Ctrl+X
.) Poté otestujte konfigurace Nginx.
sudo nginx -t
Pokud je test úspěšný, znovu načtěte Nginx.
sudo systemctl reload nginx
Krok 6:Otestujte PHP
Pro testování PHP skriptů se serverem Nginx musíme vytvořit info.php
soubor v kořenovém adresáři webu.
sudo nano /usr/share/nginx/html/info.php
Do souboru vložte následující kód PHP.
<?php phpinfo(); ?>
Uložte a zavřete soubor.
Nyní do adresního řádku prohlížeče zadejte server-ip-address/info.php
. Nahraďte sever-ip-address
s vaší skutečnou IP. Pokud postupujete podle tohoto návodu na místním počítači, zadejte 127.0.0.1/info.php
nebo localhost/info.php
.
Měli byste vidět informace o PHP serveru. To znamená, že skripty PHP mohou správně běžet s webovým serverem Nginx. Můžete zjistit, že Zend OPcache je povolena.
Automatický restart Nginx
Pokud je z jakéhokoli důvodu váš proces Nginx zabit, musíte jej restartovat spuštěním následujícího příkazu.
sudo systemctl restart nginx
Místo ručního zadávání tohoto příkazu můžeme nechat Nginx automaticky restartovat úpravou nginx.service
systémovou servisní jednotku. Abychom přepsali výchozí konfiguraci služby systemd, vytvoříme samostatný adresář.
sudo mkdir -p /etc/systemd/system/nginx.service.d/
Poté vytvořte soubor v tomto adresáři.
sudo nano /etc/systemd/system/nginx.service.d/restart.conf
Přidejte do souboru následující řádky, díky nimž se Nginx automaticky restartuje 5 sekund po zjištění selhání.
[Service] Restart=always RestartSec=5s
Uložte a zavřete soubor. Poté znovu načtěte systemd.
sudo systemctl daemon-reload
Chcete-li zkontrolovat, zda by to fungovalo, zabijte Nginx pomocí:
sudo pkill nginx
Poté zkontrolujte stav Nginx. Zjistíte, že Nginx se automaticky restartuje.
systemctl status nginx