2016-08-14 6 views
4

私はそうのようなuwsgi使用して実行していますPythonのピラミッドアプリケーションがあります。起動後にuWSGIサーバーを停止するにはどうすればよいですか?

sudo /finance/finance-env/bin/uwsgi --ini-paste-logged /finance/corefinance/production.ini 

それが実行しているしたら、私の窓がタイムアウトを、私は、全体の箱を再起動せずにサーバーを停止することができません。サーバーを停止するにはどうすればいいですか?

+0

Skynetを停止することはできません。 –

答えて

2

あなたは、標準のLinuxコマンドを使用してuwsgiプロセスを殺すことができます。

killall uwsgi 

または

# ps ax|grep uwsgi 
12345 
# kill -s QUIT 12345 

後者のコマンドは、優雅なリロードを行うか、すぐにあなたが送ってスタック全体depending on the signalを殺すことができます。

しかし、使用している方法は通常は本番環境では使用されません。通常は起動時にアプリケーションを起動し、クラッシュした場合は再起動するようにOSに指示します。さもなければ、少なくとも便利な時間に驚きの一日が保証されます:) Uwsgiのドキュメントには、Upstart/Systemdの開始スクリプト/ジョブのexamplesがあります。そうUwsgiは、起動時に実効ユーザを変更するコマンドでsudoは私がうんざり作ることが、私はあなたがあなたのproduction.iniuid/gidのオプションを持っていることを望みます -

はまた、あなたが本当にrootとしてuwsgi実行しないことを確認してください。 Webサーバーをルートとして実行することは決して良い考えではありません。

+0

残念ながら、sudoなしでコマンドを実行すると、 "bind():Permission denied [core/socket.c line 769]"と表示されます。 –

+0

@JeremyT:1024より小さいポートにバインドするには 'root'にする必要があります。 configまたはコマンドラインで 'uid'と' gid'オプションを指定することで、起動後にuWSGIが権限を落とす(つまり、権限のないユーザIDに変更される)ことを確認する必要があります。 – Sergey

+0

だから、sudoを使わないでプロセスを起動する方法や、sudoを使用してスタートアップ後にユーザーを変更するように設定する方法を見つけようとする方が良いでしょうか? –

3

あなたが起動コマンドに

sudo /finance/finance-env/bin/uwsgi --ini-paste-logged /finance/corefinance/production.ini --pidfile=/tmp/finance.pid 

を--pidfile引数を追加した場合また、あなたは、次のコマンド

でそれを再起動することができ、次のコマンド

sudo /finance/finance-env/bin/uwsgi --stop /tmp/finance.pid 

でそれを停止することができます

sudo /finance/finance-env/bin/uwsgi --reload /tmp/finance.pid 
関連する問題