Nginx de actualizare fără a pierde conexiunile client

Având servere în centre de date sigure din Europa. Deschideți nor VPS server / VDS pe un SSD rapid în 1 minut!

Cel mai bun Web Hosting:
- va proteja datele împotriva accesului neautorizat într-un centru european de date securizat
- va plăti cel puțin în Bitcoin.
- Acesta va pune distribuție

- protecție împotriva atacurilor DDoS-
- gratuit de backup
- Uptime 99,9999%
- DPC - TIER III
- ISP - NIVELULUI I

Suport în 24/7/365 rusă lucra cu persoane juridice și persoane fizice. Ai nevoie de acum 24 de bază și 72 GB RAM. Vă rog!

Tarifele noastre competitive dovedesc că cele mai ieftine de găzduire pe care nu a știut!

O chestiune de minute, selectați configurația, să plătească și CMS pe un VPS este gata.
Bani Înapoi - 30 de zile!

Carduri bancare, moneda electronică prin intermediul unor terminale QIWI, Webmoney, PayPal, Novoplat și altele.

Pune o intrebare 24/7/365 Suport

Găsiți răspunsurile în baza noastră de date, și să respecte recomandările din

Nginx - un server web popular și server proxy inversă cu performanță ridicată. În acest ghid, ne vom concentra pe modul de a actualiza fișierele executabile Nginx, fără a pierde conexiuni client.

cerinţe

Pentru a efectua managementul are nevoie de un utilizator non-root cu sudo și server Nginx pre-instalat.

Pentru Ubuntu 14.04:

Cum a fost actualizat Nginx?

Nginx de lucru este de a crea un serviciu de pornire de master-proces. serviciul principal începe chiar una sau mai multe procese care se ocupa de conexiuni client, la rândul său. Primirea unor semnale de administrator, Nginx va efectua unele număr de acțiuni. Este aceste semnale furnizează administratorului posibilitatea de a actualiza cu ușurință Nginx sau configura serverul, fără a pierde conexiunile client.

Unele servicii script-uri oferite de distribuție, permit utilizarea acestei funcții în pachetul normal de actualizare. Cu toate acestea, actualizarea făcută de mână oferă o mare flexibilitate și vă permite să verificați pentru actualizări pentru a reveni rapid la o versiune anterioară a pachetului, în cazul unor probleme. De asemenea, vă permite să faceți upgrade cu ușurință serverul Nginx instalat de la codul sursă (sau altă metodă care nu acceptă această funcție).

Pentru a face acest lucru, utilizați semnalele:

  • USR2: lansarea unui nou set de principal și fluxuri de lucru, fără a afecta procesele care rulează anterior.
  • WINCH: opri procesele legate de procesul principal Nginx.
  • HUP: spune ca procesul principal Nginx recitească fișierul de configurare și să înlocuiască fluxurile de lucru ale noii configurație. Dacă trimiteți semnalul de la procesul principal în vârstă, aceasta va crea fluxuri de lucru în funcție de configurația vechi.
  • QUIT: off procesul principal și fluxurile de lucru.
  • TERMEN: întrerupe rapid procesul principal și fluxuri de lucru.
  • KILL: ucide procesul principal și fluxuri de lucru.

Procesul de detectare Nginx PID

Pentru a trimite semnale de la diferite procese de server trebuie să cunoască PID (proces Număr de identificare, ID-ul) al procesului țintă. Acesta poate fi găsit în două moduri.

Puteți utiliza utilitarul ps, și apoi găsi rezultat Nginx folosind grep. Această metodă simplă face posibilă pentru a găsi cheia și fluxuri de lucru.

ps aux | grep Nginx
rădăcină 10846 0,0 0,3 47,564 3280. S 13:26 0:00 nginx: proces master / usr / sbin / nginx -c /etc/nginx/nginx.conf
nginx 0.0 0.1 47936 10847 1908. S 13:26 0:00 nginx: proces muncitor
utilizatorului 10961 0.0 0.0 112640 964 pts / 0 S + 13:53 0:00 grep --color = auto Nginx

procesele PID este în a doua coloană. Roșu a subliniat procesul de PIDiskomogo. Ultima linie spune că procesul de master Nginx a lansat în primul rând.

De asemenea, PID proces de master Nginx poate fi derivată din conținutul fișierului /run/nginx.pid.

pisica /run/nginx.pid
10846

Dacă două procese principale serverul a se execută Nginx, proces vechi Bole va fi mutat la /run/nginx.pid.oldbin.

Lansarea noilor procese Nginx

Pentru a începe actualizarea fișierului executabil, trebuie să actualizați un fișier binar. Metoda de actualizare acest fișier depinde de metoda de setare Nginx (prin intermediul unui manager de pachete sau de la codul sursă)

Atunci când noul fișier binar în loc, executați un al doilea set de fluxuri de lucru principale și care utilizează noul fișier executabil.

Pentru a face acest lucru, aveți nevoie pentru a trimite un semnal la USR2 constatat anterior PID a procesului.

sudo -s ucide USR2 10846

Notă: Această necesitate convențional PID pentru a înlocui ID-ul lor.

In plus, pentru a detecta și de a folosi procesul țintă PID poate fi direct în timpul trimiterii semnalului:

sudo -s ucide USR2 `pisica / run / nginx.pid`

Verificați procesele de funcționare pentru a se asigura că al doilea set de procese au început cu succes:

ps aux | grep Nginx
rădăcină 10846 0,0 0,3 47,564 3280. S 13:26 0:00 nginx: proces master / usr / sbin / nginx -c /etc/nginx/nginx.conf
nginx 0.0 0.1 47936 10847 1908. S 13:26 0:00 nginx: proces muncitor
rădăcină 11003 0,0 0,3 47,564 3132. S 13:56 0:00 nginx: proces master / usr / sbin / nginx -c /etc/nginx/nginx.conf
nginx 0.0 0.1 47936 11004 1912. S 13:56 0:00 nginx: proces muncitor
utilizatorului 11031 0.0 0.0 112640 960 pts / 0 S + 14:01 0:00 grep --color = auto Nginx

Puteți vedea, de asemenea, că fișierul original a fost mutat /run/nginx.pid în /run/nginx.pid.oldbin, și PID al noului proces de master-înregistrat în /run/nginx.pid:

coadă +1 /run/nginx.pid* -n
==> /run/nginx.pid <==
11003
==> /run/nginx.pid.oldbin <==
10846

Acum, semnalele pot fi trimise la oricare dintre aceste procese majore intra PID corespunzătoare.

În acest moment, ambele seturi de procese de lucru și poate răspunde întrebărilor clienților. Primul set utilizează executabil original și un fișier de configurare Nginx, iar al doilea set folosește o versiune mai nouă a acestor fișiere. Ei pot continua să lucreze împreună. Acum sunteți gata să actualizați serveera Web Nginx.

Opriți vechiul set de procese

Pentru a începe trecerea la un nou set de procese, trebuie să se oprească mai întâi fluxul de lucru al procesului principal inițial (de exemplu, un set de procese depășite). Fluxuri de lucru originale termina procesarea toate conexiunile sale curente, apoi se va opri.

Pentru a opri acest proces, aveți nevoie pentru a trimite un semnal la procesul lor WINCH principal.

sudo -s ucide WINCH `pisica / run / nginx.pid.oldbin`

Astfel, procesarea cererilor de client va merge complet la un nou set de fluxuri de lucru. Procesul principal original este încă lansat, dar nu va funcționa procese:

ps aux | grep Nginx
rădăcină 10846 0,0 0,3 47,564 3280. S 13:26 0:00 nginx: proces master / usr / sbin / nginx -c /etc/nginx/nginx.conf
rădăcină 11003 0,0 0,3 47,564 3132. S 13:56 0:00 nginx: proces master / usr / sbin / nginx -c /etc/nginx/nginx.conf
nginx 0.0 0.1 47936 11004 1912. S 13:56 0:00 nginx: proces muncitor
utilizatorului 11089 0.0 0.0 112640 964 pts / 0 R + 14:13 0:00 grep --color = nginx auto

Acest lucru vă permite să testați noi procese de afaceri, deoarece acestea iau acum compuși izolați, lăsând posibilitatea de a reveni la vechea versiune a fișierului executabil, dacă ceva nu merge bine.

Rezultate și pașii următori

În această etapă, trebuie să verificați sistemul și asigurați-vă că nu au existat erori sau probleme. Puteți lăsa configurația în această stare atât timp cât 100% sunt siguri că noul fișier executabil nu conține erori.

Alte acțiuni depind în totalitate de rezultatele testelor.

Finalizarea mișcare

În cazul de actualizare cu succes de tranziție.

Dacă în timpul inspecției nu au fost erori, puteți dezactiva procesul de master depășite. Pentru a face acest lucru, trimiteți-le un semnal:

sudo -s ucide QUIT `pisica / run / nginx.pid.oldbin`

După aceea, procesul de master învechit va fi oprit, iar singurul va un nou set de procese Nginx. Nginx fișier binar de actualizare este finalizat cu succes, toate conexiunile client sunt lăsate pe loc.

Restaurarea fișier binar vechi

Dacă noi fluxuri de lucru în timp ce verificarea a întâmpinat o eroare, trebuie să reporniți configurația vechi și fișierele binare. Acest lucru se poate face în sesiunea curentă.

Pentru a restaura vechile fluxurile de lucru au nevoie pentru a trimite un semnal HUP. De regulă, procesul principal Nginx atunci când acest semnal citește fișierele de configurare și de a începe noi fluxuri de lucru. Cu toate acestea, în cazul în care semnalul este trimis la procesul de vechi maestru, ea începe doar noile fluxuri de lucru, folosind configurația originală:

sudo -s ucide HUP `pisica / run / nginx.pid.oldbin`

Acum, pe server se execută din spate două seturi de procese:

Noile fluxuri de lucru sunt asociate cu procesul principal vechi. Acum conexiuni client alimentat la două seturi de procese. Opri mai nou proces principal conține o eroare, iar procesele de lucru folosind QUIT semnale:

sudo -s ucide QUIT `pisica / run / nginx.pid`

Acum, toate cererile sunt tratate originale set complet de procese.

Procesul principal PID se mută la /run/nginx.pid fișier.

Dacă instrucțiunile propuse mai sus nu a funcționat pentru orice motiv, încercați să trimiteți noul proces de master un semnal termen care inițiază otklyuchenie.Eto acestuia ar trebui să se oprească nou master-proces și a tuturor proceselor sale de afaceri, de reînnoire automată vechi de master-și procesul de inițiere a fluxurilor de lucru sale.

Dacă nu există erori au dispărut, iar fluxurile de lucru care conțin erori, nu se opresc, curățați-le folosind semnal KILL. Rețineți că această metodă ar trebui să fie luate în considerare în ultimul rând, din moment ce acest semnal resetează conexiunea client.

Revenind la vechea versiune a fișierului binar, amintiți-vă că anterior descărcat noua versiune este încă pe server. Scoateți versiunea care conține eroarea și reporniți Nginx, revenind la versiunea veche.