我有我使用uwsgi像這樣運行一個Python金字塔應用:如何在啓動後停止uWSGI服務器?
sudo /finance/finance-env/bin/uwsgi --ini-paste-logged /finance/corefinance/production.ini
一旦它的運行和我的窗口時間了,我無法停止服務器,而無需重新啓動整個盒子。我如何停止服務器?
我有我使用uwsgi像這樣運行一個Python金字塔應用:如何在啓動後停止uWSGI服務器?
sudo /finance/finance-env/bin/uwsgi --ini-paste-logged /finance/corefinance/production.ini
一旦它的運行和我的窗口時間了,我無法停止服務器,而無需重新啓動整個盒子。我如何停止服務器?
可以使用標準的Linux命令殺死uwsgi
過程:
killall uwsgi
或
# ps ax|grep uwsgi
12345
# kill -s QUIT 12345
後者命令允許你做一個優雅的重裝或者立即殺死整個堆棧depending on the signal您發送。
但是,您正在使用的方法在生產中通常不會使用:通常您會告訴操作系統在啓動時啓動您的應用程序,並在其崩潰時重新啓動它。否則,您可以在至少方便的時間內保證有一天會有驚喜:) Uwsgi文檔有Upstart/Systemd的啓動腳本/作業的examples。
另外,還要確保你沒有真正運行uwsgi的根 - 也sudo
在命令令我生厭,但我希望你有你的production.ini
所以Uwsgi改變啓動時的有效用戶uid
/gid
選項。以root身份運行Web服務器從來就不是一個好主意。
不幸的是,在不使用sudo的情況下運行該命令給了我「bind():Permission denied [core/socket.c line 769]」 –
@JeremyT:你需要'root'來綁定到低於1024的端口。需要通過在配置或命令行中指定'uid'和'gid'選項來確保uWSGI在啓動後放棄權限(即,它更改爲非特權用戶ID)。 – Sergey
那麼,你是說最好不要嘗試找出如何在不使用sudo的情況下啓動進程,或者我應該使用sudo並將它設置爲在啓動後更改用戶? –
如果添加--pidfile ARG的啓動命令
sudo /finance/finance-env/bin/uwsgi --ini-paste-logged /finance/corefinance/production.ini --pidfile=/tmp/finance.pid
你可以用下面的命令停止
sudo /finance/finance-env/bin/uwsgi --stop /tmp/finance.pid
你也可以用下面的命令重新啓動它
sudo /finance/finance-env/bin/uwsgi --reload /tmp/finance.pid
你無法阻止天網。 –