GNU/Linux >> Znalost Linux >  >> AlmaLinux

Jak nainstalovat Nginx na AlmaLinux 8

NGINX je bezplatný serverový software HTTP s otevřeným zdrojovým kódem. Kromě schopností HTTP serveru může NGINX fungovat také jako proxy server pro e-mail (IMAP, POP3 a SMTP) a reverzní proxy a nástroj pro vyrovnávání zatížení pro servery HTTP, TCP a UDP. Cílem NGINX bylo vytvořit nejrychlejší webový server v okolí a zachování této dokonalosti je stále hlavním cílem projektu Nginx. NGINX trvale poráží Apache a další servery v benchmarcích měření výkonu webového serveru a je nyní nejoblíbenějším používaným webovým serverem podle W3Tech.

V tutoriálu se dozvíte, jaknainstalovat Nginx na AlmaLinux 8 s TLS/SSL certifikátem zdarma od Let’s Encrypt.

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

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

Chcete-li nastavit stávající nebo nový účet sudo, 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

Metoda 1. Nainstalujte Nginx z AlmaLinux AppStream

První metodou je instalace Nginx ze streamu aplikace AlmaLinux. Tato verze je starší, ale stabilní a bezpečná. Pokud potřebujete spustit primární webový server nebo reverzní proxy, často se doporučuje nainstalovat úložiště App Stream.

Chcete-li nainstalovat Nginx, spusťte následující příkaz.

sudo dnf install nginx

Příklad výstupu:

Zadejte Y a poté stiskněte klávesu ENTER pokračujte v instalaci.

Dále ověřte sestavení verze a zda byla instalace úspěšná.

sudo nginx -v

Příklad výstupu:

nginx version: nginx/1.14.1

Všimněte si, že vaše výstupy se budou lišit v závislosti na modulu, který povolíte.

Než budete pokračovat, musíte spustit službu Nginx.

sudo systemctl start nginx

Dále ověřte stav, abyste se ujistili, že nejsou žádné chyby.

systemctl status nginx

Příklad výstupu, pokud vše funguje správně:

Metoda 2. Nainstalujte Nginx z EPEL

Druhou možností je nainstalovat Nginx z úložiště EPEL. To vám přinese mnohem aktuálnější verzi Nginx, která je stále považována za stabilní, než instalace zastaralých nejnovějších verzí od samotného Nginx. Tento proces je poměrně snadný.

Nejprve nainstalujte úložiště EPEL:

sudo dnf install epel-release

Příklad výstupu:

Zadejte „Y“, poté stiskněte klávesu ENTER pokračujte v instalaci.

Nyní pomocí EPEL nainstalován, musíte resetovat moduly Nginx.

sudo dnf module reset nginx

Dále vypište dostupné moduly dostupné s dnf ze všech známých úložišť.

sudo dnf module list nginx

Příklad výstupu:

Jak je uvedeno výše, můžete buď přejít na vyšší verzi stabilní nebo hlavní řady. Všimněte si, že stabilní verze je vždy v čísle sestavení a hlavní řada je přirozeně hlavní řada.

Chcete-li aktivovat některý z nových modulů od EPEL, použijte ve svém terminálu následující.

Povolit nejnovější stabilní:

sudo dnf module enable nginx:1.20

Poznámka pro stabilní Nginx EPEL: To se může v budoucnu změnit. Nezapomeňte uvést moduly a ne jen zkopírovat a vložit.

Povolit nejnovější hlavní řadu:

sudo dnf module enable nginx:mainline

Nyní nainstalujte Nginx:

sudo dnf install nginx

Příklad výstupu:

Zadejte Y poté stiskněte klávesu ENTER pokračujte v instalaci.

Dále ověřte sestavení verze a zda byla instalace úspěšná.

sudo nginx -v

Ukázkový výstup (hlavní řádek):

nginx version: nginx/1.19.10

Všimněte si, že vaše výstupy se budou lišit v závislosti na modulu, který povolíte.

Než budete pokračovat, musíte spustit službu Nginx.

sudo systemctl enable nginx --now

Dále ověřte stav, abyste se ujistili, že nejsou žádné chyby.

systemctl status nginx

Příklad výstupu, pokud vše funguje správně:

Konfigurace pravidel brány firewall

Při instalaci Nginx automaticky nepřidává pravidla brány firewall ke standardním portům 80 nebo 443. Než budete pokračovat, měli byste nastavit následující pravidla, to bude záviset na tom, jaké porty budete používat, ale všechny možnosti jsou uvedeny.

Otevřete port 80 nebo HTTP:

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

Otevřete port 443 nebo HTTPS:

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

Znovu načtěte bránu firewall, aby se změny projevily

sudo firewall-cmd --reload

Konfigurace serveru Nginx

Pro nastavení budete muset mít připravenou IP adresu serveru. Nejjednodušší způsob, jak toho dosáhnout, je následující.

Najít IP adresu serveru

Pro nastavení budete muset mít připravenou IP adresu serveru. Nejjednodušší způsob, jak toho dosáhnout, je následující.

curl -4 icanhazip.com

Příklad výstupu:

XXX.XXX.XXX.XXX IP address

Pokud příkazy nefungují, pravděpodobně nemáte nainstalovaný balíček curl. Spusťte následující příkaz:

sudo dnf install curl -y

Jakmile budete mít IP adresu svého serveru, otevřete svůj oblíbený internetový prohlížeč a zkontrolujte, zda výchozí vstupní stránka funguje.

http://your_server_ip

Ve vašem internetovém prohlížeči byste měli získat následující stránku. Pokud se vám nezobrazuje tato stránka, ale chybová stránka Nginx, je to v pořádku, protože vydání EPEL se může lišit. Testujete, abyste se ujistili, že se dostanete na server Nginx.

Nastavení adresáře zdroje webu

V tutoriálu si nastavíte doménu s názvem example.com , ale měli byste jej nahradit názvem vaší domény . Výukový program vytvoří webové adresáře a nakonfiguruje soubory webu v nadřazeném adresáři /var/www/ .

Nejprve vytvořte adresář pro example.com , následovně pomocí “-p“ flag pro vytvoření všech nezbytných nadřazených adresářů:

sudo mkdir -p /var/www/your_domain/html

Za druhé, budete muset přiřadit vlastníka adresáře.

sudo chown -R $USER:$USER /var/www/your_domain/html

Za třetí, přiřaďte oprávnění adresáře, aby vlastník mohl číst, zapisovat a spouštět soubory, přičemž skupinám a ostatním uděloval pouze oprávnění ke čtení a spouštění. Můžete zadat následující příkaz:

sudo chmod -R 755 /var/www/your_domain

Případně můžete použít /usr/share/nginx/html místo toho adresář, ale /var/www pro nové uživatele se doporučuje adresářová metoda.

Nastavit testovací stránku HTML

Za čtvrté, vytvořte testovací stránku, kterou budete používat k potvrzení funkčnosti serveru Nginx.

nano /var/www/your_domain/html/index.html

Uvnitř editoru nano a nového souboru, který jste vytvořili. Zadejte následující.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

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

Vytvořit blok serveru Nginx

Ve výchozím nastavení je blok serveru Nginx, podobný virtuálním hostitelům Apache, řešen v souboru /etc/nginx/conf.d adresář. Instalace Nginx se však liší od různých verzí a distribucí využívajících buď conf.d nebo sites-available/sites-enabled ve výchozím stavu. Pro tutoriál budou použity adresáře webu, aby byl zachován standard.

Nejprve vytvořte adresáře potřebné pro weby dostupné a povoleno pro weby . Uživatelé Nginx by toto nastavení také znali.

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

Dále otevřete svůj soubor nginx.conf a odeberte nebo okomentujte „include /etc/nginx/default.d/*.conf;“ a přímo pod něj přidejte „/etc/nginx/sites-enabled/*.conf;“ .

Pouze příklad:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

###EDIT HERE###
#  include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Stejně jako výše, „#“ komentář byl přidán do include conf.d řádek a zahrnout stránky s povoleným obsahem byl přidán.

Uložte soubor (CTRL+O) a ukončete (CTRL+X) .

Dále vytvořte konfigurační soubor bloku serveru. Pro výukový program bude použit název vase_domena.conf, ale lze jej pojmenovat jakkoli chcete.

sudo nano /etc/nginx/sites-available/your_domain.conf

Do bloku můžete vložit následující příklad kódu. Toto je pouze příklad pouze HTTP pro základní testování.

server {
 listen 80;
 listen [::]:80;

 root /var/www/your_domain/html;

  index index.html index.htm;
  server_name your_domain www.your_domain;

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

Příklad ukazuje, že váš server naslouchá dvěma názvům serverů, vaše_doména na portu 80.

Budete muset změnit kořenový adresář na název/umístění kořenového adresáře, který vytvoříte.

Povoleno blokování serveru Nginx

Chcete-li povolit bloky serveru Nginx, musíte propojit konfigurační soubory z dostupných webů s povolenými weby v adresáři Nginx. To lze provést pomocí příkazu ln -s následovně.

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

Konečná konfigurace a zkušební provoz

V poslední fázi budete muset otevřít svůj výchozí nginx.conf soubor.

sudo nano /etc/nginx/nginx.conf

A odkomentujte následující řádek.

server_names_hash_bucket_size 64;

Velikost segmentu hash názvu serveru se změní, protože někdy vznikají problémy s přidáváním dalších serverů.

Dále otestujte svůj Nginx, abyste se ujistili, že funguje, než se správně restartuje.

sudo nginx -t

Výstup by měl být, pokud v syntaxi nejsou žádné chyby:

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

Pokud máte následující výstup v pořádku, restartujte server Nginx, aby se změny projevily.

sudo systemctl restart nginx

Nyní otevřete svůj internetový prohlížeč a zadejte název domény serveru. Měli byste vidět, že váš blok serveru je aktivní.

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.

Správa služby Nginx

Nyní, když máte Nginx na svém serveru úspěšně spuštěný, některé klíčové poznámky pro správu jsou následující.

Chcete-li zastavit webový server Nginx:

sudo systemctl stop nginx

Spuštění webového serveru Nginx:

sudo systemctl start nginx

Restartování webového serveru Nginx:

sudo systemctl restart nginx

Chcete-li znovu načíst webový server Nginx (pro další menší změny nevyžadující restart) :

sudo systemctl reload nginx

Chcete-li zakázat Nginx při spouštění serveru:

sudo systemctl disable nginx

Spuštění Nginx při spouštění serveru (automaticky povoleno při instalaci) :

sudo systemctl enable nginx

Jak získat přístup k protokolům serveru Nginx

Adresář protokolů Nginx

Ve výchozím nastavení jsou všechny protokoly přístupu/chyb NGINX, pokud jste je nezměnili, umístěny v adresáři protokolů, který může zobrazit následující příkaz.

Nejprve přejděte do adresáře logs a seznam souborů:

cd /var/log/nginx && ls -l

Měli byste najít následující přístupové a chybové soubory:

Protokol přístupu:

/var/log/nginx/access.log

Protokol chyb:

/var/log/nginx/error.log

Chcete-li zobrazit protokoly v reálném čase ve vašem terminálu pomocí příkazu sudo tail -f /location/of/log path.

Příklad:

sudo tail -f /var/log/nginx/access.log

Další možností je vytisknout posledních X řádků. Například X je nahrazeno 30, aby se vytisklo 30 řádků přidáním parametru -n 30 .

sudo tail -f /var/log/nginx/access.log -n 30

Toto jsou jen některé příklady čtení protokolů a grep může být také užitečný.

Jak nakonfigurovat otáčení protokolu Nginx

Nginx automaticky nainstaluje rotaci protokolů a nakonfiguruje ji na výchozí, což je rotace denně. Tato nastavení můžete změnit přístupem k souboru, jak je uvedeno níže.

sudo nano /etc/nginx/logrotate.d/nginx

Dále uvidíte stejnou, ne-li podobnou strukturu souborů. Zde můžete upravit obsah. Většinou můžete změnit počet protokolů, které se mají uchovávat, nebo přejít z denních na týdenní. Toto by mělo být ponecháno ve výchozím nastavení, pokud nemáte specifické požadavky na protokoly pro software, jako je sledování fail2ban nebo podobné.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

Hlavní nastavení, které budete pravděpodobně chtít změnit, je následující:

  • Denně – Toto lze změnit na Weekly, Monthly. Toto by mělo být uchováváno denně, jinak bude procházení souboru protokolu obtížné.
  • Otočit 14 – To je počet protokolů, které je třeba ponechat a odstranit, takže maximum je pouze 14 protokolů, pokud chcete uchovávat pouze protokoly za 7 dní, změňte toto na 7.

Doporučuje se nedotýkat se žádných dalších nastavení, pokud nevíte, co děláte.

Jak aktualizovat Nginx

Nginx se ve výchozím nastavení aktualizuje, když se do repozitářů dostane nová verze. Před upgradem se vždy doporučuje zálohovat adresář Nginx nebo přinejmenším nginx.conf soubor. Obojí můžete provést pomocí následujícího příkazu.

Zálohujte nginx.conf (vysoce doporučeno):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Pokud chcete, zálohujte si celou složku Nginx:

sudo cp /etc/nginx/ /etc/nginx-bkup

Dále spusťte standardní příkaz aktualizace.

sudo dnf upgrade --refresh

Pokud je k dispozici aktualizace, spusťte ji.

K tomu můžete být vyzváni během upgradu nebo instalace, ale ruční provedení předem je docela zásadní. Pro velké konfigurace Nginx s více weby by bylo zálohování na něco jako Github nebo Gitlab ještě výhodnější.

Jak odebrat (odinstalovat) Nginx

Chcete-li odebrat Nginx, pokud jej již nepoužíváte, lze to provést pomocí následujícího příkazu:

sudo dnf autoremove nginx

Tento příkaz také odstraní všechny nepoužívané závislosti dodané s instalací.

Pamatujte, že pokud instalujete Nginx pomocí EPEL a chcete jej resetovat, abyste znovu nainstalovali původní verzi, použijte následující příkaz, jak bylo uvedeno výše.

sudo dnf modules reset nginx

AlmaLinux
  1. Jak nainstalovat Nginx na Ubuntu 16.04

  2. Jak nainstalovat Nginx na CentOS 7

  3. Jak nainstalovat Nginx na Debian 9

  1. Jak nainstalovat MongoDB na AlmaLinux 8

  2. Jak nainstalovat Nginx na Debian 11

  3. Jak nainstalovat Nginx na Fedoru 35

  1. Jak nainstalovat Lighttpd na AlmaLinux 8

  2. Jak nainstalovat PrestaShop na Almalinux 8

  3. Jak nainstalovat Python 3.10 na AlmaLinux 8