O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
Nginx este un software de server web open-source proiectat cu o mare concordanță în minte, care poate fi utilizat ca server HTTP / HTTPS, server proxy invers, server proxy mail, echilibrator de software, terminator TLS, server de memorie în cache și multe altele!
Este o piesă software foarte modulară. Chiar și unele părți aparent „încorporate” ale software-ului, cum ar fi GZIP sau SSL, sunt de fapt create ca module care pot fi activate și dezactivate în timpul perioadei de construire.
Are module core (native) și module terțe (externe) create de comunitate. Momentan, există peste o sută de module terțe pe care le putem utiliza.
Scris în C, este o piesă software rapidă și ușoară.
Instalarea Nginx din codul sursă este relativ ușoară - descărcați cea mai recentă versiune a codului sursă Nginx, configurați, construiți și instalați-l.
Va trebui să alegeți dacă descărcați linia principală sau o versiune stabilă, dar construirea acestora este aceeași.
În acest ghid, vom compila o versiune principală a Nginx pe Debian 10 (buster). Vom folosi toate modulele disponibile în versiunea open source a Nginx.
Probabil vă întrebați de ce ar compila Nginx dintr-o sursă atunci când puteți utiliza pachete pregătite. Iată câteva motive pentru care poate doriți să compilați software special:
Nginx Open Source este disponibil în două versiuni:
Nginx are două tipuri de module pe care le puteți utiliza: module de bază și module terțe.
Dezvoltatorii Nginx de bază construiesc module de bază și fac parte din software-ul în sine.
Comunitatea creează module terțe și le puteți utiliza pentru a extinde funcționalitatea. Există o mulțime de module utile pentru terți.
Module statice există în Nginx încă de la prima versiune. Modulele dinamice au fost introduse cu Nginx 1.9.11+ în februarie 2016.
Cu modulele statice, un set de module care constituie un binar Nginx este fixat în timpul compilării de ./configurescript. Utilizarea modulelor statice --with-foo_bar_modulesau --add-module=PATHsintaxa.
Pentru a compila un modul core (standard) la fel de dinamic adăugăm =dynamic, de exemplu --with-http_image_filter_module=dynamic.
Pentru a compila un modul terț ca dinamic, folosim --add-dynamic-module=/path/to/modulesintaxa, apoi le încărcăm folosind load_moduledirectiva în contextul global al nginx.conffișierului.
În comparație cu un alt software UNIX / Linux, Nginx este destul de ușor și nu are multe dependențe de bibliotecă. Configurația implicită de compilare depinde de doar 3 biblioteci care trebuie instalate: OpenSSL / LibreSSL / BoringSSL, Zlib și PCRE.
NOTĂ : Nginx poate fi, de asemenea, compilat cu LibreSSL și BoringSSL criptografie în loc de OpenSSL.
Verificați versiunea Debian.
lsb_release -ds
# Debian GNU/Linux 10 (buster)
Creați un utilizator obișnuit cu sudoacces.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
NOTĂ : Înlocuiți johndoecu numele de utilizator .
Comutați la un utilizator nou.
su - johndoe
Setați fusul orar.
sudo dpkg-reconfigure tzdata
Actualizați software-ul sistemului dvs. de operare.
sudo apt update && sudo apt upgrade -y
Instalați pachetele necesare.
sudo apt install -y software-properties-common ufw
Nginx este un program scris în C, așa că mai întâi va trebui să instalați un instrument de compilare. Instalați build-essential, gitși tree.
sudo apt install -y build-essential git tree
Descărcați cea mai recentă versiune principală a codului sursă Nginx și despachetați arhiva codului sursă. Codul sursă Nginx este distribuit ca arhivă comprimată, ca majoritatea software-ului Unix și Linux.
wget https://nginx.org/download/nginx-1.17.2.tar.gz && tar zxvf nginx-1.17.2.tar.gz
Descărcați codul sursă al dependențelor Nginx obligatorii și extrageți-l.
# 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
Instalați dependențe opționale Nginx.
sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev
Curățați toate .tar.gzfișierele. Nu mai avem nevoie de ele.
rm -rf *.tar.gz
Introduceți directorul sursă Nginx.
cd ~/nginx-1.17.2
Pentru o listă bună a directorilor și fișierelor care compun codul sursă Nginx tree.
tree -L 2 .
Copiați pagina 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
Pentru ajutor, puteți vedea o listă completă de opțiuni actualizate pentru compilare Nginx, executând următoarele.
./configure --help
# To see want core modules can be built as dynamic run:
./configure --help | grep -F =dynamic
Configurați, compilați și instalați 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
După compilare, navigați la ~directorul dvs. de acasă ( ).
cd ~
Faceți legătura de legătură /usr/lib/nginx/modulescu /etc/nginx/modules. Acesta este un loc standard pentru modulele Nginx.
sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules
Tipăriți versiunea Nginx, versiunea compilatorului și configurați parametrii scriptului.
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 . . .
# . . .
# . . .
Creați un grup de sistem Nginx și un utilizator.
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
Verificați sintaxa Nginx și erorile potențiale.
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
Creați un fișier de unitate de sistem Nginx.
sudo vim /etc/systemd/system/nginx.service
Populați /etc/systemd/system/nginx.servicefișierul cu următorul conținut.
[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
Activați Nginx pentru a porni la pornire și porniți Nginx imediat.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Verificați dacă Nginx va iniția automat după repornire.
sudo systemctl is-enabled nginx.service
# enabled
Verificați starea.
sudo systemctl status nginx.service
NOTĂ : Puteți verifica dacă Nginx rulează accesând domeniul sau adresa IP a site-ului dvs. într-un browser web. Veți vedea pagina de bun venit Nginx. Acesta este un indicator că Nginx funcționează pe VPS.
Creați un profil de aplicație UFW Nginx.
sudo vim /etc/ufw/applications.d/nginx
Copiați / inserați următorul conținut în /etc/ufw/applications.d/nginxfișier.
[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
Validați că profilurile de aplicații UFW sunt create și recunoscute.
sudo ufw app list
# Available applications:
# Nginx Full
# Nginx HTTP
# Nginx HTTPS
# OpenSSH
În mod implicit, Nginx generează .defaultfișiere de rezervă în /etc/nginx. Ștergeți .defaultfișierele din /etc/nginxdirector.
sudo rm /etc/nginx/*.default
Plasați evidențierea de sintaxă a configurației Nginx pentru editorul Vim ~/.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/
NOTĂ : Făcând pasul de mai sus, veți obține o sintaxă frumoasă evidențiată la editarea fișierelor de configurare Nginx în editorul Vim.
Crearea conf.d, snippets, sites-availableși sites-enableddirectoare în /etc/nginx.
sudo mkdir /etc/nginx/{conf.d,snippets,sites-available,sites-enabled}
Modificați permisiunile și proprietatea de grup a fișierelor de jurnal Nginx.
sudo chmod 640 /var/log/nginx/*
sudo chown nginx:adm /var/log/nginx/access.log /var/log/nginx/error.log
Creați o configurație de rotație a jurnalului pentru Nginx.
sudo vim /etc/logrotate.d/nginx
Populați fișierul cu următorul text, apoi salvați și ieșiți.
/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
}
Eliminați toate fișierele descărcate din directorul principal.
cd ~
rm -rf nginx-1.17.2/ openssl-1.1.1c/ pcre-8.43/ zlib-1.2.11/
Asta e. Acum, aveți instalată cea mai recentă versiune de Nginx. Este compilat static cu unele biblioteci importante, cum ar fi OpenSSL. Adesea, versiunea OpenSSL furnizată de sistem este depășită. Utilizând această metodă de instalare cu o versiune mai nouă a OpenSSL, puteți profita de cifre moderne precum CHACHA20_POLY1305și protocoale precum TLS 1.3, care sunt disponibile în OpenSSL 1.1.1. Mai mult, compilând propriul dvs. binar, puteți adapta ce funcționalitate vă va oferi Nginx, care este mult mai flexibil decât instalarea unui binar pre-construit.
O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.
Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.
Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.
Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.
Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.
CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?
Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!
Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.
Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe