Jak kompilovat Nginx ze zdroje na Debianu 10

Úvod

Nginx je software webového serveru s otevřeným zdrojovým kódem navržený s ohledem na vysokou souběžnost, který lze použít jako server HTTP/HTTPS, reverzní proxy server, poštovní proxy server, vyrovnávání zatížení softwaru, terminátor TLS, server pro ukládání do mezipaměti a další!

Jedná se o značně modulární kus softwaru. Dokonce i některé zdánlivě „vestavěné“ části softwaru, jako je GZIP nebo SSL, jsou ve skutečnosti vytvořeny jako moduly, které lze povolit a zakázat během doby sestavení.

Má základní (nativní) moduly a moduly třetích stran (externí) vytvořené komunitou. V současné době existuje více než sto modulů třetích stran, které můžeme využít.

Je to rychlý a lehký software napsaný v C.

Instalace Nginx ze zdrojového kódu je poměrně snadná – stáhněte si nejnovější verzi zdrojového kódu Nginx, nakonfigurujte, sestavte a nainstalujte.

Budete si muset vybrat, zda si stáhnete hlavní řadu nebo stabilní verzi, ale sestavení je stejné.

V této příručce zkompilujeme hlavní verzi Nginx na Debianu 10 (buster). Využijeme všechny dostupné moduly v open-source verzi Nginx.

Proč kompilovat a instalovat Nginx ze zdroje

Pravděpodobně se ptáte, proč by se kompilovalo Nginx ze zdroje, když můžete použít připravené balíčky. Zde je několik důvodů, proč si možná budete chtít zkompilovat konkrétní software sami:

  • Chcete-li ovládat možnosti konfigurace.
  • Chcete-li nainstalovat software, kamkoli chcete. Můžete dokonce nainstalovat několik různých verzí stejného softwaru.
  • Chcete-li ovládat verzi, kterou nainstalujete. Distribuce ne vždy zůstávají aktuální s nejnovějšími verzemi všech balíčků, zejména doplňků k softwarovým balíčkům.
  • Abychom lépe pochopili, jak software funguje.

Stabilní vs. verze hlavní řady

Nginx Open Source je k dispozici ve dvou verzích:

  • Hlavní řada – Zahrnuje nejnovější funkce a opravy chyb a je vždy aktuální. Je spolehlivý, ale může obsahovat některé experimentální moduly a také může obsahovat několik nových chyb.
  • Stabilní – Neobsahuje všechny nejnovější funkce, ale obsahuje kritické opravy chyb, které jsou vždy zpětně portovány do hlavní verze.

Základní moduly vs. moduly třetích stran

Nginx má dva typy modulů, které můžete využít: základní moduly a moduly třetích stran.

Vývojáři jádra Nginx vytvářejí základní moduly a jsou součástí samotného softwaru.

Komunita vytváří moduly třetích stran a můžete je použít k rozšíření funkčnosti. Existuje mnoho užitečných modulů třetích stran.

Statické moduly vs. dynamické moduly

Statické moduly existují v Nginx od první verze. Dynamické moduly byly představeny s Nginx 1.9.11+ v únoru 2016.

U statických modulů je sada modulů, které tvoří binární soubor Nginx, fixována v době kompilace ./configureskriptem. Použití --with-foo_bar_modulenebo --add-module=PATHsyntaxe statických modulů .

Pro sestavení základního (standardního) modulu jako dynamického přidáme =dynamicnapříklad --with-http_image_filter_module=dynamic.

Ke kompilaci modulu třetí strany jako dynamického použijeme --add-dynamic-module=/path/to/modulesyntaxi a poté je načteme pomocí load_moduledirektivy v globálním kontextu nginx.confsouboru.

Požadavky na sestavení Nginx ze zdroje

Ve srovnání s některým jiným UNIX/Linux softwarem je Nginx docela lehký a nemá mnoho závislostí na knihovnách. Výchozí konfigurace sestavení závisí pouze na 3 knihovnách, které se mají nainstalovat: OpenSSL/LibreSSL/BoringSSL, Zlib a PCRE.

POZNÁMKA : Nginx lze místo OpenSSL zkompilovat také s kryptoknihovnami LibreSSL a BoringSSL.

Než začnete

Zkontrolujte verzi Debianu.

lsb_release -ds # Debian GNU/Linux 10 (buster)

Vytvořte běžného uživatele s sudopřístupem.

adduser johndoe --gecos "John Doe" usermod -aG sudo johndoe

POZNÁMKA : Nahraďte johndoesvým uživatelským jménem .

Přepnout na nového uživatele.

su - johndoe

Nastavte časové pásmo.

sudo dpkg-reconfigure tzdata

Aktualizujte software operačního systému.

sudo apt update && sudo apt upgrade -y

Nainstalujte potřebné balíčky.

sudo apt install -y software-properties-common ufw

Sestavte Nginx ze zdroje

Nginx je program napsaný v C, takže nejprve budete muset nainstalovat kompilační nástroj. Nainstalovat build-essential, gita tree.

sudo apt install -y build-essential git tree

Stáhněte si nejnovější hlavní verzi zdrojového kódu Nginx a rozbalte archiv zdrojového kódu. Zdrojový kód Nginx je distribuován jako komprimovaný archiv, stejně jako většina softwaru pro Unix a Linux.

wget https://nginx.org/download/nginx-1.17.2.tar.gz && tar zxvf nginx-1.17.2.tar.gz

Stáhněte si zdrojový kód povinných závislostí Nginx a extrahujte jej.

# PCRE version 8.43 wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz && tar xzvf pcre-8.43.tar.gz # zlib version 1.2.11 wget https://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz # OpenSSL version 1.1.1c wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz && tar xzvf openssl-1.1.1c.tar.gz

Nainstalujte volitelné závislosti Nginx.

sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev

Vyčistěte všechny .tar.gzsoubory. Už je nepotřebujeme.

rm -rf *.tar.gz

Zadejte zdrojový adresář Nginx.

cd ~/nginx-1.17.2

Pro dobrou míru uveďte adresáře a soubory, které tvoří zdrojový kód Nginx s tree.

tree -L 2 .

Zkopírujte manuálovou stránku do /usr/share/man/man8/.

sudo cp ~/nginx-1.17.2/man/nginx.8 /usr/share/man/man8 sudo gzip /usr/share/man/man8/nginx.8 ls /usr/share/man/man8/ | grep nginx.8.gz # Check that man page for Nginx is working man nginx

Pro nápovědu si můžete prohlédnout úplný seznam aktuálních možností kompilace Nginx spuštěním následujícího.

./configure --help # To see want core modules can be built as dynamic run: ./configure --help | grep -F =dynamic

Nakonfigurujte, zkompilujte a nainstalujte Nginx.

./configure --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --user=nginx \ --group=nginx \ --build=Debian \ --builddir=nginx-1.17.2 \ --with-select_module \ --with-poll_module \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-http_perl_module=dynamic \ --with-perl_modules_path=/usr/share/perl/5.26.1 \ --with-perl=/usr/bin/perl \ --http-log-path=/var/log/nginx/access.log \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --with-mail=dynamic \ --with-mail_ssl_module \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module=dynamic \ --with-stream_ssl_preread_module \ --with-compat \ --with-pcre=../pcre-8.43 \ --with-pcre-jit \ --with-zlib=../zlib-1.2.11 \ --with-openssl=../openssl-1.1.1c \ --with-openssl-opt=no-nextprotoneg \ --with-debug make sudo make install

Po kompilaci přejděte do svého domovského ( ~) adresáře.

cd ~

Symbolický odkaz /usr/lib/nginx/modulesna /etc/nginx/modules. Toto je standardní místo pro moduly Nginx.

sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules

Vytiskněte verzi Nginx, verzi kompilátoru a nakonfigurujte parametry skriptu.

sudo nginx -V # nginx version: nginx/1.17.2 (Debian) # built by gcc 8.3.0 (Debian 8.3.0-6) # built with OpenSSL 1.1.1c 28 May 2019 # TLS SNI support enabled # configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules . . . # . . . # . . .

Vytvořte systémovou skupinu a uživatele Nginx.

sudo adduser --system --home /nonexistent --shell /bin/false --no-create-home --disabled-login --disabled-password --gecos "nginx user" --group nginx # Check that user and group are created sudo tail -n 1 /etc/passwd /etc/group /etc/shadow

Zkontrolujte syntaxi Nginx a potenciální chyby.

sudo nginx -t # Will throw this error -> nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (2: No such file or directory) # Create NGINX cache directories and set proper permissions sudo mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/proxy_temp /var/cache/nginx/scgi_temp /var/cache/nginx/uwsgi_temp sudo chmod 700 /var/cache/nginx/* sudo chown nginx:root /var/cache/nginx/* # Re-check syntax and potential errors. sudo nginx -t

Vytvořte soubor Nginx systemd unit.

sudo vim /etc/systemd/system/nginx.service

Naplňte /etc/systemd/system/nginx.servicesoubor následujícím obsahem.

[Unit] Description=nginx - high performance web server Documentation=https://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target

Povolte spuštění Nginx při spouštění a okamžitě spusťte Nginx.

sudo systemctl enable nginx.service sudo systemctl start nginx.service

Zkontrolujte, zda se Nginx automaticky spustí po restartu.

sudo systemctl is-enabled nginx.service # enabled

Zkontrolujte stav.

sudo systemctl status nginx.service

POZNÁMKA : Můžete ověřit, že Nginx běží, když přejdete na doménu nebo IP adresu vašeho webu ve webovém prohlížeči. Zobrazí se uvítací stránka Nginx. To je indikátor, že Nginx je na vašem VPS spuštěn.

Vytvořte profil aplikace UFW Nginx.

sudo vim /etc/ufw/applications.d/nginx

Zkopírujte/vložte do /etc/ufw/applications.d/nginxsouboru následující obsah .

[Nginx HTTP] title=Web Server (Nginx, HTTP) description=Small, but very powerful and efficient web server ports=80/tcp [Nginx HTTPS] title=Web Server (Nginx, HTTPS) description=Small, but very powerful and efficient web server ports=443/tcp [Nginx Full] title=Web Server (Nginx, HTTP + HTTPS) description=Small, but very powerful and efficient web server ports=80,443/tcp

Ověřte, že jsou vytvořeny a rozpoznány profily aplikací UFW.

sudo ufw app list # Available applications: # Nginx Full # Nginx HTTP # Nginx HTTPS # OpenSSH

Nginx ve výchozím nastavení generuje záložní .defaultsoubory ve formátu /etc/nginx. Odstraňte .defaultsoubory z /etc/nginxadresáře.

sudo rm /etc/nginx/*.default

Umístěte zvýraznění syntaxe konfigurace Nginx pro editor Vim do ~/.vim.

# For regular non-root user mkdir ~/.vim/ cp -r ~/nginx-1.17.2/contrib/vim/* ~/.vim/ # For root user sudo mkdir /root/.vim/ sudo cp -r ~/nginx-1.17.2/contrib/vim/* /root/.vim/

POZNÁMKA : Provedením výše uvedeného kroku získáte pěkné zvýraznění syntaxe při úpravě konfiguračních souborů Nginx v editoru Vim.

Vytvářejte adresáře conf.d, snippets, sites-availablea sites-enabledv /etc/nginx.

sudo mkdir /etc/nginx/{conf.d,snippets,sites-available,sites-enabled}

Změňte oprávnění a skupinové vlastnictví souborů protokolu Nginx.

sudo chmod 640 /var/log/nginx/* sudo chown nginx:adm /var/log/nginx/access.log /var/log/nginx/error.log

Vytvořte konfiguraci rotace protokolu pro Nginx.

sudo vim /etc/logrotate.d/nginx

Vyplňte soubor následujícím textem, poté jej uložte a ukončete.

/var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript }

Odstraňte všechny stažené soubory z domovského adresáře.

cd ~ rm -rf nginx-1.17.2/ openssl-1.1.1c/ pcre-8.43/ zlib-1.2.11/

souhrn

A je to. Nyní máte nainstalovanou nejnovější verzi Nginx. Je kompilován staticky proti některým důležitým knihovnám, jako je OpenSSL. Verze OpenSSL dodávaná systémem je často zastaralá. Při použití této metody instalace s novější verzí OpenSSL můžete využít moderních šifer jako CHACHA20_POLY1305a protokolů jako TLS 1.3, které jsou dostupné v OpenSSL 1.1.1. Navíc kompilací vlastního binárního souboru můžete přizpůsobit, jakou funkcionalitu váš Nginx poskytne, což je mnohem flexibilnější než instalace předem sestaveného binárního souboru.


Jak nastavit bezobslužné upgrady na Debian 9 (Stretch)

Jak nastavit bezobslužné upgrady na Debian 9 (Stretch)

Používáte jiný systém? Pokud si zakoupíte server Debian, měli byste mít vždy nejnovější bezpečnostní záplaty a aktualizace, ať už spíte nebo ne

Nastavte si svůj vlastní DNS server na Debian/Ubuntu

Nastavte si svůj vlastní DNS server na Debian/Ubuntu

Tento tutoriál vysvětluje, jak nastavit DNS server pomocí Bind9 na Debianu nebo Ubuntu. V celém článku nahraďte odpovídajícím způsobem název-vaše-domény.com. Při čt

Zkompilujte a nainstalujte Nginx pomocí modulu PageSpeed ​​na Debian 8

Zkompilujte a nainstalujte Nginx pomocí modulu PageSpeed ​​na Debian 8

V tomto článku uvidíme, jak zkompilovat a nainstalovat hlavní řadu Nginx z oficiálních zdrojů Nginx pomocí modulu PageSpeed, který vám umožňuje

Jak nainstalovat Kanboard na Debian 9

Jak nainstalovat Kanboard na Debian 9

Používáte jiný systém? Úvod Kanboard je bezplatný a otevřený softwarový program pro správu projektů, který je navržen tak, aby usnadnil a vizualizoval

Jak nainstalovat Gitea na Debian 9

Jak nainstalovat Gitea na Debian 9

Používáte jiný systém? Gitea je alternativní open source systém pro správu verzí s vlastním hostitelem poháněný systémem Git. Gitea je napsána v Golangu a je

Nainstalujte Lynis na Debian 8

Nainstalujte Lynis na Debian 8

Úvod Lynis je bezplatný nástroj pro audit systému s otevřeným zdrojovým kódem, který používá mnoho systémových administrátorů k ověření integrity a posílení svých systémů. já

Jak nainstalovat Thelia 2.3 na Debian 9

Jak nainstalovat Thelia 2.3 na Debian 9

Používáte jiný systém? Thelia je open source nástroj pro vytváření webových stránek pro e-business a správu online obsahu napsaného v PHP. Zdrojový kód Thelia i

Vytvoření sítě serverů Minecraft pomocí BungeeCord na Debian 8, Debian 9 nebo CentOS 7

Vytvoření sítě serverů Minecraft pomocí BungeeCord na Debian 8, Debian 9 nebo CentOS 7

Co budete potřebovat Vultr VPS s alespoň 1 GB RAM. Přístup SSH (s oprávněními root/administrátor). Krok 1: Instalace BungeeCord První věci

Jak nainstalovat Golang 1.8.3 na CentOS 7, Ubuntu 16.04 a Debian 9

Jak nainstalovat Golang 1.8.3 na CentOS 7, Ubuntu 16.04 a Debian 9

Golang je programovací jazyk vyvinutý společností Google. Díky své všestrannosti, jednoduchosti a spolehlivosti se Golang stal jedním z nejoblíbenějších

Resetujte kořenové heslo MySQL na Debian/Ubuntu

Resetujte kořenové heslo MySQL na Debian/Ubuntu

Pokud jste zapomněli své kořenové heslo MySQL, můžete ho resetovat podle kroků v tomto článku. Proces je poměrně jednoduchý a funguje na nich

Vytváření síťových sdílení pomocí Samby v Debianu

Vytváření síťových sdílení pomocí Samby v Debianu

Jsou chvíle, kdy potřebujeme sdílet soubory, které musí být viditelné pro klienty Windows. Vzhledem k tomu, že systémy založené na pojistkách fungují pouze na Linuxu, představujeme vás

Nastavení Counter Strike: Source na Debianu

Nastavení Counter Strike: Source na Debianu

V této příručce nastavíme herní server Counter Strike: Source na Debianu 7. Tyto příkazy byly testovány na Debianu 7, ale měly by také fungovat

Jak nainstalovat Unturned 2.2.5 na Debian 8

Jak nainstalovat Unturned 2.2.5 na Debian 8

V této příručce se dozvíte, jak nastavit server Unturned 2.2.5 na Vultr VPS se systémem Debian 8. Poznámka: Toto je upravená verze Unturned, která

Jak nainstalovat Cachet na Debian 8

Jak nainstalovat Cachet na Debian 8

V tomto tutoriálu se naučíte, jak nainstalovat Cachet na Debian 8. Cachet je výkonný open source systém stavových stránek. Instalace Tento tutoriál právě probíhá

Automaticky zálohujte více databází MySQL nebo MariaDB

Automaticky zálohujte více databází MySQL nebo MariaDB

Úvod V tomto zápisu si dobře projděte, jak zálohovat více databází MySQL nebo MariaDB, které sedí na stejném počítači pomocí vlastního bash skriptu.

Nastavení Chrootu v Debianu

Nastavení Chrootu v Debianu

Tento článek vás naučí, jak nastavit chroot jail v Debianu. Předpokládám, že používáte Debian 7.x. Pokud používáte Debian 6 nebo 8, může to fungovat, bu

Jak nainstalovat Reader Self 3.5 RSS Reader na Debian 9 LAMP VPS

Jak nainstalovat Reader Self 3.5 RSS Reader na Debian 9 LAMP VPS

Používáte jiný systém? Reader Self 3.5 je jednoduchá a flexibilní, bezplatná a open source, samostatně hostovaná RSS čtečka a alternativa Google Reader. Čtenář Sel

Jak nainstalovat Backdrop CMS 1.8.0 na Debian 9 LAMP VPS

Jak nainstalovat Backdrop CMS 1.8.0 na Debian 9 LAMP VPS

Používáte jiný systém? Backdrop CMS 1.8.0 je jednoduchý a flexibilní, mobilní, bezplatný a open source systém správy obsahu (CMS), který nám umožňuje

Jak nainstalovat SteamCMD na váš VPS

Jak nainstalovat SteamCMD na váš VPS

V tomto tutoriálu nainstalujeme SteamCMD. SteamCMD lze použít ke stažení a instalaci mnoha herních serverů Steam, jako je Counter-Strike: Global Offensiv

Upgradujte Python na Debian

Upgradujte Python na Debian

Jak možná víte, repozitáře Debianu se aktualizují velmi pomalu. V době psaní tohoto článku jsou verze vydání Pythonu na 2.7.12 a 3.5.2, ale v úložišti Debian 8

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.

Útoky DDOS: Stručný přehled

Útoky DDOS: Stručný přehled

Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.

Revoluční vynálezy od Googlu, které vám usnadní život.

Revoluční vynálezy od Googlu, které vám usnadní život.

Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…

Technologická singularita: vzdálená budoucnost lidské civilizace?

Technologická singularita: vzdálená budoucnost lidské civilizace?

Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.

Evoluce ukládání dat – Infografika

Evoluce ukládání dat – Infografika

Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.

Funkcionality vrstev referenční architektury velkých dat

Funkcionality vrstev referenční architektury velkých dat

Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více