コメントを書くはじめにnginxは頻繁に保守されていてどんどんバージョンが上がっていく一方で、UbuntuやWindows以外ではソースコードからビルドする方法が一般的だと思います。CHANGESよりLinuxやBSDの多くのディストリビューションではNginxがパッケージリポジトリに含まれており、通常のソフトウェアインストール手法でインストールする事ができます。)たまにこれらのパッケージは古いものであったりすることがあるので気をつけてください。最新の機能やバグ修正版を求めるなら、ソースコードからビルドすることをお勧めします。...http://wiki.nginx.org/InstallJaより上記のようにどのディストリビューションでもパッケージは用意されているものの、バージョンが古いことが多いですし、何よりも各機能を追加するモジュールがApache(httpd)と違ってスタティックな方式を採用しているので、用途に合わせてモジュールを追加したい場合は自分でビルドするしかありません。すると、自分でバイナリを上書きしてアップグレードすることになります。メンテナンス時間を設けてサービスを止めて保守出来る場合はいいですが、積極的に止めることは避けたいサービスの場合、以下の方法でリクエストを止めることなくアップグレードができます。2011/5/23現在)にアップグレードした時の手順の確認と結果の検証を行いました。現在稼動しているバージョンのビルドオプションを確認する-Vオプションで確認することが出来ます。argumentsがオプション部分です。サードパーティ製のモジュールを入れている場合(–add-module)は、そのモジュールが新しいバージョンのnginxに対応しているか、対応しているモジュールのバージョンがリリースされていないか、確認する必要があります。最新バージョンをビルドする先ほど確認したビルドオプションで新しいバージョンをビルドします。--with-http_ssl_module現行の設定ファイルのままで問題がないか確認する仕様の変更などで利用できなくなるディレクティブなどがあるかもしれません。testが通るかチェックします。installで上書きします。installプロセスを確認するいよいよ本題です。現在動いているnginxのマスタープロセスのpidを確認します。pidファイルで確認する方法nginx.confにpidディレクティブを設定している場合は設定したパスにpidファイルがあります。/var/run/nginx.pid;5559pidは5559です。ワーカープロセス数は、confファイル"worker_processes"の設定に依存します。新しいバイナリを実行する(USR2シグナル)USR2シグナルをマスタープロセスに送ります。5559すると、古いバージョンのプロセスと新しいバージョンのプロセスが共存する状態になります。古いバージョンのワーカーを止める(WINCHシグナル)WINCHシグナルを古いマスタープロセスに送ります。5559すると、既に受け持っているリクエストの処理が終わり次第、古いワーカープロセスが順次終了していきます。古いプロセスはマスタープロセスだけになり、リクエストは新しいワーカープロセスが受け持っています。古いバージョンのマスタープロセスを止める(QUITシグナル)QUITシグナルを古いマスタープロセスに送ります。5559古いマスタープロセスが終了し、新しいマスタープロセスとワーカープロセスだけになりました。検証方法http_loadを使ってドキュメントルートに置いたテキストファイルをアップグレード作業中にクライアントから毎秒10リクエスト行う。作業中の2分間、1199リクエストが全て正常に終了したので、問題なくアップグレードができたと思われます。01:23:シェアさせていただきます。良い記事ありがとうございます。cloudropさんの記事を参考にさせていただきました。[...]コメントを残す(通常のコメント欄に切り換え)返信をキャンセルする。名前アカウントを持っているサービスをクリックしてください。cloudropcloudropは、クラウドコンピューティングを利用したサービスの提供・インターネットサービスの技術支援を行う会社です。