Nginx

runit 和 nginx

  • June 12, 2018

我正在開發一個主要啟動系統是 runit 的系統。

不幸的是,runit 要求它執行的任何應用程序都在前台執行,如下所示:

#!/bin/bash

exec sshd -D

鑑於 nginx 沒有提供在前台執行它的方法,我怎樣才能讓 runit 仍然管理 nginx 並能夠使用 runit 的sv命令停止、啟動和重新啟動它?

您可以使用選項daemon off

exec /usr/sbin/nginx -c /etc/nginx/nginx.conf  -g "daemon off;"

來自nginx 維基

您可以使用 runit / daemontools 在生產模式下安全地使用 daemon off,但是您不能進行正常升級。master_process off 永遠不應該在生產中使用。

當您使用runitto controlnginx時,它成為nginx主程序的父程序。但是如果您嘗試進行線上升級,nginx主程序將分叉並執行新的二進製文件。

創建了一個新的主程序,但由於舊的主程序仍然存在(因為它是由 控制的runit),新主程序的父程序將是 init 程序,因為runit它沒有啟動它,無法控制新的主主程序。

引用自:https://unix.stackexchange.com/questions/147342