コマンドラインパラメータと信号の実行と制御


http://wiki.nginx.org/NginxChsCommandLine
 
多くの他のソフトウェアシステムと違って、Ngixはコマンドラインパラメータが数つしかなくて、構成ファイルを通して構成されています.
  • [㌝optionsオプション]
  • [菗example例]
  • [菶lncus使用信号ローディングの新しい構成]
  • [菗utnbaotf平滑化は新しいバイナリコードにアップグレード]
  • Template:Anchor
    コンテント
    [hide]
    1オプション2例3系統の信号によってNgixを制御する
    3.1信号を使用して新しい構成をロードする3.2新しいバイナリコードに滑らかにアップグレードする3.3 を参照してください.
    オプション
    -cは、デフォルトの代わりに構成ファイルをNgixに指定します.
    -tは実行されず、設定ファイルだけをテストします.inxは、プロファイルの構文の正しさをチェックし、設定ファイルで参照されているファイルを開くことを試みる.
    -vはinxのバージョンを表示します.
    -Vはnginxのバージョン、コンパイラバージョン、および設定パラメータを表示します.
    Template:Anchor

    この例は、指定された位置のプロファイルが正常かどうかをテストし、提示するだけです.
    /usr/bin/nginx -t -c ~/mynginx.conf
    
    windowsの下でnginxのバッチ・ファイル(somaceo提供)を起動し、オンラインでprocess.exeとRunHddenConsone.exeをダウンロードして、nginxインストール・ディレクトリの下に置いて、スタートnginx.batファイルを作成します.内容は以下の通りです.
    @echo off
    cd nginx>nul
    echo     Nginx  ......
    process.exe -k nginx.exe>nul
    echo     PHP(FastCGI)  ......
    
    rem process.exe -k php-cgi.exe>nul
    echo Nginx+PHP   。
    
    @echo off
    cd nginx>nul
    echo     PHP(FastCGI)  ......
    echo                  ,(         ,        ),       :  ,       php.ini  。    php        。
    RunHiddenConsole.exe ../../PHP/php-cgi.exe -b 127.0.0.1:9000 -c ../../PHP/php.ini
    echo PHP   。
    
    echo nginx                  ,                 。
    nginx.exe -t -c conf/nginx.conf
    
    echo -v    nginx    。v         :http://wiki.nginx.org/NginxChsCommandLine
    nginx.exe -v
    echo      Nginx  ......
    echo     Nginx  ......
    nginx.exe -c conf/nginx.conf
    
    echo Nginx+PHP   。
    rem  pause                 
    pause
    exit
    
    システムの信号によってNgixを制御する.
    信号システムを使用してメインプロセスを制御することができます.デフォルトでは、nginxは、メインプロセスのpidを/usr/local/inx/logs/inx/pidファイルに書き込みます.パラメータを送るか、pidコマンドを使うかによって、ファイルの位置が変わります.
    メインプロセスは以下の信号を処理できます.
    TERM,INT
    クイッククローズ
    QUITT
    余裕をもって閉鎖する
    HUP
    リロードの設定を新しい構成で開始します.新しい作業プロセスはゆっくりとオフにします.
    US R 1
    ログファイルを再開く
    US R 2
    滑らかなアップグレードはプログラムを実行します.
    WINCH
    落ち着いて仕事のプロセスを閉じます.
    自分で作業をする必要はありませんが、いくつかの信号をサポートします.
    TERM,INT
    クイッククローズ
    QUITT
    余裕をもって閉鎖する
    US R 1
    ログファイルを再開く
    Template:Anchor
    信号を使って新しい構成をロードします.
    Nginxはいくつかの信号をサポートしていますが、動作中に操作を制御できます.その中で最も一般的なのは15です.運行を中止するためのプロセスです.
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root      2213  0.0  0.0   6784  2036 ?        Ss   03:01   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
    
    一番面白いのは、nginxの構成を滑らかに変えるオプションです.
    2006/09/16 13:07:10 [info]  15686#0: the configuration file /etc/nginx/nginx.conf syntax is ok
    2006/09/16 13:07:10 [info]  15686#0: the configuration file /etc/nginx/nginx.conf was tested successfully
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root      2213  0.0  0.0   6784  2036 ?        Ss   03:01   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
    
    nginxがHUP信号を受信すると、プロファイルの解析を試みます.(設定ファイルを指定すると、指定されたものを使用します.そうでなければ、デフォルトを使用します).成功すると、新しいプロファイル(例えば、ログファイルを再起動したり、傍受したりするソケット)が適用されます.その後、新しい作業プロセスを実行し、古い作業プロセスをゆっくりとオフにします.作業プロセスに通知し、待ち受けソケットを閉じますが、現在接続されているお客様にサービスを提供し続けます.すべてのクライアントのサービスが完了すると、古い作業プロセスが閉じられます.新しいプロファイルのアプリケーションが失敗した場合は、nginxは古いプロファイルを使って作業を続けます.
    Request For Review Category--(Request For Review:Just What Happens With The Worker Process at HUP?-Olle)
    Template:Anchor
    新しいバイナリコードに滑らかにアップグレードします.
    サービスを中断しないでください.新しい要求も失われません.新しいnginxを使って古いものに変えられます.
    まず、新しい実行可能プログラムを使って古いものを入れ替えてから、USR 2信号をメインプロセスに送ります.メインプロセスはその名前を変更します.pidファイルは.oldbinです.新しいメインプロセスと新しい作業プロセスを順次起動します.
    PID PPID USER %CPU VSZ WCHAN COMMAND
    33126 1 root 0.0 1164 pause nginx:master process/user/local/nginx/sbin/nginx 33134 nobody 0.0 1368 kqread nginx:work process 33135 33126 nobody 0.0138 kqread inx:work process 13636264 root 0.0 1148 pause nginx:master process/usr/local/nginx/sbin/nginx 36265 36264 nobody 0.0 1364 kqread inx:work process 3626266 nody
    このとき、2つのnginxのインスタンスは同時に実行され、入力の要求を処理する.古いインスタンスを徐々に停止するには、WINCH信号を古いメインプロセスに送信してください.その後、その作業プロセスは落ち着いて閉じられます.
    : PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
    33135 33126 nobody   0.0  1380 kqread nginx: worker process is shutting down (nginx)
    36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    
    しばらくしてから、古い作業プロセスはすべての接続済みの要求を処理して終了します.新しい作業プロセスだけで入力の要求を処理します.
    : PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    
    この時、古いサーバはまだその傍受のソケットを閉じていませんので、次のステップを通じて、古いサーバに戻ります.
  • は、以前のメインプロセスにHUP信号を送信します.設定ファイルを再ロードしないで作業プロセスを開始します.
  • は、QUITT信号を新しいメインプロセスに送信し、落ち着いて作業プロセス
  • を停止することを要求する.
  • は、新たなメインプロセスにTERM信号を送信し、
  • を終了させる.
  • 何らかの理由で新しい作業プロセスが終了しない場合、KILL信号
  • を送信する.
    新しいメインプロセスが終了すると、古いメインプロセスは除去されます.oldbinプレフィックスは、そのものに復元されます.pidファイルは、すべてアップグレード前に復元されます.
    もしアップグレードが成功したら、新しいサーバーを保留したい場合、QUITT信号を送信して古いメインプロセスを終了させ、新しいサーバーだけを残して実行します.
    : PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    : 36264     1 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    : 36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    : 36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    : 36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)