Kako nastaviti nenadzorovane nadgradnje na Debian 9 (raztegni)
Uporaba drugega sistema? Če kupite strežnik Debian, morate vedno imeti najnovejše varnostne popravke in posodobitve, ne glede na to, ali spite ali ne
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 ./configure
datoteko Nginx, določen v času prevajanja s skriptom. Statični moduli uporabljajo --with-foo_bar_module
ali --add-module=PATH
sintakso.
Za prevajanje jedrnega (standardnega) modula kot dinamičnega dodamo =dynamic
na primer --with-http_image_filter_module=dynamic
.
Za prevajanje modula drugega proizvajalca kot dinamičnega uporabljamo --add-dynamic-module=/path/to/module
sintakso, nato pa jih naložimo z uporabo load_module
direktive v globalnem kontekstu nginx.conf
datoteke.
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 sudo
dostopom.
adduser johndoe --gecos "John Doe" usermod -aG sudo johndoe
OPOMBA : Zamenjajte johndoe
z 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
, git
in 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.gz
datoteke. 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/modules
do /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.service
datoteko 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/nginx
datoteko.
[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 .default
datotek v /etc/nginx
. Odstranite .default
datoteke iz /etc/nginx
imenika.
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-available
in sites-enabled
v /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_POLY1305
kot 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.
Uporaba drugega sistema? Če kupite strežnik Debian, morate vedno imeti najnovejše varnostne popravke in posodobitve, ne glede na to, ali spite ali ne
Ta vadnica pojasnjuje, kako nastaviti strežnik DNS z uporabo Bind9 v Debianu ali Ubuntuju. V celotnem članku ustrezno nadomestite your-domain-name.com. Ob th
V tem članku bomo videli, kako prevesti in namestiti Nginx mainline iz uradnih virov Nginxa z modulom PageSpeed, ki vam omogoča
Uporaba drugega sistema? Uvod Kanboard je brezplačen in odprtokodni program za vodenje projektov, ki je zasnovan za olajšanje in vizualizacijo
Uporaba drugega sistema? Gitea je alternativni odprtokodni sistem za nadzor različic, ki ga poganja Git. Gitea je napisana v Golangu in je
Uvod Lynis je brezplačno, odprtokodno orodje za revizijo sistema, ki ga uporabljajo številni sistemski skrbniki za preverjanje integritete in utrjevanje svojih sistemov. jaz
Uporaba drugega sistema? Thelia je odprtokodno orodje za ustvarjanje spletnih strani e-poslovanja in upravljanje spletnih vsebin, napisanih v PHP. Izvorna koda Thelia i
Kaj potrebujete Vultr VPS z vsaj 1 GB RAM-a. SSH dostop (z root/administrativnimi pravicami). 1. korak: Namestitev BungeeCord Najprej najprej
Golang je programski jezik, ki ga je razvil Google. Zahvaljujoč svoji vsestranskosti, preprostosti in zanesljivosti je Golang postal eden najbolj priljubljenih
Če ste pozabili korensko geslo MySQL, ga lahko ponastavite tako, da sledite korakom v tem članku. Postopek je precej preprost in deluje na njih
V tem priročniku bomo postavili strežnik iger Counter Strike: Source na Debian 7. Ti ukazi so bili preizkušeni v Debianu 7, vendar bi morali delovati tudi o
V tem priročniku se boste naučili, kako nastaviti strežnik Unturned 2.2.5 na Vultr VPS z Debianom 8. Opomba: To je urejena različica Unturned, ki ne
V tej vadnici se boste naučili, kako namestiti Cachet v Debian 8. Cachet je zmogljiv odprtokodni sistem strani s stanjem. Namestitev Ta vadnica se nadaljuje
Uvod V tem zapisu si oglejte, kako varnostno kopirati več baz podatkov MySQL ali MariaDB, ki se nahajajo na istem računalniku z uporabo bash skripta po meri.
Ta članek vas bo naučil, kako nastaviti chroot jail v Debianu. Predvidevam, da uporabljate Debian 7.x. Če uporabljate Debian 6 ali 8, bo to morda delovalo, bu
Using a Different System? Reader Self 3.5 is a simple and flexible, free and open source, self-hosted RSS reader and Google Reader alternative. Reader Sel
Uporaba drugega sistema? Backdrop CMS 1.8.0 je preprost in prilagodljiv, mobilnim prijazen, brezplačen in odprtokoden sistem za upravljanje vsebine (CMS), ki nam omogoča
V tej vadnici bomo namestili SteamCMD. SteamCMD lahko uporabite za prenos in namestitev številnih strežnikov za igre Steam, kot je Counter-Strike: Global Offensiv
Kot morda veste, se skladišča Debian posodabljajo zelo počasi. V času pisanja sta izdani različici Pythona na 2.7.12 in 3.5.2, vendar v skladišču Debian 8
Samba je odprtokodna rešitev, ki uporabnikom omogoča hitro in varno nastavitev skupne rabe datotek in tiska. V tem članku bom obravnaval, kako nastaviti Samba wit
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.
Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.
Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.
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č