Az Nginx fordítása a forrásból a Debian 10 rendszeren

Bevezetés

Az Nginx egy nyílt forráskódú webszerver-szoftver, amelyet nagy párhuzamosságra terveztek, és használható HTTP/HTTPS szerverként, fordított proxyszerverként, levelezőproxyszerverként, szoftveres terheléselosztóként, TLS terminátorként, gyorsítótárazó szerverként és még sok másként!

Ez egy erősen moduláris szoftver. Még a szoftver egyes látszólag "beépített" részei is, mint például a GZIP vagy az SSL, valójában modulokként jönnek létre, amelyeket a felépítés során engedélyezni és letiltani lehet.

A közösség által létrehozott alapvető (natív) modulokkal és harmadik féltől származó (külső) modulokkal rendelkezik . Jelenleg több mint száz külső féltől származó modult használhatunk.

C nyelven írva ez egy gyors és könnyű szoftver.

Az Nginx forráskódból történő telepítése viszonylag egyszerű – töltse le az Nginx forráskód legújabb verzióját, konfigurálja, készítse el és telepítse.

Ki kell választania, hogy a fővonalat vagy a stabil verziót szeretné letölteni, de ezek elkészítése ugyanaz.

Ebben az útmutatóban az Nginx fő verzióját fogjuk összeállítani Debian 10-en (buster). Az összes elérhető modult az Nginx nyílt forráskódú verziójában fogjuk használni.

Miért fordítsa le és telepítse az Nginxet forrásból?

Valószínűleg azt kérdezed, hogy miért fordítanád le az Nginxet egy forrásból, ha használhatod az előkészített csomagokat. Íme néhány ok, amiért érdemes saját maga összeállítania egy adott szoftvert:

  • A konfigurációs opciók vezérléséhez.
  • A szoftver telepítéséhez bárhová, ahol csak akarja. Akár ugyanannak a szoftvernek több különböző verzióját is telepítheti.
  • A telepített verzió szabályozása. A disztribúciók nem mindig maradnak naprakészen az összes csomag legújabb verziójával, különösen a szoftvercsomagok kiegészítőivel.
  • A szoftver működésének jobb megértése érdekében.

Stabil vs. mainline verzió

Az Nginx nyílt forráskódú két verzióban érhető el:

  • Fővonal – Tartalmazza a legújabb szolgáltatásokat és hibajavításokat, és mindig naprakész. Megbízható, de tartalmazhat néhány kísérleti modult, és lehet néhány új hiba is.
  • Stabil – Nem tartalmazza az összes legújabb funkciót, de kritikus hibajavításokat tartalmaz, amelyek mindig visszaportálódnak a fő verzióra.

Alapvető modulok kontra harmadik féltől származó modulok

Az Nginx kétféle modullal rendelkezik, amelyeket használhat: alapvető modulokat és harmadik féltől származó modulokat.

Az alapvető Nginx fejlesztők alapmodulokat készítenek, és ezek magának a szoftvernek a részét képezik.

A közösség harmadik féltől származó modulokat épít, és ezek segítségével bővítheti a funkcionalitást. Számos hasznos, harmadik féltől származó modul létezik.

Statikus modulok kontra dinamikus modulok

Statikus modulok léteznek az Nginxben az első verziótól kezdve. A dinamikus modulokat 2016 februárjában vezették be az Nginx 1.9.11+ verziójával.

Statikus modulok esetén a ./configureszkript fordításkor rögzíti az Nginx binárist alkotó modulok készletét . A statikus modulok használata --with-foo_bar_modulevagy --add-module=PATHszintaxisa.

Egy alap (standard) modul dinamikusként történő fordításához hozzáadjuk =dynamicpéldául a --with-http_image_filter_module=dynamic.

Harmadik féltől származó modulok dinamikus fordításához --add-dynamic-module=/path/to/moduleszintaxist használunk , majd load_modulea nginx.conffájl globális kontextusában lévő direktíva használatával betöltjük őket .

Az Nginx forrásból történő építésének követelményei

Más UNIX/Linux szoftverekkel összehasonlítva az Nginx meglehetősen könnyű, és nem rendelkezik sok könyvtárfüggőséggel. Az alapértelmezett build konfiguráció csak három telepítendő könyvtártól függ: OpenSSL/LibreSSL/BoringSSL, Zlib és PCRE.

MEGJEGYZÉS : Az Nginx az OpenSSL helyett a LibreSSL és BoringSSL kriptokönyvtárak ellen is lefordítható.

Mielőtt elkezded

Ellenőrizze a Debian verziót.

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

Hozzon létre egy normál felhasználót sudohozzáféréssel.

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

MEGJEGYZÉS : Cserélje johndoeki a felhasználónevével .

Váltás új felhasználóra.

su - johndoe

Állítsa be az időzónát.

sudo dpkg-reconfigure tzdata

Frissítse operációs rendszere szoftverét.

sudo apt update && sudo apt upgrade -y

Telepítse a szükséges csomagokat.

sudo apt install -y software-properties-common ufw

Nginx készítése forrásból

Az Nginx egy C nyelven írt program, ezért először telepítenie kell egy fordítóeszközt. Telepítse build-essential, gités tree.

sudo apt install -y build-essential git tree

Töltse le az Nginx forráskód legújabb verzióját, és csomagolja ki a forráskód-archívumot. Az Nginx forráskódja tömörített archívumként kerül terjesztésre, mint a legtöbb Unix és Linux szoftver.

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

Töltse le a kötelező Nginx-függőségek forráskódját, és bontsa ki.

# 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

Telepítse az opcionális Nginx-függőségeket.

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

Tisztítsa meg az összes .tar.gzfájlt. Nincs többé szükségünk rájuk.

rm -rf *.tar.gz

Lépjen be az Nginx forráskönyvtárába.

cd ~/nginx-1.17.2

A jó mérés érdekében listázza ki azokat a könyvtárakat és fájlokat, amelyek az Nginx forráskódot a tree.

tree -L 2 .

Másolja a kézikönyv oldalát ide /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

Segítségért megtekintheti a naprakész Nginx fordítási idő opciók teljes listáját a következő futtatásával.

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

Az Nginx konfigurálása, fordítása és telepítése.

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

Az összeállítást követően navigáljon a kezdőkönyvtárába ( ~).

cd ~

Symlink ide /usr/lib/nginx/modules: /etc/nginx/modules. Ez az Nginx modulok szabványos helye.

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

Nyomtassa ki az Nginx verziót, a fordítóverziót, és konfigurálja a szkriptparamétereket.

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

Hozzon létre egy Nginx rendszercsoportot és felhasználót.

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

Ellenőrizze az Nginx szintaxisát és a lehetséges hibákat.

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

Hozzon létre egy Nginx systemd unit fájlt.

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

Töltse fel a /etc/systemd/system/nginx.servicefájlt a következő tartalommal.

[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

Engedélyezze az Nginx-et a rendszerindításkor, és azonnal indítsa el az Nginxet.

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

Ellenőrizze, hogy az Nginx automatikusan elindul-e az újraindítás után.

sudo systemctl is-enabled nginx.service # enabled

Ellenőrizze az állapotot.

sudo systemctl status nginx.service

MEGJEGYZÉS : Ellenőrizheti, hogy az Nginx fut-e, ha egy webböngészőben felkeresi webhelye domainjét vagy IP-címét. Látni fogja az Nginx üdvözlő oldalát. Ez azt jelzi, hogy az Nginx működik és fut a VPS-en.

Hozzon létre egy UFW Nginx alkalmazásprofilt.

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

Másolja/illessze be a következő tartalmat a /etc/ufw/applications.d/nginxfájlba.

[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

Ellenőrizze, hogy az UFW-alkalmazásprofilok létrejöttek és felismerhetők-e.

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

Az Nginx alapértelmezés szerint biztonsági mentési .defaultfájlokat hoz létre a /etc/nginx. .defaultFájlok eltávolítása a /etc/nginxkönyvtárból.

sudo rm /etc/nginx/*.default

Helyezze el a Vim szerkesztő Nginx konfigurációjának szintaxiskiemelését a ~/.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/

MEGJEGYZÉS : A fenti lépés végrehajtásával szép szintaxiskiemelést kap, amikor az Nginx konfigurációs fájljait szerkeszti a Vim szerkesztőben.

Hozzon létre conf.d, snippets, sites-availableés sites-enabledkönyvtárakat itt: /etc/nginx.

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

Módosítsa az Nginx naplófájlok engedélyeit és csoportos tulajdonjogát.

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

Hozzon létre egy naplóforgatási konfigurációt az Nginx számára.

sudo vim /etc/logrotate.d/nginx

Töltse ki a fájlt a következő szöveggel, majd mentse és lépjen ki.

/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 }

Távolítsa el az összes letöltött fájlt a kezdőkönyvtárból.

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

Összegzés

Ez az. Most telepítette az Nginx legújabb verzióját. Statikusan fordítják néhány fontos könyvtár ellen, mint például az OpenSSL. Az OpenSSL rendszer által biztosított verziója gyakran elavult. Az OpenSSL újabb verziójával történő telepítés ezen módszerével kihasználhatja az OpenSSL-ben elérhető modern titkosításokat, CHACHA20_POLY1305például a TLS 1.3-at és a protokollokat 1.1.1. Sőt, saját bináris összeállításával személyre szabhatja, hogy az Nginx milyen funkciókat biztosítson, ami sokkal rugalmasabb, mint egy előre beépített bináris telepítése.

Hagyj kommentárt

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Ez az oktatóanyag végigvezeti Önt a Vultrs rendszerekkel kompatibilis Windows ISO létrehozásának folyamatán. Itt megtanulhatja az <>Windows ISO<> előállításának lépéseit az NTLite segítségével.

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.