Prezantimi
Nginx është një softuer i serverit në ueb me burim të hapur i krijuar me një konkurencë të lartë në mendje, që mund të përdoret si një server HTTP/HTTPS, server proxy i kundërt, server proxy i postës, balancues i ngarkesës së softuerit, terminator TLS, server memorie dhe më shumë!
Është një pjesë shumë modulare e softuerit. Edhe disa nga pjesët në dukje "të integruara" të softuerit, të tilla si GZIP ose SSL, janë krijuar në të vërtetë si module që mund të aktivizohen dhe çaktivizohen gjatë kohës së ndërtimit.
Ai ka module kryesore (vendase) dhe module të palëve të treta (të jashtme) të krijuara nga komuniteti. Për momentin, ka mbi njëqind module të palëve të treta që mund t'i përdorim.
E shkruar në C, është një softuer i shpejtë dhe i lehtë.
Instalimi i Nginx nga kodi burimor është relativisht i lehtë - shkarkoni versionin më të fundit të kodit burimor Nginx, konfiguroni, ndërtoni dhe instaloni atë.
Do t'ju duhet të zgjidhni nëse do të shkarkoni versionin kryesor apo të qëndrueshëm, por ndërtimi i tyre është i njëjtë.
Në këtë udhëzues, ne do të përpilojmë një version kryesor të Nginx në Debian 10 (buster). Ne do të përdorim të gjitha modulet e disponueshme në versionin me burim të hapur të Nginx.
Pse të përpiloni dhe instaloni Nginx nga burimi
Ju ndoshta pyesni pse mund të përpiloni Nginx nga një burim kur mund të përdorni paketa të përgatitura. Këtu janë disa arsye pse mund të dëshironi të përpiloni vetë softuer specifik:
- Për të kontrolluar opsionet e konfigurimit.
- Për të instaluar softuerin kudo që dëshironi. Ju madje mund të instaloni disa versione të ndryshme të të njëjtit softuer.
- Për të kontrolluar versionin që instaloni. Shpërndarjet nuk qëndrojnë gjithmonë të përditësuara me versionet më të fundit të të gjitha paketave, veçanërisht me shtesat në paketat softuerike.
- Për të kuptuar më mirë se si funksionon softueri.
Versioni i qëndrueshëm kundrejt versionit kryesor
Nginx Open Source është i disponueshëm në dy versione:
- Linja kryesore – Përfshin veçoritë më të fundit dhe rregullimet e gabimeve dhe është gjithmonë i përditësuar. Është i besueshëm, por mund të përfshijë disa module eksperimentale dhe gjithashtu mund të ketë disa gabime të reja.
- I qëndrueshëm – Nuk përfshin të gjitha veçoritë më të fundit, por ka rregullime kritike të gabimeve që raportohen gjithmonë në versionin kryesor.
Modulet bazë kundrejt moduleve të palëve të treta
Nginx ka dy lloje modulesh që mund të përdorni: module bazë dhe module të palëve të treta.
Zhvilluesit kryesorë të Nginx ndërtojnë module thelbësore dhe ato janë pjesë e vetë softuerit.
Komuniteti ndërton module të palëve të treta dhe ju mund t'i përdorni ato për të zgjeruar funksionalitetin. Ka shumë module të dobishme të palëve të treta.
Modulet statike kundrejt moduleve dinamike
Modulet statike ekzistojnë në Nginx që nga versioni i parë. Modulet dinamike u prezantuan me Nginx 1.9.11+ në shkurt 2016.
Me module statike, një grup modulesh që përbëjnë një binar Nginx fiksohen në kohën e përpilimit nga ./configure
skripti. Përdorimi --with-foo_bar_module
ose --add-module=PATH
sintaksa e moduleve statike .
Për të përpiluar një modul bazë (standard) si dinamik, ne shtojmë =dynamic
, për shembull --with-http_image_filter_module=dynamic
.
Për të përpiluar një modul të palës së tretë si dinamik, ne përdorim --add-dynamic-module=/path/to/module
sintaksë dhe më pas i ngarkojmë ato duke përdorur load_module
direktivën në kontekstin global të nginx.conf
skedarit.
Kërkesat për ndërtimin e Nginx nga burimi
Në krahasim me disa softuer të tjerë UNIX/Linux, Nginx është mjaft i lehtë dhe nuk ka shumë varësi të bibliotekës. Konfigurimi i paracaktuar i ndërtimit varet nga vetëm 3 biblioteka që do të instalohen: OpenSSL/LibreSSL/BoringSSL, Zlib dhe PCRE.
- Kërkesat e detyrueshme:
- Kërkesat opsionale:
SHËNIM : Nginx gjithashtu mund të përpilohet kundër bibliotekave kripto LibreSSL dhe BoringSSL në vend të OpenSSL.
Perpara se te fillosh
Kontrolloni versionin e Debian.
lsb_release -ds # Debian GNU/Linux 10 (buster)
Krijo një përdorues të rregullt me sudo
akses.
adduser johndoe --gecos "John Doe" usermod -aG sudo johndoe
SHËNIM : Zëvendësojeni johndoe
me emrin tuaj të përdoruesit .
Kalo te një përdorues i ri.
su - johndoe
Vendosni zonën kohore.
sudo dpkg-reconfigure tzdata
Përditësoni softuerin e sistemit tuaj operativ.
sudo apt update && sudo apt upgrade -y
Instaloni paketat e nevojshme.
sudo apt install -y software-properties-common ufw
Ndërtoni Nginx nga burimi
Nginx është një program i shkruar në C, kështu që fillimisht do t'ju duhet të instaloni një mjet përpilues. Instaluar build-essential
, git
dhe tree
.
sudo apt install -y build-essential git tree
Shkarkoni versionin më të fundit kryesor të kodit burimor Nginx dhe shpaketoni arkivin e kodit burimor. Kodi burimor Nginx shpërndahet si një arkiv i ngjeshur, si shumica e softuerëve Unix dhe Linux.
wget https://nginx.org/download/nginx-1.17.2.tar.gz && tar zxvf nginx-1.17.2.tar.gz
Shkarkoni kodin burimor të detyrueshëm të varësive Nginx dhe nxirrni atë.
# 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
Instaloni varësitë opsionale Nginx.
sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev
Pastroni të gjithë .tar.gz
skedarët. Nuk na duhen më.
rm -rf *.tar.gz
Futni drejtorinë e burimit Nginx.
cd ~/nginx-1.17.2
Për matje të mirë, listoni drejtoritë dhe skedarët që përbëjnë kodin burimor Nginx me tree
.
tree -L 2 .
Kopjoni faqen manual në /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
Për ndihmë, mund të shihni një listë të plotë të opsioneve të përditësuara të kohës së përpilimit të Nginx duke ekzekutuar sa vijon.
./configure --help # To see want core modules can be built as dynamic run: ./configure --help | grep -F =dynamic
Konfiguroni, përpiloni dhe instaloni 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
Pas përpilimit, lundroni te ~
drejtoria juaj e shtëpisë ( ).
cd ~
Lidhja simbolike /usr/lib/nginx/modules
në /etc/nginx/modules
. Ky është një vend standard për modulet Nginx.
sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules
Printoni versionin Nginx, versionin e përpiluesit dhe konfiguroni parametrat e skriptit.
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 . . . # . . . # . . .
Krijoni një grup dhe përdorues të sistemit 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
Kontrolloni sintaksën e Nginx dhe gabimet e mundshme.
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
Krijo një skedar Nginx systemd unit.
sudo vim /etc/systemd/system/nginx.service
Plotësoni /etc/systemd/system/nginx.service
skedarin me përmbajtjen e mëposhtme.
[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
Aktivizo Nginx që të nisë në nisje dhe nis menjëherë Nginx.
sudo systemctl enable nginx.service sudo systemctl start nginx.service
Kontrolloni nëse Nginx do të fillojë automatikisht pas një rindezjeje.
sudo systemctl is-enabled nginx.service # enabled
Kontrolloni statusin.
sudo systemctl status nginx.service
SHËNIM : Mund të verifikoni që Nginx po funksionon duke shkuar te domeni ose adresa IP e faqes suaj në një shfletues uebi. Do të shihni faqen e mirëseardhjes Nginx. Ky është një tregues që Nginx është në funksionim dhe funksionim në VPS-në tuaj.
Krijoni një profil aplikacioni UFW Nginx.
sudo vim /etc/ufw/applications.d/nginx
Kopjo/ngjit përmbajtjen e mëposhtme në /etc/ufw/applications.d/nginx
skedar.
[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
Vërtetoni që profilet e aplikacionit UFW janë krijuar dhe njohur.
sudo ufw app list # Available applications: # Nginx Full # Nginx HTTP # Nginx HTTPS # OpenSSH
Nginx, si parazgjedhje, gjeneron .default
skedarë rezervë në /etc/nginx
. Hiq .default
skedarët nga /etc/nginx
drejtoria.
sudo rm /etc/nginx/*.default
Vendosni theksimin e sintaksës së konfigurimit Nginx për redaktorin Vim në ~/.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/
SHËNIM : Duke bërë hapin e mësipërm, do të merrni një theksim të bukur sintaksor kur redaktoni skedarët e konfigurimit Nginx në redaktuesin Vim.
Krijo conf.d
, snippets
, sites-available
dhe sites-enabled
direktori në /etc/nginx
.
sudo mkdir /etc/nginx/{conf.d,snippets,sites-available,sites-enabled}
Ndryshoni lejet dhe pronësinë e grupit të skedarëve të regjistrave Nginx.
sudo chmod 640 /var/log/nginx/* sudo chown nginx:adm /var/log/nginx/access.log /var/log/nginx/error.log
Krijo një konfigurim të rrotullimit të regjistrit për Nginx.
sudo vim /etc/logrotate.d/nginx
Plotësoni skedarin me tekstin e mëposhtëm, më pas ruajeni dhe dilni.
/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 }
Hiqni të gjithë skedarët e shkarkuar nga drejtoria kryesore.
cd ~ rm -rf nginx-1.17.2/ openssl-1.1.1c/ pcre-8.43/ zlib-1.2.11/
Përmbledhje
Kjo eshte. Tani, ju keni të instaluar versionin më të fundit të Nginx. Është përpiluar në mënyrë statike kundër disa bibliotekave të rëndësishme si OpenSSL. Shpesh, versioni i ofruar nga sistemi i OpenSSL është i vjetëruar. Duke përdorur këtë metodë instalimi me një version më të ri të OpenSSL, mund të përfitoni nga kodet moderne si CHACHA20_POLY1305
dhe protokollet si TLS 1.3 që janë të disponueshme në OpenSSL 1.1.1
. Për më tepër, duke përpiluar binarin tuaj, ju jeni në gjendje të përshtatni se çfarë funksionaliteti do të ofrojë Nginx juaj, gjë që është shumë më fleksibël sesa instalimi i një binar të para-ndërtuar.