Soru Nginx yapılandırma kesinti olmadan yeniden yüklenir


Nginx'i bir ters proxy olarak kullanıyorum. Bunu kullanarak her yapılandırmayı her güncellediğimde

sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
sudo "kill -s HUP `cat /var/run/nginx.pid`"

Kısa bir kesinti ile karşı karşıyayım. Bundan nasıl kurtulabilirim?


95
2018-04-11 17:13


Menşei


Bunlar komut satırı komutları mıydı? Hiç kimsenin bir sudo komutunu böyle bir alıntı yaptığını hiç görmedim, bu gerekli olmayabilir. - brianmearns
Sadece genel bir yorum: Bence standart / önerilen uygulama, site konfigürasyonunuz için yumuşak / sembolik bir link yaratıyor. sites-enabledkopyalamayın. Sorununuzla ilgili değil, ancak buna bakmak isteyebilirsiniz. - brianmearns
Bir kesinti ile karşı karşıya olmamalıdır. kill HUP nginx'te zarif bir yeniden yükleme yapmanın yolu. - Jonathan Vanasco


Cevaplar:


Koşmak service nginx reload veya /etc/init.d/nginx reload

Kesinti olmadan yapılandırmanın yeniden yüklenmesini sağlar. Bekleyen istekleriniz varsa, o bağlantılardan önce bu bağlantıları ele alacak kalıcı nginx süreçleri olacak, bu yüzden yapılandırmaları yeniden yüklemek için son derece zarif bir yoldur.

Bazen baştan başlamak isteyebilirsiniz sudo 


155
2018-04-11 17:24



Her ikisi de, sorunun tam olarak ne yaptığını yapmalıdır: SIGHUP Nginx ana işlemine. Bir fark olmamalı. nginx.org/en/docs/control.html - Gnarfoz
CentOS'taki komutu verdiğimde "Kullan /etc/init.d/nginx (start..stop ... restart..reload)" diyerek devam ediyor. /İnit.d/nginx dosyasında kill -HUP'ı buldum cat $PIDFILE || echo -n "yeniden yüklenemiyor" - mashup
aradaki farkın ne olduğunu biliyor musun service nginx reloadve nginx -s reload? Eğer eskiyi çalıştırırsam, bu çıktıyı alırım: Reloading nginx configuration: nginx.ancak değişikliklerim güncellenmedi. Eğer ikincisini çalıştırırsam, çıktı almam ama değişikliklerim yansıtılır. - Ryan Quinn
Ekledikten sonra bunu denedim log_not_found yönerge ancak işe almak için aslında bir yeniden başlatma yapmak zorunda kaldım. Yeniden yükleme, tüm yönergelere göre çalışmıyor mu? - mydoghasworms


Koşmak /usr/sbin/nginx -s reload

Görmek http://wiki.nginx.org/CommandLine Daha fazla komut satırı seçeneği için.


57
2017-07-27 13:46



Son olarak, Debian Jessie'de çalışan bir komut. - danger89
Bu daha iyi bir yol. Çünkü sunucunuz aşağı Yapılandırmalarınızda hata varsa (sadece bu durumda hataları gösterir). - Mir-Ismaili


Hayır, yanlışsınız, tanımladığınız prosedürle herhangi bir aksama yaşamanız gerekmiyor. (Nginx, yalnızca herhangi bir arıza süresine gerek kalmadan yeniden yüklemeyi yapamaz, ancak yürütülebilir programın süreksiz kalmasına rağmen, herhangi bir kesinti yaşanmaz.)

Göre http://nginx.org/docs/control.html#reconfiguration, göndererek HUP nginx sinyali, zarif bir yeniden başlatma gerçekleştirdiğinden emin olur ve yapılandırma dosyaları hatalıysa, tüm yordam iptal edilir ve siz göndermeden önce nginx ile kalırsınız. HUP sinyali. Hiçbir noktada herhangi bir kesinti mümkün olmamalıdır.

Nginx'in yapılandırma dosyasını yeniden okuması için ana işleme bir HUP sinyali gönderilmelidir. Ana işlem ilk önce sözdizimi geçerliliğini kontrol eder, ardından yeni yapılandırmayı, yani günlük dosyalarını ve yeni dinleme soketlerini uygulamayı dener. Bu başarısız olursa, değişiklikleri geri alır ve eski yapılandırma ile çalışmaya devam eder.


8
2018-06-22 16:58





Genellikle, bir hizmetin yapılandırma dosyasını yeniden yüklemek, çalışan hizmeti etkilememelidir. Ancak, bu nasıl SIGHUP sinyal işlenir.

Belirli bir hizmet yeniden yükleme sırasında bir kesinti yaşanıyorsa, bu aynı hizmeti tercihen bir yük dengeleyici kullanarak birden fazla sunucuda çalıştırarak engellenebilir. Bu durumda, bir seferde bir sunucu çıkarabilir ve yeniden yükleyebilir / yeniden başlatabilirsiniz. Daha sonra, teyit ettikten sonra tekrar eklenebilir.


2
2018-04-11 17:24



Bu, doğrudan soruyu cevaplamadığı halde, bu, OP'nin genel olarak aksama süresinden kaçınmak için takip edeceği en iyi uygulama senaryosudur. - Andrew M.
Nginx'in farklı sinyalleri nasıl ele aldığına ilişkin ayrıntılar: nginx.org/en/docs/control.html - Gnarfoz