Mac-Osx
Supervisord 不會停止 nginx 程序
我經常使用 Supervisor,在這個項目中我有一個由 Supervisord 管理的 nginx 程序。配置的相關部分是這樣的:
[supervisord] logfile=/home/projects/eceee-web/prod/var/log/supervisord.log logfile_maxbytes=5MB logfile_backups=10 loglevel=info pidfile=/home/projects/eceee-web/prod/var/supervisord.pid ; childlogdir=/home/projects/eceee-web/prod/var/log nodaemon=false ; (start in foreground if true;default false) minfds=1024 ; (min. avail startup file descriptors;default 1024) minprocs=200 ; (min. avail process descriptors;default 200) directory=/home/projects/eceee-web/prod [program:nginx] command = /home/projects/eceee-web/prod/bin/nginx redirect_stderr = true autostart= true autorestart = true directory = /home/projects/eceee-web/prod stdout_logfile = /home/projects/eceee-web/prod/var/log/nginx-stdout.log stderr_logfile = /home/projects/eceee-web/prod/var/log/nginx-stderr.log
該
/home/projects/eceee-web/prod/bin/nginx
命令將在前台啟動 Nginx,它不會自行解除監控。儘管如此,停止它還是會失敗:supervisorctl stop nginx
不會給出任何答案,但過程將繼續。知道什麼嗎?
這是在 OS X Darwin 上,帶有 Supervisor 3.0a9 和 nginx 0.7.65。
好的,問題是這樣的:
我需要在設置 LD_LIBRARY_PATH 的情況下啟動 nginx,以便 pcre、libxslt 和 libxml 在路徑中(這是所有自定義建構,帶有用於輕鬆複製環境的建構)。
因此我有一個設置 LD_LIBRARY_PATH 然後啟動 nginx 的 sh 腳本,所以如果我想啟動 nginx,我不必顯式設置它。
當然,我讓 nginx 啟動該腳本。
但是,當它終止該父程序時,nginx 並沒有死!
似乎 nginx 將自己與啟動它的 shell 分離,即使不是在守護程序模式下執行。
解決方案:直接呼叫nginx二進製文件,環境設置正確:
[program:nginx] command = /Volumes/Macintosh-HD2/ServiceData/Web/eceee.org/staging/parts/nginx/sbin/nginx environment = LD_LIBRARY_PATH="/Volumes/Macintosh-HD2/ServiceData/Web/eceee.org/staging/parts/lxml/libxml2/lib:/Volumes/Macintosh-HD2/ServiceData/Web/eceee.org/staging/parts/lxml/libxslt/lib:/Volumes/Macintosh-HD2/ServiceData/Web/eceee.org/staging/parts/pcre/lib" redirect_stderr = true autostart= true autorestart = true directory = /Volumes/Macintosh-HD2/ServiceData/Web/eceee.org/staging stdout_logfile = /Volumes/Macintosh-HD2/ServiceData/Web/eceee.org/staging/var/log/nginx-stdout.log stderr_logfile = /Volumes/Macintosh-HD2/ServiceData/Web/eceee.org/staging/var/log/nginx-stderr.log
您應該能夠在 nginx.conf 中使用“daemon off”指令。