Nginx актуализация, без да губи клиентските връзки

Като сървъри в сигурни центрове за данни в Европа. Open облак VPS / VDS сървър на бърз SSD за 1 минута!

Най-добър уеб хостинг:
- ще предпазят данните от неоторизиран достъп в защитена Европейския център за данни
- ще плати най-малко в Bitcoin.
- Той ще постави вашата дистрибуция

- защита от DDoS-атаки
- безплатно архивиране
- Uptime 99,9999%
- DPC - TIER III
- ISP - етап I

Подкрепа в руските 24/7/365 работи с юридически и физически лица. Сега трябва 24 ядро ​​и 72 Gb RAM. Моля ви!

Нашите конкурентни цени доказват, че най-евтиният хостинг, че не знаеш!

За броени минути, изберете конфигурация, заплати и CMS на VPS е готова.
Връщане на парите - за 30 дни!

Банкови карти, електронни валута през QIWI терминали, Webmoney, PayPal, Novoplat и други.

Задайте въпрос 24/7/365 поддръжка

Намерете отговорите в нашата база данни, както и да отговарят на препоръките на

Nginx - популярен уеб сървър и обратно прокси сървър с висока производителност. В това ръководство, ние ще се фокусира върху това как да се актуализират изпълними файлове Nginx, без да губят връзки с клиенти.

изисквания

За да изпълните управление се нуждае от не-корен потребител с Sudo и предварително инсталиран Nginx сървър.

За Ubuntu 14.04:

Актуализиран Nginx?

Nginx работа е да се създаде майстор-технологични стартиращи услуги. основната услуга започва дори един или повече процеси, които боравят с връзки с клиенти, от своя страна. Получаване на определени сигнали от администратора, Nginx ще изпълнява някои брой действия. Именно тези сигнали предоставят на администратора възможност лесно да се актуализира Nginx или конфигурирате сървъра, без да се губи клиентските връзки.

Някои скриптове услуги, предоставяни от разпределението, позволяват използването на тази функция в нормален пакет ъпгрейд. Въпреки това, актуализацията направени на ръка осигурява голяма гъвкавост и ви позволява да проверите за актуализации бързо да се върне към предишната версия на пакета, в случай на каквито и да било проблеми. Той също така ви позволява лесно да обновите Nginx сървър инсталиран от изходен код (или друг метод, който не поддържа тази функция).

За да направите това, използвайте сигналите:

  • USR2: стартирането на нов набор от основни и работни потоци, без да засягат по-рано стартираните процеси.
  • WINCH: спиране на процесите, свързани с основния процес Nginx.
  • HUP: казва основния процес Nginx препрочитам конфигурационния файл и да заменят работните процеси на новата конфигурация. Ако изпратите сигнал към по-старата основния процес, то ще създаде работни потоци според старата конфигурация.
  • QUIT: встрани от главния процес и работните процеси.
  • СРОК: бързо прекъсва основния процес и работните процеси.
  • Убий: убива основния процес и работните процеси.

Откриване Nginx PID процес

За да изпраща сигнали до различните сървърни процеси трябва да знаете PID (Process идентификационен номер, идентификационен код) на процеса на мишена. Тя може да се намери по два начина.

Можете да използвате инструмента к.с., а след това се намери в резултат на Nginx използвайки Впиши. Този прост метод дава възможност да се намери ключа и работните процеси.

PS AUX | Впиши Nginx
корен 10846 0,0 0,3 47564 3280. S 13:26 0:00 Nginx: майстор процес / ЮЕсАр / sbin / Nginx -С /etc/nginx/nginx.conf
Nginx 10847 0,0 0,1 47936 1908. S 13:26 0:00 Nginx: процес работник
потребител 10961 0.0 0.0 112 640 964 точки / 0 S + 13:53 0:00 Впиши --color = автоматично Nginx

PID процеси е във втората колона. Red подчерта PIDiskomogo процес. Последният ред казва, че Nginx майстор процес стартира в първия ред.

Също PID майстор процес Nginx може да се извлече от съдържанието на /run/nginx.pid на файла.

котка /run/nginx.pid
10846

Ако сървърът има две основни процеси се изпълняват Nginx, Боле стар процес ще бъде преместен в /run/nginx.pid.oldbin.

Стартирането на нови процеси Nginx

За да започнете актуализирането на изпълнимия файл, трябва да актуализирате двоичен файл. актуализация Метод този файл зависи от настройката на Nginx метод (чрез управление на пакетите или от сорс кода)

Когато новият двоичен файл на място, използват втори набор от основни и работни процеси, които използват новата изпълнимия файл.

За да направите това, трябва да се изпрати сигнал до USR2 рано намерен PID на процеса.

Sudo убие -s USR2 10846

Забележка: Този конвенционален PID нужда да замени личната си карта.

Освен това, за да се открият и да използват целева процеса на PID могат да бъдат директно по време на изпращането на сигнала:

Sudo убие -s USR2 `котка / работи / nginx.pid`

Проверете текущите процеси за да се уверите, че втората поредица от процеси, започна успешно:

PS AUX | Впиши Nginx
корен 10846 0,0 0,3 47564 3280. S 13:26 0:00 Nginx: майстор процес / ЮЕсАр / sbin / Nginx -С /etc/nginx/nginx.conf
Nginx 10847 0,0 0,1 47936 1908. S 13:26 0:00 Nginx: процес работник
корен 11003 0,0 0,3 47564 3132. S 13:56 0:00 Nginx: майстор процес / ЮЕсАр / sbin / Nginx -С /etc/nginx/nginx.conf
Nginx 11004 0,0 0,1 47936 1912. S 13:56 0:00 Nginx: процес работник
потребител 11,031 0.0 0.0 112 640 960 точки / 0 S + 14:01 0:00 Впиши --color = автоматично Nginx

Можете също така да се види, че на оригиналния файл е преместен в /run/nginx.pid /run/nginx.pid.oldbin и PID на новия господар-процеса, записана в /run/nginx.pid:

опашка -п 1 /run/nginx.pid*
==> /run/nginx.pid <==
11003
==> /run/nginx.pid.oldbin <==
10846

Сега, сигнали могат да се изпращат до някой от тези основни процеси въведете съответстващ PID.

В момента и двата комплекта процеси работят и могат да се справят запитвания от клиенти. Първият набор използва оригиналния изпълнител и конфигурационен файл Nginx, а вторият набор използва нова версия на тези файлове. Те могат да продължат да работят заедно. Сега сте готови да актуализира уеб serveera Nginx.

Изключете старата поредица от процеси,

За да започне преход към нов набор от процеси, първо трябва да се спре на работния процес от първоначалната основния процес (т.е. остарял набор от процеси). Оригинални работни потоци приключване на обработката на всички от настоящите си връзки, а след това да спре.

За да се спре този процес, трябва да се изпрати сигнал до главния процеса на лебедка.

Sudo убие -s WINCH `котка / работи / nginx.pid.oldbin`

По този начин обработката на клиентски заявки ще отидат изцяло на нов набор от работни потоци. Оригиналният основният процес все още предстои да бъде пуснат, но това няма да стане процеси:

PS AUX | Впиши Nginx
корен 10846 0,0 0,3 47564 3280. S 13:26 0:00 Nginx: майстор процес / ЮЕсАр / sbin / Nginx -С /etc/nginx/nginx.conf
корен 11003 0,0 0,3 47564 3132. S 13:56 0:00 Nginx: майстор процес / ЮЕсАр / sbin / Nginx -С /etc/nginx/nginx.conf
Nginx 11004 0,0 0,1 47936 1912. S 13:56 0:00 Nginx: процес работник
потребител 11089 0.0 0.0 112 640 964 точки / 0 R + 14:13 0:00 Впиши --color = автоматично Nginx

Това ви дава възможност за тестване на нови бизнес процеси, тъй като те вече приемате изолирани съединения, оставяйки възможност да се върнете към версия на изпълнимия файл на стария, ако нещо се обърка.

Резултати и следващи стъпки

На този етап, трябва да се провери системата и се уверете, че не е имало грешки или проблеми. Можете да оставите конфигурацията в това състояние толкова дълго, колкото на 100% сигурни, че новата изпълнимия файл не съдържа грешки.

По-нататъшни действия са изцяло зависими от резултатите от теста.

Завършване на ход

В случай на успешно обновяване пълен преход.

Ако по време на проверката не са грешки, можете да деактивирате остарялата майстор процес. За да направите това, да ги изпрати сигнал:

Sudo убие -s QUIT `котка / работи / nginx.pid.oldbin`

След това, остаряла майстор процес ще бъде спряна и само ще нов набор Nginx процеси. Nginx двоичен файл с актуализация е завършил успешно, всички връзки на клиенти са оставени на мястото си.

Възстановяване на стари двоичен файл

Ако нови работни процеси, при проверка възникне грешка, трябва да рестартирате старата конфигурация и бинарни файлове. Това може да стане в текущата сесия.

За да възстановите старите работни процеси трябва да се изпрати HUP сигнал. Като правило, основният процес Nginx, когато този сигнал чете конфигурационните файлове и да започне нови работни потоци. Въпреки това, ако сигналът се изпраща към стария майстор на процеса, той просто започва нови работни процеси, като се използва оригиналната конфигурация:

Sudo убие -s HUP `котка / работи / nginx.pid.oldbin`

Сега, на сървъра с две групи от процеси се изпълняват:

Нови работни потоци са свързани със стария основния процес. Сега клиентски свързвания храна на две групи от процеси. Стоп-нова основен процес съдържа грешка, и неговите работни процеси, използващи QUIT сигнали:

Sudo убие -s QUIT `котка / работи / nginx.pid`

Сега, всички заявки се обработват изцяло оригинален набор от процеси.

PID главния процес се премества в /run/nginx.pid файл.

Ако инструкциите предложените по-горе не работи по някаква причина, се опита да изпрати новия господар на процеса срок сигнал, който стартира своята otklyuchenie.Eto трябва да спре новата майстор-процес и всички нейни бизнес процеси, автоматично подновяване стар майстор-и процеса на започване на своите работни процеси.

Ако няма грешки са изчезнали, както и работни процеси, които съдържат грешки, не спирайте да се почистват основно с помощта KILL сигнал. Имайте предвид, че този метод трябва да се разглежда в последния завой, тъй като този сигнал се връща на свързването клиент.

Връщайки се към версия на двоичен файл старата, не забравяйте, че изтеглените преди новата версия все още е на сървъра. Премахване на версията, която съдържа грешката, и рестартирайте Nginx, връщайки се към старата версия.