GNU/Linux >> Znalost Linux >  >> Fedora

Jak nainstalovat Nginx na Fedoru 35

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 a nakonfigurovat Nginx na Fedoře 35 s bezplatným certifikátem TLS/SSL od Let’s Encrypt.

Předpoklady

  • Doporučený operační systém: Fedora Linux 35
  • Uživatelský účet: Uživatelský účet s přístupem sudo nebo root.

Aktualizujte operační systém

Aktualizujte svou Fedoru 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@fedora ~]$ sudo whoami
root

Chcete-li nastavit stávající nebo nový účet sudo, navštivte náš tutoriál o Přidání uživatele do Sudoers na Fedoře .

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 Stable nebo Mainline

Instalace Nginxu je na distribucích Fedory velmi snadná vzhledem k šestiměsíčním vydáním a jeho neustálá aktualizace balíčků během jeho doby znamená, že Nginx je z větší části vždy aktuální.

Vzhledem k tomu, že Fedora je zvyklá mít nejaktuálnější balíčky, nejprve povolte hlavní úložiště, které Nginx doporučuje používat.

sudo dnf module enable nginx:mainline

Příklad výstupu:

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

Dále otevřete svůj terminál a spusťte následující příkaz pro zahájení procesu instalace.

sudo dnf install nginx

Příklad výstupu:

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

Po instalaci potvrďte instalaci kontrolou verze sestavení Nginx.

nginx -v

Ukázkový výstup (pomocí příkladu hlavní řady):

nginx version: nginx/1.21.3

Ve výchozím nastavení není služba Nginx po instalaci povolena ani aktivní. Chcete-li povolit Nginx, použijte následující příkaz.

sudo systemctl enable nginx --now

Nyní zkontrolujte stav služby a ujistěte se, že Nginx běží bez jakýchkoli chyb.

systemctl status nginx

Příklad výstupu:

Jak je uvedeno výše, stav by měl být aktivní (spuštěno) . V tomto okamžiku jste nainstalovali aplikaci Nginx.

Konfigurace pravidel brány firewall

Ve výchozím nastavení instalace automaticky nepřidává pravidla brány firewall na standardní port 80 nebo 443 při instalaci Nginx. 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

Nakonfigurujte 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 svém internetovém prohlížeči byste měli získat následující stránku.

Příklad:

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 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 zpřístupněte adresáře potřebné proweby a povoleno pro weby.

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;“ .

sudo nano /etc/nginx/nginx.conf

Poté 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;

 server_name your_domain www.your_domain;
 root /var/www/your_domain/html;

  index index.html index.htm;

 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) .

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 ideální nastavení 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 .

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

Ve výchozím nastavení se většina systémů Fedory nedodává s nainstalovaným Cronem. Chcete-li jej nainstalovat, použijte následující příkaz.

sudo dnf install cronie -y

Otevřete crontab pomocí následujícího příkazu.

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

Nyní soubor uložte stisknutím (SHIFT) a (:) poté zadejte (wa), který soubor uloží, poté ukončete stejnou metodou pomocí (qa) .

V terminálu byste měli vidět následující výstup, abyste viděli, zda přidání nové úlohy bylo úspěšné.

crontab: installing new crontab

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

Chcete-li resetovat modul nginx z hlavní řady zpět na výchozí, použijte následující příkaz.

sudo dnf modules reset nginx

Fedora
  1. Jak nainstalovat CMake na Fedoru 35

  2. Jak nainstalovat Grafana na Fedoru 35

  3. Jak nainstalovat PHP 8 na Fedoru 35

  1. Jak nainstalovat Spotify na Fedoru 35

  2. Jak nainstalovat Slack na Fedoru 35

  3. Jak nainstalovat Steam na Fedoru 35

  1. Jak nainstalovat telegram na Fedoru 35

  2. Jak nainstalovat GIMP na Fedoru 35

  3. Jak nainstalovat Elasticsearch na Fedoru 35