Vzpon strojev: aplikacije AI v resničnem svetu
Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.
Uvod
Nginx je odprtokodna programska oprema za spletni strežnik, zasnovana z mislijo na visoko sočasnost, ki se lahko uporablja kot strežnik HTTP/HTTPS, povratni proxy strežnik, poštni proxy strežnik, programska oprema za uravnoteženje obremenitve, terminator TLS, strežnik za predpomnjenje in še več!
Je zelo modularen kos programske opreme. Tudi nekateri navidez "vgrajeni" deli programske opreme, kot sta GZIP ali SSL, so dejansko ustvarjeni kot moduli, ki jih je mogoče omogočiti in onemogočiti med časom gradnje.
Ima osnovne (domače) module in (zunanje) module tretjih oseb, ki jih je ustvarila skupnost. Trenutno je na voljo več kot sto modulov drugih proizvajalcev, ki jih lahko uporabimo.
Napisana v C, je hitra in lahka programska oprema.
Namestitev Nginxa iz izvorne kode je razmeroma enostavna – prenesite najnovejšo različico izvorne kode Nginx, jo konfigurirajte, zgradite in namestite.
Izbrati boste morali, ali želite prenesti glavno linijo ali stabilno različico, vendar je njihova izdelava enaka.
V tem priročniku bomo sestavili glavno različico Nginxa na Debian 10 (buster). Uporabili bomo vse razpoložljive module v odprtokodni različici Nginxa.
Zakaj prevajati in namestiti Nginx iz vira
Verjetno se sprašujete, zakaj bi prevajali Nginx iz vira, če lahko uporabite pripravljene pakete. Tukaj je nekaj razlogov, zakaj boste morda želeli sami sestaviti določeno programsko opremo:
Stabilna v primerjavi z glavno različico
Nginx Open Source je na voljo v dveh različicah:
Jedrni moduli v primerjavi z moduli tretjih oseb
Nginx ima dve vrsti modulov, ki ju lahko uporabite: osnovne module in module tretjih oseb.
Osnovni razvijalci Nginxa gradijo jedrne module in so del same programske opreme.
Skupnost gradi module tretjih oseb in jih lahko uporabite za razširitev funkcionalnosti. Obstaja veliko uporabnih modulov tretjih oseb.
Statični moduli v primerjavi z dinamičnimi moduli
Statični moduli obstajajo v Nginxu že od prve različice. Dinamični moduli so bili predstavljeni z Nginxom 1.9.11+ februarja 2016.
Pri statičnih modulih je nabor modulov, ki sestavljajo dvojiško ./configuredatoteko Nginx, določen v času prevajanja s skriptom. Statični moduli uporabljajo --with-foo_bar_moduleali --add-module=PATHsintakso.
Za prevajanje jedrnega (standardnega) modula kot dinamičnega dodamo =dynamicna primer --with-http_image_filter_module=dynamic.
Za prevajanje modula drugega proizvajalca kot dinamičnega uporabljamo --add-dynamic-module=/path/to/modulesintakso, nato pa jih naložimo z uporabo load_moduledirektive v globalnem kontekstu nginx.confdatoteke.
Zahteve za gradnjo Nginxa iz vira
V primerjavi z neko drugo programsko opremo UNIX/Linux je Nginx precej lahek in nima veliko odvisnosti od knjižnic. Privzeta konfiguracija gradnje je odvisna od samo treh knjižnic, ki jih je treba namestiti: OpenSSL/LibreSSL/BoringSSL, Zlib in PCRE.
OPOMBA : Nginx je mogoče prevesti tudi s kripto knjižnicami LibreSSL in BoringSSL namesto OpenSSL.
Preden začneš
Preverite različico Debiana.
lsb_release -ds # Debian GNU/Linux 10 (buster)
Ustvarite navadnega uporabnika z sudodostopom.
adduser johndoe --gecos "John Doe" usermod -aG sudo johndoe
OPOMBA : Zamenjajte johndoez vašim uporabniškim imenom .
Preklopite na novega uporabnika.
su - johndoe
Nastavite časovni pas.
sudo dpkg-reconfigure tzdata
Posodobite programsko opremo svojega operacijskega sistema.
sudo apt update && sudo apt upgrade -y
Namestite potrebne pakete.
sudo apt install -y software-properties-common ufw
Zgradite Nginx iz vira
Nginx je program, napisan v C, zato boste morali najprej namestiti orodje za prevajanje. Namestiti build-essential, gitin tree.
sudo apt install -y build-essential git tree
Prenesite najnovejšo glavno različico izvorne kode Nginx in odpakirajte arhiv izvorne kode. Izvorna koda Nginx se distribuira kot stisnjen arhiv, tako kot večina programske opreme Unix in Linux.
wget https://nginx.org/download/nginx-1.17.2.tar.gz && tar zxvf nginx-1.17.2.tar.gz
Prenesite obvezno izvorno kodo odvisnosti Nginx in jo ekstrahirajte.
# 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
Namestite neobvezne odvisnosti Nginx.
sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev
Očistite vse .tar.gzdatoteke. Ne potrebujemo jih več.
rm -rf *.tar.gz
Vnesite izvorni imenik Nginx.
cd ~/nginx-1.17.2
Za dober seznam mer imenikov in datotek, ki sestavljajo izvorno kodo Nginx z tree.
tree -L 2 .
Kopirajte stran priročnika v /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
Za pomoč si lahko ogledate celoten seznam posodobljenih možnosti časa prevajanja Nginx, tako da zaženete naslednje.
./configure --help # To see want core modules can be built as dynamic run: ./configure --help | grep -F =dynamic
Konfigurirajte, prevedite in namestite 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 prevajanju se pomaknite do domačega ( ~) imenika.
cd ~
Simbolna povezava /usr/lib/nginx/modulesdo /etc/nginx/modules. To je standardno mesto za module Nginx.
sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules
Natisnite različico Nginxa, različico prevajalnika in konfigurirajte parametre skripta.
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 . . . # . . . # . . .
Ustvarite sistemsko skupino in uporabnika 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
Preverite sintakso Nginx in morebitne napake.
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
Ustvarite datoteko enote Nginx systemd.
sudo vim /etc/systemd/system/nginx.service
Napolnite /etc/systemd/system/nginx.servicedatoteko z naslednjo vsebino.
[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
Omogočite zagon Nginxa ob zagonu in takoj zaženite Nginx.
sudo systemctl enable nginx.service sudo systemctl start nginx.service
Preverite, ali se bo Nginx samodejno zagnal po ponovnem zagonu.
sudo systemctl is-enabled nginx.service # enabled
Preverite stanje.
sudo systemctl status nginx.service
OPOMBA : Ali Nginx deluje, lahko preverite tako, da v spletnem brskalniku obiščete domeno ali naslov IP vašega spletnega mesta. Videli boste pozdravno stran Nginxa. To je pokazatelj, da je Nginx pripravljen in deluje na vašem VPS.
Ustvarite profil aplikacije UFW Nginx.
sudo vim /etc/ufw/applications.d/nginx
Kopirajte/prilepite naslednjo vsebino v /etc/ufw/applications.d/nginxdatoteko.
[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
Preverite, ali so profili aplikacij UFW ustvarjeni in prepoznani.
sudo ufw app list # Available applications: # Nginx Full # Nginx HTTP # Nginx HTTPS # OpenSSH
Nginx privzeto ustvari varnostne kopije .defaultdatotek v /etc/nginx. Odstranite .defaultdatoteke iz /etc/nginximenika.
sudo rm /etc/nginx/*.default
Postavite osvetlitev sintakse konfiguracije Nginx za urejevalnik Vim v ~/.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/
OPOMBA : Če naredite zgornji korak, boste pri urejanju konfiguracijskih datotek Nginx v urejevalniku Vim dobili lepo osvetlitev sintakse.
Ustvarite imenike conf.d, snippets, sites-availablein sites-enabledv /etc/nginx.
sudo mkdir /etc/nginx/{conf.d,snippets,sites-available,sites-enabled}
Spremenite dovoljenja in skupinsko lastništvo dnevniških datotek Nginx.
sudo chmod 640 /var/log/nginx/* sudo chown nginx:adm /var/log/nginx/access.log /var/log/nginx/error.log
Ustvarite konfiguracijo rotacije dnevnika za Nginx.
sudo vim /etc/logrotate.d/nginx
Napolnite datoteko z naslednjim besedilom, nato shranite in zaprite.
/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 }
Odstranite vse prenesene datoteke iz domačega imenika.
cd ~ rm -rf nginx-1.17.2/ openssl-1.1.1c/ pcre-8.43/ zlib-1.2.11/
Povzetek
To je to. Zdaj imate nameščeno najnovejšo različico Nginxa. Sestavljen je statično glede na nekatere pomembne knjižnice, kot je OpenSSL. Pogosto je sistemska različica OpenSSL zastarela. Z uporabo tega načina namestitve z novejšo različico OpenSSL lahko izkoristite prednosti sodobnih šifr, CHACHA20_POLY1305kot je TLS 1.3, in protokolov, ki so na voljo v OpenSSL 1.1.1. Poleg tega lahko s prevajanjem lastne binarne datoteke prilagodite funkcionalnost, ki jo bo nudil vaš Nginx, kar je veliko bolj prilagodljivo kot namestitev vnaprej zgrajenega dvojiškega zapisa.
Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.
Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.
Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.
Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.
Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…
Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.
Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.
Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.
V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.
Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več