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.