GNU/Linux >> Znalost Linux >  >> AlmaLinux

Jak nainstalovat LEMP Stack (Nginx, MariaDB a PHP) na AlmaLinux 8

LEMP je kolekce softwaru s otevřeným zdrojovým kódem, který se běžně používá společně k obsluze webových aplikací. Termín LEMP je akronym, který představuje konfiguraci operačního systému Linux s Nginx (vyslovuje se engine-x , odtud E ve zkratce) webový server s daty stránek uloženými v databázi MySQL nebo MariaDB a dynamickým obsahem zpracovaným pomocí PHP, které se díky svému výkonu a škálovatelnosti s oblibou používá k hostování rozsáhlých webových stránek.

V následujícím tutoriálu se dozvíte, jak nainstalovat LEMP (Nginx, MariaDB, PHP 8.0) na AlmaLinux 8 .

Předpoklady

  • Doporučený operační systém: AlmaLinux 8.
  • Uživatelský účet: Uživatelský účet s právy sudo nebo přístup root (příkaz su) .

Aktualizace operačního systému

Aktualizujte svůj AlmaLinux operační systém, abyste se ujistili, že všechny existující balíčky jsou aktuální:

sudo dnf upgrade --refresh -y

Výukový program bude používatpříkaz sudo a za předpokladu, že máte status sudo . Chcete-li ověřit stav sudo na vašem účtu:

sudo whoami

Ukázkový výstup zobrazující stav sudo:

[joshua@localhost ~]$ sudo whoami
root

Pokud jste si nenastavili uživatelský účet sudo a chtěli byste to udělat, navštivte náš návod Jak přidat uživatele do Sudoers na AlmaLinux .

Chcete-li použít rootový účet , použijte k přihlášení následující příkaz s heslem uživatele root.

su

Nainstalujte Nginx

Chcete-li zahájit instalaci zásobníku LEMP, budete muset nainstalovat webový server Nginx, což lze provést pomocí následujícího příkazu terminálu:

sudo dnf install nginx

Příklad výstupu:

Zadejte (Y), poté stiskněte (klávesa ENTER) pokračovat.

Potvrďte instalaci kontrolou verze sestavení:

nginx -v

Příklad výstupu:

nginx version: nginx/1.14.1

Ve výchozím nastavení není při instalaci Nginx na AlmaLinux povolen. Chcete-li povolit při spouštění a spustit, použijte následující:

sudo systemctl enable nginx && sudo systemctl start nginx

Příklad úspěšného povolení (symlink) :

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

Nyní zkontrolujte stav své služby Nginx pomocí následujícího příkazu terminálu:

systemctl status nginx

Příklad výstupu, který říká, že je vše v pořádku:

Je vhodné povolit provoz HTTP přes vaši bránu firewall pomocí následujícího příkazu:

sudo firewall-cmd --zone=public --add-service=http --permanent 

Znovu načtěte bránu firewall pomocí následujícího příkazu:

sudo firewall-cmd --reload

Nyní můžete potvrdit, že váš webový server Nginx je funkční, zadáním HTTP://server-ip nebo HTTP://název-domény ve vašem internetovém prohlížeči a měli byste získat následující:

Nainstalujte a nakonfigurujte MariaDB

Instalace

MariaDB je náhradní náhrada za MySQL a byla vyvinuta bývalými členy týmu MySQL, kteří se obávali, že by Oracle mohl z MySQL udělat uzavřený zdroj a potenciálně placený produkt.

Pro instalaci MariaDB zadejte následující příkaz:

sudo dnf install mariadb-server mariadb

Příklad výstupu:

Zadejte (Y), poté stiskněte (klávesa ENTER) pokračovat.

Chcete-li potvrdit instalaci MariaDB a zkontrolovat, jaké sestavení je nainstalováno, zadejte následující příkaz:

mysql --version

Příklad výstupu:

mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

Ve výchozím nastavení není MariaDB povolena stejně jako dříve Nginx. Chcete-li spustit a povolit MariaDB při spouštění systému, použijte následující (systemctl) příkaz terminálu:

sudo systemctl enable mariadb && sudo systemctl start mariadb

Příklad úspěšného povolení (symlink) :

Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

Nyní se pomocí následujícího příkazu ujistěte, že vše funguje:

systemctl status mariadb

Příklad výstupu, který říká, že je vše v pořádku:

Konfigurace

Nyní, když je MariaDB na vašem systému AlmaLinux spuštěna, musíte spustit bezpečnostní skript po instalaci, protože výchozí nastavení je třeba zkontrolovat, protože často nejsou bezpečná. Toto důrazně doporučujeme nepřeskakovat.

Nejprve spusťte příkaz zabezpečené instalace MariaDB takto:

sudo mysql_secure_installation

Dále budete vyzváni k zadání vašeho (rootového hesla MariaDB). Prozatím stiskněte (ENTER) klíč, protože heslo uživatele root ještě není nastaveno, jak je uvedeno níže:

Dále zadejte (Y) a stisknutím klávesy Enter nastavte (kořen) heslo níže:

Další sérii otázek můžete bezpečně stisknout (ENTER) , který odpoví (Y) na všechny následující otázky, které vás požadují (odstranit anonymní uživatele, zakázat vzdálené přihlášení root a odebrat testovací databázi) . Všimněte si (Y) je velká, což znamená, že se jedná o výchozí odpověď, když stisknete (ENTER) klíč.

Příklad níže:

Přehled toho, co mělo být provedeno výše:

  • Nastavení hesla pro root účty.
  • Odebrání účtů root, které jsou přístupné mimo místního hostitele.
  • Odebrání anonymních uživatelských účtů.
  • Odstranění testovací databáze, ke které mají ve výchozím nastavení přístup anonymní uživatelé.

Tento krok je nezbytný pro zabezpečení databáze MariaDB a neměl by být měněn ani přeskočen, pokud nevíte, co děláte.

Nyní se přihlaste k databázovému terminálu MariaDB pomocí následujícího příkazu:

sudo mysql -u root -p

Budete vyzváni k zadání hesla uživatele root, které jste nastavili buď v instalačním nastavení nebo ve skriptu zabezpečení po instalaci. Jakmile jste v instanci služby MySQL, můžete provést následující příkaz jako test, abyste ji viděli v provozu.

Zadejte následující příkaz SHOW DATABASE :

SHOW DATABASES;

Pro nové uživatele MySQL a MariaDB musí všechny příkazy končit „.

Příklad:

Chcete-li ukončit databázový terminál MariaDB, zadejte (exit;) následovně:

exit;

Nainstalujte PHP (PHP-FPM)

Importujte úložiště PHP 8.0

Poslední částí, kterou je třeba nainstalovat do vaší instalace LEMP, je PHP. Budete muset nainstalovat (PHP-FPM) což je zkratka pro (FastCGI Process Manager) . Důrazně se doporučuje nainstalovat PHP(Remi) úložiště. Pro ty, kteří nevědí, Remi je správcem vydání PHP na rodině Rhel. Pro tutoriál nainstalujeme nejnovější PHP 8.0:

Prvním úkolem je nainstalovat (EPEL ), což je zkratka pro (Extra Packages for Enterprise Linux). Pro novější uživatele Rhel a AlmaLinux obsahuje EPEL nejběžněji používané softwarové balíčky pro Enterprise Linux.

K instalaci EPEL použijte následující (dnf) příkaz terminálu:

sudo dnf install epel-release

Příklad výstupu:

Zadejte (Y), poté stiskněte (klávesa ENTER) pokračovat.

Nyní, když jste přidali úložiště EPEL, povolte (repozitář Remi) s následujícím:

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Zadejte (Y), poté stiskněte (klávesa ENTER) pokračovat.

Dále použijte (dnf) příkaz k aktualizaci seznamu úložišť:

sudo dnf update

Ve svém terminálu si všimnete dotazu na import (klíč GPG) pro úložiště Remi, jak je uvedeno níže:

Zadejte (Y), poté stiskněte (klávesa ENTER) pokračovat.

Všimněte si, že budete ještě dvakrát vyzváni k zadání (Y) ještě dvakrát pro import dalších klíčů GPG. To je v pořádku.

Dále budete vyzváni k aktualizaci vydání EPEL:

Příklad:

Zadejte (Y), poté stiskněte (klávesa ENTER) pokračovat.

Vaše úložiště EPEL je nyní aktuální a jste připraveni přejít k další části výukového programu.

Povolte úložiště PHP 8.0 (Remi)

PHP 7.2 je výchozí volbou PHP pro standardní instalaci na Rhel/Alma Linux s úložištěm Remi. Rychlý tip je použít (seznam php) zobrazíte dostupné možnosti a výchozí. Umí to následující příkaz:

sudo dnf module list php

Získáte následující výstup, jak je uvedeno níže. Všimněte si (d) tag pro výchozí PHP k instalaci:

Jak můžete vidět výše, značka (d) je vedle PHP 7.2, kterou budete muset resetovat a změnit, abyste mohli pokračovat v instalaci PHP 8.0 na AlmaLinux. Obnovení seznamu PHP je snadné pomocí následujícího příkazu:

sudo dnf module list reset php

Dále povolte PHP 8.0 pomocí následujícího příkazu:

sudo dnf module enable php:remi-8.0 -y

Příklad výstupu po dokončení:

Poznámka:můžete povolit PHP-7.4 pomocí příkazu reset modulu dnf a místo toho pomocí modulu dnf povolte příkaz php:remi-7.4. Vyberte verzi, kterou pro aplikaci požadujete, a toto byl jen příkladem toho, že máte nejnovější verzi PHP jakékoli volby PHP, kterou se rozhodnete.

Nainstalujte PHP 8.0

Nyní, když jste přidali úložiště Remi PHP a povolili PHP 8.0 jako výchozí verzi ve vašem systému AlmaLinux, můžete nainstalovat PHP 8.0 pomocí následujícího příkazu:

sudo dnf install php

Příklad výstupu:

Zadejte (Y), poté stiskněte (klávesa ENTER) pokračovat.

Pokud byste chtěli nainstalovat nejběžněji používaná rozšíření pro PHP 8.0, použijte následující příkaz:

sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imap php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml

Poznámka, odeberte možnosti, které nechcete, je to volitelné.

Příklad výstupu:

Zadejte (Y), poté stiskněte (klávesa ENTER) pokračovat.

Nyní, když jste nainstalovali PHP 8.0 a rozšíření, zkontrolujte verzi pomocí následujícího příkazu:

php -v

Příklad výstupu:

PHP 8.0.10 (cli) (built: Aug 24 2021 15:40:40) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies

A konečně, PHP-FPM jako Nginx a MariaDB předtím, než není ve výchozím nastavení povoleno, k povolení PHP-FPM při spouštění systému a jeho spuštění použijte následující (systemctl) příkaz:

sudo systemctl enable php-fpm && sudo systemctl start php-fpm

Příklad úspěšného povolení (symlink) :

Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Nyní, stejně jako dříve při kontrole stavu ostatních požadavků ve vaší instalaci LEMP, použijte následující (systemctl) terminálový příkaz pro kontrolu stavu, abyste se ujistili, že vše funguje:

systemctl status php-fpm

Pokud nejsou přítomny žádné chyby, měli byste získat následující výstup:

Na rozdíl od instalací LEMP na Debian/Ubuntu, které používají (www-data) uživatele, toto není případ instalací rodiny RHEL. Ve výchozím nastavení na AlmaLinuxu je služba PHP-FPM navržena pro spuštění (Apache) uživatel, což je nesprávné, protože používáme Nginx, a to bylo potřeba opravit.

Nejprve otevřete následující (www.conf) konfigurační soubor:

sudo nano /etc/php-fpm.d/www.conf

Dále nahraďte (Apache) uživatele a skupinu s (Nginx) uživatel a skupina:

Pro uložení stiskněte (CTRL+O) poté ukončete (CTRL+X) .

Nyní také znovu načtete nebo restartujete službu PHP-FPM:

sudo systemctl restart php-fpm

Vytvoření testovací vstupní stránky PHP

Chcete-li otestovat PHP-FPM s webovým serverem Nginx, musíte vytvořit soubor v adresáři webroot.

Pro průvodce pojmenujete soubor (info.php) takto:

sudo nano /usr/share/nginx/html/info.php

Vložte následující soubor (info.php) soubor:

<?php

phpinfo();

?>

Uložte soubor (CTRL+O), poté ukončete (CTRL+X) .

Nyní do adresního řádku internetového prohlížeče zadejte (adresa-ip-serveru/info.php) . Pokud jste na místním počítači nainstalovali Nginx, použijte výchozí (127.0.0.1/info.php) nebo (localhost/info.php) .

Měli byste vidět informace o PHP serveru:

Tyto informace ukazují, že skripty PHP mohou správně běžet s webovým serverem Nginx.

Z bezpečnostních důvodů byste měli soubor odstranit. Chcete-li to provést, použijte následující příkaz:

sudo rm -f /var/www/html/info.php

Pokud byste si soubor raději ponechali pro budoucí účely, přidejte do souboru bloku serveru Nginx na serveru {} následující sekce:

    location ^~ /info.php {
     allow <YOUR IP ADDRESS>; 
     deny all;
    }

To umožní přístup k souboru pouze zadané IP adrese. Doporučuje se skrýt co nejvíce informací o systému před potenciálními hackery a zlomyslnými aktéry.

Vytvořte blok serveru Nginx

Blok serveru Nginx je ekvivalentem virtuálního hostitele v Apache, který obsahuje konfiguraci pro váš webový server Nginx, která odpovídá veřejným návštěvníkům. Níže je kompletní příklad toho, jak toho dosáhnout s ohledem na PHP-FPM.

Vytvořit adresáře bloků serveru

Soubor (.conf) soubory jsou obvykle umístěny v (stránky-dostupné) a (povoleny weby). Uživatelé pocházející z různých distribucí by si všimli, že by to bylo již nainstalováno; pro AlmaLinux je však budete muset vytvořit.

Vytvořte dva požadované (stránky) adresáře pomocí následujícího příkazu:

sudo mkdir /etc/nginx/sites-available && sudo mkdir /etc/nginx/sites-enabled

Upravte konfigurační soubor Nginx

Po vytvoření potřebných adresářů upravte hlavní konfigurační soubor Nginx (nginx.conf) takto:

sudo nano /etc/nginx/nginx.conf

Poté vložte několik následujících řádků do (HTTP) části souboru (nginx.conf) konfigurační soubor:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Příklad:

Poznámka:(server_names_hash_bucket_size) zvyšuje paměť přidělenou analýze názvů domén.

Uložte konfiguraci pomocí (CLTR+O) a poté (CTRL+X) pro ukončení.

Vytvořit soubor konfigurace bloku serveru

Nyní vytvořte soubor bloku serveru pomocí libovolného textového editoru, průvodce bude používat (nano) :

sudo nano /etc/nginx/sites-available/example.com.conf

Dále musíte nastavit konfigurační soubor s funkčním příkladem s povoleným PHP-FPM.

Níže je uveden příklad, který můžete zkopírovat a vložit. Poznámka k nahrazení (název_serveru) s názvem vaší domény nebo IP:

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;
  root /var/www/html/example.com/;
  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-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

  }

 # 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;
  }
}

Nyní uložte blok serveru pomocí (CTRL+O), poté ukončete pomocí (CTRL+X) .

Vytvořit testovací vstupní stránku

Dobrým nápadem je vytvořit vzorový testovací web. Níže je standardní nastavení testu index.html:

Pokud jste si ještě nevytvořili svůj trvalý nebo testovací webový adresář:

sudo mkdir -p /var/www/htmlexample.com/

Budete muset nakonfigurovat oprávnění a můžete nastavit jako uživatel aktuálně přihlášený pomocí $USER proměnná:

sudo chown -R $USER:$USER /var/www/html/example.com/

Posledním nastavením oprávnění je umožnit veřejnosti číst webový adresář (přístup k vašemu webu) pomocí oprávnění chmod 755:

sudo chmod -R 755 /var/www

Dále vytvořte index.html soubor:

sudo nano /var/www/html/example.com/index.html

Vložte obsah níže. Jak vidíte, je to docela základní, protože jej používáme pouze pro testovací účely.

<html>
  <head>
    <title>You have reached Example.com!</title>
  </head>
  <body>
    <h1>Congratulations! The server block is active!</h1>
  </body>
</html>

Uložte konfiguraci pomocí (CLTR+O) a poté (CTRL+X) pro ukončení.

Povolit blokování serveru Nginx

Nyní jste v závěrečné fázi a nyní je čas povolit konfigurační soubor bloku serveru. Chcete-li tak učinit, musíte vytvořit symbolický odkaz (symlink) pro konfigurační soubor bloku serveru v (stránky-dostupné) do adresáře (sites-enabled) adresář pomocí následujícího příkazu:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

Otestujte blok serveru Nginx

Chcete-li to dokončit, měli byste vždy před restartováním nebo opětovným načtením služby Nginx provést zkušební provoz, což je při práci v živém prostředí zásadní. Chcete-li otestovat konfigurační soubor bloku serveru, zadejte následující příkaz:

sudo nginx -t

Pokud nejsou žádné chyby, dostanete následující výstup:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Dále otevřete internetový prohlížeč a zadejte adresu své domény (example.com) otestovat, zda je váš server dostupný.

Gratulujeme, úspěšně jste vytvořili blok serveru Nginx, který je PHP-FPM připraveno.

Zabezpečte Nginx pomocí bezplatného certifikátu Let's Encrypt SSL

V ideálním případě byste chtěli spustit svůj Nginx na HTTPS pomocí certifikátu SSL . Nejlepší způsob, jak toho dosáhnout, je použít Let’s Encrypt bezplatná, automatizovaná a otevřená certifikační autorita provozovaná neziskovou organizací Internet Security Research Group (ISRG) .

Nejprve nainstalujte EPEL úložiště a mod_ssl balíček pro lépe aktualizované balíčky a zabezpečení.

sudo dnf install epel-release mod_ssl -y

Dále nainstalujte balíček certbot takto:

sudo dnf install python3-certbot-nginx -y

Po instalaci spusťte následující příkaz pro zahájení vytváření vašeho certifikátu:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Toto je ideální nastavení, které zahrnuje vynucená přesměrování HTTPS 301, hlavičku Strict-Transport-Security a sešívání OCSP. Jen nezapomeňte upravit e-mail a název domény podle svých požadavků.

Nyní bude vaše adresa URL HTTPS://www.example.com namísto HTTP://www.example.com .

Poznámka:Pokud používáte starou URL HTTP , automaticky se přesměruje na HTTPS .

Volitelně můžete nastavit úlohu cron pro automatickou obnovu certifikátů. Certbot nabízí skript, který to dělá automaticky, a vy můžete nejprve otestovat, abyste se ujistili, že vše funguje pomocí suchého běhu.

sudo certbot renew --dry-run

Pokud vše funguje, otevřete okno crontab pomocí následujícího příkazu terminálu.

sudo crontab -e

Dále zadejte čas, kdy se má automaticky obnovit. Toto by mělo být kontrolováno minimálně denně, a pokud je potřeba certifikát obnovit, skript certifikát neaktualizuje. Pokud potřebujete pomoc s nalezením vhodného času pro nastavení, použijte bezplatný nástroj crontab.guru.

00 00 */1 * * /usr/sbin/certbot-auto renew

Uložit (CTRL+O) poté ukončete (CTRL+X), a cronjob bude automaticky povolen.


AlmaLinux
  1. Jak nainstalovat LEMP stack na AlmaLinux

  2. Jak nainstalovat Nginx s PHP a MySQL (LEMP Stack) na CentOS 7

  3. Jak nainstalovat Nginx, MariaDB a PHP (FEMP) Stack na FreeBSD

  1. Jak nainstalovat Nginx s PHP a MariaDB (LEMP Stack) na Fedora 31

  2. Jak nainstalovat Nginx s PHP a MySQL (LEMP Stack) na CentOS 7.6

  3. Jak nainstalovat Nginx s PHP a MariaDB (LEMP Stack) s Opcache, Redis a Lets Encrypt na Fedoře 32

  1. Jak nainstalovat Nginx, MariaDB, PHP (LEMP stack) na Debian 9

  2. Jak nainstalovat LEMP Stack na Debian 10

  3. Jak nainstalovat Nginx, MariaDB, PHP (LEMP Stack) na Debian 11