GNU/Linux >> Znalost Linux >  >> Linux

25 Musí znát příkazy Nginx pro vývojáře a správce

Nginx je jedním z nejoblíbenějších webových serverů mezi uživateli Linuxu a BSD díky své bohaté sadě funkcí a vynikající flexibilitě. Pokud jste webový vývojář, je pravděpodobné, že pracujete se serverem Nginx nebo Apache. Je tedy nezbytné do hloubky porozumět tomu, jak Nginx funguje z příkazového řádku. Naštěstí můžete zlepšit své dovednosti DevOps zvládnutím několika příkazů Nginx. Naši redaktoři pro vás vybrali tyto často používané příkazy a poskytli obsáhlou diskusi pro začínající správce Linuxu. Pokračujte ve čtení a zjistěte více o těchto příkazech.

Užitečné příkazy Nginx pro správce systému Linux

Na rozdíl od mnoha webových serverů se Nginx zabývá konfigurací serveru pouze pomocí konfiguračního souboru. Existuje tedy pouze několik parametrů příkazového řádku, které můžete použít. To je užitečné, protože administrátoři mohou rychle najít příkazy, které hledají. Níže jsou uvedeny některé široce používané příkazy Nginx, které můžete dnes používat.

Instalace webového serveru Nginx v systému Linux

Nginx nabízí několik instalačních balíčků pro různé varianty Linuxu. Najdete je zde. Můžete také nainstalovat Nginx přímo pomocí správce balíčků, jak je znázorněno níže.

$ sudo apt install nginx                                # Ubuntu
$ sudo dnf install nginx                                # Fedora
$ sudo yum install epel-release && yum install nginx    # RHEL and CentOS

Je také možné zkompilovat Nginx ze zdroje. Podrobnosti o tom najdete v této příručce.

1. Spusťte Nginx Server

Je velmi snadné spustit webový server Nginx, jak je ukázáno níže. Jednoduše použijte jeden z níže uvedených příkazů k vyvolání standardního webového serveru.

$ sudo service nginx start
--

Když zadáte tento příkaz, Nginx se spouští iniciačním skriptem System V. Pokud používáte Nginx ze systému založeného na systemd, jako je Ubuntu Linux 16.04LTS a vyšší, budete muset použít níže uvedený příkaz.

$ sudo systemctl start nginx

Měli byste dostat odpověď ukazující, zda se server úspěšně spustil nebo ne. Další jednoduchou, ale účinnou metodou je zavolat Nginx přímo pomocí binární cesty, jak je uvedeno níže.

$ sudo /usr/bin/nginx

2. Zastavte server Nginx

Můžete také zastavit běžící server Nginx pomocí podobných metod uvedených výše. Pamatujte však, že když zastavíte běžící server Nginx, všechny systémové procesy s ním spojené budou zabity. Ukončí se, i když máte aktivní připojení.

$ sudo service nginx stop

Tento příkaz zastaví proces Nginx v systémech, které používají iniciační skript System V. Pro počítače založené na systemd lze použít následující příkaz.

$ sudo systemctl stop nginx

Tyto příkazy však mohou na zaneprázdněných serverech stále trvat značnou dobu. Další příkaz ukazuje, jak zastavit službu Nginx rychlejším způsobem.

$ sudo killall -9 nginx

3. Ukončete server Nginx

Ukončení serveru Nginx je podobné jeho zastavení – s jedním zřetelným rozdílem. Démon Nginx používá elegantní přístup k ukončení v tom smyslu, že nepřeruší žádná aktivní připojení. Takže vaše požadavky klientů budou před vypnutím obslouženy podle očekávání.

$ sudo service nginx quit

Tento příkaz použijte k ukončení serveru Nginx z prostředí Linux. Uživatelé, kteří používají počítač založený na systemd, mohou k provedení této úlohy použít další příkaz.

$ sudo systemctl quit nginx

Pro ukončení běžícího serveru můžete také použít jeden z následujících příkazů Nginx.

$ sudo nginx -s quit
$ sudo kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid )

4. Restartujte server Nginx

Když provedete restart serveru, proces Nginx se jednoduše zastaví a poté znovu spustí. K restartování démona Nginx z příkazového řádku můžete použít jeden z níže uvedených příkazů.

$ sudo service nginx restart

Tento příkaz restartuje server Nginx pomocí iniciačního skriptu System V. Můžete použít systemctl za to v systému založeném na systemd, jako jsou novější verze Ubuntu.

$ sudo systemctl restart nginx

Můžete to také provést jiným způsobem, jak ukazuje následující příklad.

$ sudo /etc/init.d/nginx restart

Pokud jste zkompilovali Nginx ze zdroje, můžete použít následující příkaz.

$ sudo /usr/local/nginx/sbin/nginx -s restart

5. Znovu načtěte server Nginx

Opětovné načtení serveru Nginx se mírně liší od restartování. Když znovu načtete server, Nginx se elegantně vypne. To znamená, že démon Nginx se nejprve ukončí, poté analyzuje konfigurační soubor pro pokusy o změny a spustí nový pracovní proces bez přerušení operací.

$ sudo service nginx reload
$ sudo systemctl status nginx

První příkaz používá iniciační skript System V, zatímco poslední příkaz je pro distribuce Linuxu založené na systemd. K provedení této úlohy můžete také vyvolat následující skript.

$ sudo /etc/init.d/nginx reload

Pokud jste zkompilovali Nginx ze zdrojového kódu, měli byste použít následující příkaz.

$ sudo /usr/local/nginx/sbin/nginx -s reload

Další příkaz je další praktický způsob, jak elegantně restartovat váš server Nginx.

$ sudo nginx -s reload

6. Zkontrolujte stav Nginx

Někdy možná budete chtít zobrazit aktuální stav vašeho serveru Nginx, než na něm provedete jakékoli operace. To lze provést velmi rychle pomocí jednoho z níže uvedených příkazů. Nezapomeňte sudo váš příkaz nebo se přepněte na uživatele root.

$ sudo service nginx status

Jak je znázorněno v některých předchozích příkazech, tento příkaz funguje tak, že inicializuje inicializační skript System V. Následující příkaz můžete použít pro systémy, které používají systemd místo toho.

$ systemctl status nginx

Dalším způsobem, jak toho dosáhnout, by bylo použít přímo skript Nginx init.d, jak ukazuje následující příkaz.

$ sudo /etc/init.d/nginx status

Pokud je Nginx zkompilován ze zdrojového kódu, následuje další příkaz.

$ sudo /usr/local/nginx/sbin/nginx -s status

7. Zkontrolujte konfiguraci Nginx

Vzhledem k tomu, že existuje široká škála možností přizpůsobení Nginx, správci sítě často potřebují vyladit konfigurační soubor, aby přidali/odemkli nové funkce. Vždy byste však měli otestovat svůj konfigurační soubor na potenciální chyby. Jinak mohou uživatelé se zlými úmysly využít chyby v konfiguraci vašeho serveru.

$ sudo nginx -t

Toto je jednoduchý příkaz, který tuto práci udělá za vás. Když to spustíte, v podstatě říkáte Nginxu, aby zkontroloval konfigurační soubor na chyby syntaxe a zdržel se spuštění serveru. Následující příkaz můžete použít k výpisu výsledku testu konfigurace na vaši terminálovou konzoli.

$ sudo nginx -T

Můžete také použít jeden z následujících příkazů Nginx k otestování konfigurace vašeho serveru Nginx.

$ sudo service nginx configtest   # System V Init
$ sudo systemctl config nginx     # systemd-based

8. Odesílejte signály do Nginx

Správci mohou démonu Nginx posílat různé užitečné signály. Budete muset použít -s příznak k odeslání signálu do Nginx, po kterém následuje skutečný signál. Už jsme viděli signály v akci, když jsme je použili k ukončení a opětovnému načtení našeho serveru Nginx. Zde je specifikujeme v pořadí.

$ sudo nginx -s stop     # stops a running Nginx server
$ sudo nginx -s quit     # quits Nginx server
$ sudo nginx -s reload   # gracefully restarts Nginx
$ sudo nginx -s reopen   # reopens server log file

Vaše verze Nginx by však měla být alespoň 0.7.53 nebo vyšší. V opačném případě nemůžete odesílat signály do procesů Nginx.

9. Zobrazení informací o verzi Nginx

Některé novější funkce Nginx jsou dostupné pouze pro nejnovější verze. Správci se tedy mohou potýkat s problémy s kompatibilitou na starších serverech. Můžete snadno určit svou verzi Nginx a zjistit, zda vaše problémy mají něco společného s verzí serveru nebo ne.

$ sudo service nginx -v       # uses System V Init
$ sudo systemctl -v nginx     # for systemd-based distributions

Následující příkazy lze použít k zobrazení dalších informací týkajících se vaší instalace Nginx, jako jsou konfigurační proměnné a verze kompilátoru.

$ sudo service nginx -V
$ sudo systemctl -V nginx

Kromě toho, pokud používáte linuxový server založený na Ubuntu nebo Debianu, můžete pomocí následujícího příkazu zjistit svou verzi Nginx.

$ sudo apt-cache policy nginx

10. Zobrazit stránku nápovědy

Stránka nápovědy Nginx je skvělým referenčním bodem pro začátečníky i zkušené správce Linuxu. K zobrazení této reference z emulátoru terminálu Linux můžete použít jeden z následujících příkazů Nginx.

$ sudo service nginx -h     # uses System V Init
$ sudo systemctl -h nginx   # for systemd-based distributions

K provedení této úlohy můžete také použít následující příkazy.

$ sudo service nginx -?     # uses System V Init
$ sudo systemctl -? nginx   # for systemd-based distributions

Odkaz na stránku nápovědy je vždy vynikající volbou, protože umožňuje rychlý pohled na možnosti, které má uživatel k dispozici.

11. Použijte alternativní konfiguraci

Webové servery Nginx nabízejí nekonečný seznam možností přizpůsobení. Správci mohou snadno vyladit konfigurační soubor Nginx a přidat na svůj server další funkce. Výchozí konfigurační soubor Nginx na většině systémů je /etc/nginx/nginx.conf. Často je však dobrým zvykem implementovat svá přizpůsobení nejprve do alternativního konfiguračního souboru.

$ sudo nginx -c ~/test.conf

Všimněte si, že předpokládáme, že váš nový konfigurační soubor se jmenuje test.conf. Nahraďte tuto část skutečným názvem vašeho konfiguračního souboru. Nyní můžete otestovat své nové konfigurace pomocí níže uvedeného příkazu.

$ sudo nginx -t -c ~/test.conf

Můžete také instruovat Nginx, aby při kompilaci ze zdroje hledal výchozí konfiguraci v jiném adresáři. Jednoduše předejte tento adresář při konfiguraci instalace.

# ./configure --conf-path=/etc/some/other/nginx.conf

12. Potlačit Non-Error Messages

Při testování nových konfigurací je normální dostávat chybové zprávy. Při kontrole vašich přizpůsobení však získáte také mnoho nepodstatných informací. Naštěstí démon Nginx nabízí jednoduchou možnost potlačení těchto nechybových zpráv, jak je ukázáno níže.

$ sudo nginx -q -t -c ~/test.conf

Tento příkaz otestuje vlastní konfigurační soubor s názvem test.conf a vynechá z výstupu nepotřebné informace. Je to docela užitečné pro úlohy vzdálené správy serveru.

13. Změna globální směrnice

Globální direktiva obsahuje všechny konfigurační parametry dostupné pro váš server Nginx. Je to jedna z nejcitlivějších částí vašeho webového serveru a vyžaduje seriózní pozornost. -g možnost umožňuje správcům definovat přizpůsobené direktivy Nginx pro jejich webové servery.

$ sudo nginx -g "pid /var/run/test.pid; worker_processes 2;"

Tento příkaz určuje globální direktivy Nginx pro PID a definuje počet pracovních procesů, v tomto případě 2. Nyní to můžeme otestovat pomocí alternativního konfiguračního souboru použitého dříve.

$ sudo nginx -t -c ~/test.conf -g "pid /var/run/test.pid; worker_processes 2;"

14. Změňte cestu předpony Nginx

Cesta předpony obsahuje všechny soubory používané vaším webovým serverem Nginx. Je to také stejný adresář, který se používá při konfiguraci pro nastavení relativních cest (kromě zdrojů knihoven). Ve výchozím nastavení používá Nginx jako předponu adresář /usr/local/nginx. Níže uvedený příkaz ukazuje, jak to můžeme přepsat z příkazového řádku.

$ sudo nginx -p /path/to/new/prefix

-p příznak nám umožňuje předat nové umístění prefixu. Často se to hodí při testování nových serverů. Tato možnost však není dostupná pro servery Nginx starší než verze 0.7.53.

15. Zkontrolujte modul stub_status

stub_status modul odhaluje některé velmi důležité metriky o Nginx. Správci jej často používají pro monitorování svých linuxových poštovních serverů nebo proxy serverů. Ačkoli všechny předem sestavené binární soubory Nginx přicházejí s tímto modulem, váš server Nginx to nemusí mít, pokud jste zkompilovali Nginx ze zdroje. Následující příkaz můžete použít k otestování, zda jej máte nebo ne.

$ sudo nginx -V 2>&1 | grep --color -- --with-http_stub_status_module

Pokud zjistíte, že vám tento modul chybí, můžete Nginx vždy znovu sestavit ze zdroje. Jednoduše zahrňte –with-http_stub_status_module parametr při konfiguraci Nginx, jak je uvedeno níže.

$ ./configure --with-http_stub_status_module

16. Zkontrolujte cestu Nginx

Existuje několik příkazů Nginx pro kontrolu cesty k vaší instalaci Nginx. Stejně jako každodenní příkazy terminálu Linuxu můžete vždy použít příkaz who/whereis ke kontrole cesty Nginx.

$ which nginx
$ whereis nginx

Výše uvedené příkazy zobrazí všechna umístění systému, která obsahují soubory související s vaším nastavením Nginx. Můžete to udělat jiným způsobem pomocí příkazu ps a vyhledáním požadovaných informací.

$ ps aux | grep nginx

Nyní byste měli jasně vidět umístění vašeho démona Nginx. To je velmi užitečné pro vývojáře, kteří nemají nízkoúrovňová oprávnění k serveru.

17. Vyhledejte Nginx PID

PID neboli Process ID je jedinečné číslo používané k rozlišení procesů na Linuxu a systémech podobných Unixu. Můžeme odeslat různé signály na náš server Nginx pomocí vhodného PID. Toto PID lze nalézt pomocí jednoho z následujících příkazů.

$ ps aux | grep [n]ginx
$ pgrep nginx
$ cat /run/nginx.pid

Můžeme tedy použít buď pgrep nebo příkaz vanilla grep ve spojení s ps. Nedělejte si starosti, pokud nerozumíte tomu, jak „grep“ funguje. Již jsme publikovali na zdroje náročného průvodce příkazy grep pro Linux.

18. Najděte soubory protokolu

Soubory protokolu obsahují mnoho cenných informací jak pro správce systému, tak pro vývojáře. Nginx má dva výchozí soubory protokolu sestávající z access.log a error.log dokumenty. Ty jsou umístěny na /var/log a lze je zobrazit pomocí následujícího příkazu.

$ ls /var/log/nginx/*.log

Nyní byste měli vidět výše uvedené soubory protokolu. Jak jejich název napovídá, access.log obsahuje informace o návštěvnících vašeho webu a error.log obsahuje varování/podrobnosti o nesprávné konfiguraci. Tyto dva protokoly však budete muset povolit z konfiguračního souboru Nginx, než je budete moci používat.

19. Nastavit virtuální hostitele

Virtuální hostitelé umožňují správcům serveru provozovat více než jednu webovou stránku na jednom serveru. To je často užitečné, protože můžete sdílet své výpočetní procesy a provozovat více webů současně. Termín virtuální hostitel je však obvykle spojován se servery Apache. Jsou známé jako „bloky serveru ” ve světě Nginx.

$ sudo ln -s /etc/nginx/sites-available/YOURSITE.com /etc/nginx/sites-enabled/YOURSITE.com

Pomocí tohoto jednoduchého symbolického odkazu můžete snadno povolit virtuální hostitele na serveru Nginx. Pokud chcete deaktivovat virtuální hostitele, stačí odstranit symbolický odkaz.

20. Zobrazit zkompilované moduly Nginx

Jak jste viděli v některých předchozích příkazech Nginx, při instalaci démona se nainstalují také některé základní moduly. Tyto moduly Nginx můžeme snadno zobrazit pomocí příkazu níže.

$ sudo 2>&1 nginx -V | tr -- - '\n' | grep _module

Tento příkaz využívá několik nástrojů příkazového řádku Linuxu a filtruje irelevantní informace, aby zobrazil pouze moduly. Vzhledem k tomu, že Nginx má nepřeberné množství modulů, může být tento příkaz užitečný ke kontrole toho, jaké moduly jsou zkompilovány pro váš server.

21. Povolit/zakázat službu Nginx

Povolení služby Nginx umožní serveru automatické spuštění během spouštění. Je to nezbytné pro dedikované servery, protože jinak by mohly být požadavky uživatelů přerušeny. Pomocí níže uvedeného příkazu můžeme velmi snadno povolit automatické spouštění Nginxu.

$ sudo service nginx enable     # System V Init
$ sudo systemctl enable nginx   # systemd-based systems

Tyto jednoduché, ale účinné příkazy zajistí, že prostoje vašeho serveru budou co nejvíce omezeny. Pokud chcete, můžete také zakázat automatické spouštění. Jednoduše použijte jeden z následujících příkazů.

$ sudo update-rc.d -f nginx disable
$ sudo systemctl disable nginx

22. Upgradujte Nginx on the Fly

Nginx umožňuje administrátorům upgradovat binární a/nebo konfigurační soubor za běhu. To znamená, že vaše požadavky klientů nebudou přerušeny kvůli upgradům serveru. Abychom to mohli udělat, musíme nejprve najít PID hlavního procesu Nginx. Můžeme to udělat pomocí jednoduchého příkazu, který jsme si již ukázali.

$ cat /run/nginx.pid

Váš nový binární soubor Nginx by měl být nyní připraven. Vytvořte novou sadu hlavních/pracovních procesů Nginx, které používají nové binární soubory pomocí níže uvedeného příkazu.

$ sudo kill -s USR2 `cat /run/nginx.pid`

Nyní ukončete pracovní procesy používané prvním hlavním procesem pomocí následujícího příkazu.

$ sudo kill -s WINCH `cat /run/nginx.pid.oldbin`

Následujte ho tím, že zabijete starý hlavní proces.

$ sudo kill -s QUIT `cat /run/nginx.pid.oldbin`

23. Nastavte Nginx v Chroot Jail

Chroot vězení pro váš server Nginx poskytne další vrstvu zabezpečení v případě potenciálních vloupání. Správci často používají tuto techniku, aby se ujistili, že jejich servery jsou izolované a bezpečné v malé části souborového systému Linux. Pomocí následujících příkazů nastavte server Nginx v chrootovém vězení.

# D=/nginx
# mkdir -p $D
# mkdir -p $D/etc
# mkdir -p $D/dev
# mkdir -p $D/var
# mkdir -p $D/usr
# mkdir -p $D/usr/local/nginx
# mkdir -p $D/tmp
# chmod 1777 $D/tmp
# mkdir -p $D/var/tmp
# chmod 1777 $D/var/tmp
# mkdir -p $D/lib64
# ls -l /dev/{null,random,urandom}
# /bin/cp -farv /usr/local/nginx/* $D/usr/local/nginx

Budete je muset spustit jako root. Nyní zjistěte sdílené knihovny pomocí níže uvedeného příkazu.

# ldd /usr/local/nginx/sbin/nginx

Zkopírujte všechny knihovny jednu po druhé, jak je znázorněno níže.

# cp /lib64/libpcre.so.0 $D/lib64

Budete také muset zkopírovat /etc a několik dalších adresářů.

# cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/etc

# cp -avr /etc/{ld.so.conf.d,prelink.conf.d} $D/etc

Vaše chroot vězení je nyní připraveno pro Nginx. Jednoduše ukončete starou službu a spusťte novou pomocí dalšího příkazu.

# /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t

24. Spusťte Nginx uvnitř Dockeru

Kontejnery Docker se staly extrémně populární díky své flexibilitě a robustnímu výkonu. Svůj webový server Nginx můžete snadno vytvořit a spustit z kontejneru dockeru. Další příkaz stáhne oficiální obraz Nginx a vytvoří instanci serveru pomocí výchozí konfigurace.

$ docker run --name nginx-server -P -d nginx

Trvalé úložiště můžete udržovat pomocí následujícího jednoduchého příkazu.

$ sudo docker run --name nginx-server -v /var/www:/usr/share/nginx/html:ro \

-v /var/nginx/conf:/etc/nginx:ro -P -d nginx

Více užitečných příkazů Dockeru najdete v tomto příspěvku. Pokud hledáte informace specifické pro docker, podívejte se na něj.

25. Spusťte Nginx uvnitř LXD

LXD je oslavován jako linuxový kontejner nové generace a nabízí ohromující sadu funkcí. Můžete také použít Nginx prostřednictvím kontejnerů LXD. Podívejte se na následující příkazy Nginx pro LXD.

$ sudo lxc launch ubuntu:18.04 nginx-server
$ sudo lxc exec nginx-server -- sudo --user ubuntu --login
$ sudo apt update
$ sudo apt install -y nginx
$ sudo systemctl reload nginx

Nejprve jsme vytvořili kontejner nazvaný nginx-server a poté v tomto kontejneru spustili shell. Poté jsme aktualizovali seznam balíčků a nainstalovali webový server Nginx do tohoto kontejneru. Poslední příkaz jednoduše znovu načte server.

Konec myšlenek

Nginx nabízí mnoho překvapivých funkcí a noví uživatelé jsou často ohromeni jeho naprostými schopnostmi. Naštěstí můžete získat obrovskou sebedůvěru, pokud znáte pouze některé základní příkazy Nginx. Proto jsme si dovolili představit vám tyto úžasné příkazy. Pokryli jsme nejen základní příkazy, ale také některé pokročilé, výkonnější triky příkazového řádku. Doufejme, že jakmile si na tyto příkazy zvyknete, pocítíte větší autoritu nad svými dovednostmi Nginx. Sdělte nám své myšlenky v sekci komentářů níže a pokračujte v návštěvě dalších průvodců o serverech Linux.


Linux
  1. Průvodce spuštěním reverzního proxy pro HTTP(S), SSH a MySQL/MariaDB pomocí NGINX

  2. 25 základních příkazů Vim pro navigaci a úpravy

  3. Zkontrolujte aktualizace systému Windows v systému Windows Server 2016 a 2019

  1. Doporučené postupy DNS pro zabezpečení a výkon

  2. Instalace Nginx na Ubuntu 14.04 a 16.04

  3. 20 Příkazy OpenSSL Příklady, které musíte znát

  1. Příkazy Nginx, které byste měli vědět

  2. Tipy a triky pro zabezpečení vašeho webového serveru Nginx

  3. SemiCode OS:Linuxová distribuce pro programátory a webové vývojáře