web-dev-qa-db-ja.com

Nginxがダウンしたときに自動的に再起動する方法

アプリケーションをAWS EC2にデプロイしました。インスタンスを再起動した場合、またはNginxウェブサーバーがダウンした場合に自動で再起動する自動化を実装したいと思います。私はこれからどこから始めればよいのか本当にわかりません。

Crontabを使用して自動監視をスケジュールでき、ダウンしている場合は、電子メールアラートを送信してWebサーバーを再起動できると聞きました。

13
Newbee Coding

このような状況に対処することを目的としたmonitを使用してください。

apt install monit

nano /etc/monit/conf.d/nginx.conf

このファイル内にコンテンツを配置し、monitを再起動します

check process nginx with pidfile /var/run/nginx.pid
start program = "/usr/sbin/service nginx start"
stop program = "/usr/sbin/service nginx stop"
7
iWizard

これはSystemDの機能です。 systemctl edit nginxを実行してNGINXの既存のユニットファイルを上書きし、次に貼り付けます。

[Service]
Restart=always

保存する。

たとえば、NGINXがダウンした場合OOMキラー、死んだ後に再起動されます。 NGINXで構成エラーが発生した場合、もちろん再起動されません。

この構成を確認します。 systemctl start nginxでNGINXサービスを開始し、systemctl status nginxで実行されていることを確認します。

pkill -f nginxを使用して強制終了します。 NGINXがsystemctl status nginxを使用して実行されていることを確認します。

61

あなたはすでにそれを行う方法について多くの答えを持っていますが、私はそれを最初にシャットダウンさせるために何が起こっているのかを調査し、それを修正します。

Nginxがクラッシュすると、現在実行中のすべてのリクエストは不明な状態で終了します。ファイルは半分転送され、API呼び出しは応答されません。原則として、最上位のアプリケーションはこれに対処する必要がありますが、実際にはめったに行いませんが、その層では、奇妙で再現不可能な動作として現れ、サービスを使用している人々に不安定感を与えます(当然ですが)。

5
Simon Richter

実際にはかなりシンプルです

/ lib/systemd/systemに移動します_Sudo cp ngnix.service ngnix.service.old_を使用してngnix systemdユニット(場合)をバックアップします

Ngnix.serviceのサービスブロックの末尾に次の2行を追加します

_Restart=on-failure
RestartSec=5s
_

_Sudo systemctl daemon-reload_で新しい設定をロードします

テストするには-ngnixを殺してみましょう

_cat /var/run/nginx.pid_はPIDを提供します

_Sudo kill -9 PID_はnginixを強制終了します

PIDを確認すると、別のPIDがあることがわかります。これらの行を実行していない場合、ngnixを強制終了すると、サーバーがダウンします。これはonly正常でないシャットダウン時に再起動をトリガーします

0
Journeyman Geek

質問のタイトルで言ったようにプロセスを再開したい場合、他のすべての答えは素晴らしいようです。質問の本文で言ったようにインスタンスを再起動する場合は、Auto Scalingグループを使用できます。

Auto Scalingグループを最小と最大の1つのインスタンスで設定し、ヘルスチェックでNginxウェブサーバーが提供するコンテンツ(理想的には、robots.txtのようにCPUを大量に消費しないもの)にポイントします。 Auto Scalingグループは、インスタンスが正常でないことを検出し(3または5のヘルスチェックに失敗する可能性があります)、インスタンスを強制終了し、新しいインスタンスを開始します。

(インスタンスが実際に破棄されるため)インスタンスに保存されているすべての状態が失われることに注意してください。とにかく、サーバー内で状態を維持することは、クラウドのアンチパターンです。キャッシュも失われます。

0
Blueriver