yum は止めて nginx をソースからインストールする

Pocket

これまでさくら VPS(CentOS 6.4)上で稼働中だった nginx は yum でインストールした 1.2.0 なのだけど、モジュールを追加したいような場合はソースからインストールしないといけない。もちろん最新版をすぐに使いたい場合でもそう。

今回はキャッシュの操作用に ngx_cache_purge というモジュールを追加したいのと、SPDY を入れてみたいという衝動に駆られたので nginx 最新版をソースからインストールすることに切り替えた。

SPDY を試すには、openssl の最新版 (1.0.1e) もインストールする。ちなみに CentOS 6.4 上の yum でインストールできる最新版は 1.0.0 なので、こちらもソースをダウンロードする。とりあえず 1.0.0 はそのままにしておいて、nginx では 1.0.1e を使うように指定した。なお、現在の nginx 最新版は 1.3.15 だが、SPDY パッチが対応していないので 1.3.14 をインストールすることになった。

まずは念のために Web 用ディレクトリと nginx の設定ファイル関係をバックアップしておく。Web 用ディレクトリ丸ごとバックアップはかなり時間掛かるかもしれないけど、まぁこれは仕方ない。あと、yum でインストールしたバージョンは削除するのだけど、そうすると起動スクリプトが消えてしてしまうので、それもバックアップ。

新規 nginx 作業ディレクトリは /usr/local/src/nginx とし、今後のバージョンアップはすべてこの場所で行うことにする。ちなみに SPDY 用パッチの最新版は patch.spdy-70_1.3.14.txt なのだけど、これだとどうもダメなようなので1つ前の patch.spdy-69_1.3.14.txt をダウンロードして使うことにした。

上記で下準備は完了。で、nginx をソースからインストールする場合、configure 時にいろいろをオプションを付けることになるのだけど、それは現在起動中の nginx がどうなってるかを nginx -V で確認する(-v だと nginx のバージョンのみ表示)。

現在利用中のオプションからの変更個所および追加部分は以下になる。

上記を踏まえて記述を変更追記してインストールする。

ここで足りないライブラリが発覚したのでインストールして、再度 configure して作業の続き。

インストールが完了したら現状の nginx は動かしたまま、新しいバージョンの nginx で現在利用中の設定ファイルが問題ないかどうかを確認する。

上記のように表示されて問題がなければ切り替えることになるのだけど、現在稼働中の nginx を止めている間に起動スクリプトを修正しないとだめなので、私は Apache を使ってメンテナンス中の画面を表示するようにした1

ここで yum でインストールした nginx を削除する。リポジトリは nginx.repo という名前で作っていたので、それを利用する。それから警告が出るのでしっかり確認する。

上記警告のファイル名を元に戻す。またそれだけでなく /etc/nginx 内にあったファイル名の拡張子に .default が付いているので、それの削除も行う必要がある。.default が付いていないファイルもあるので、それは上書きしないこと。

古い nginx を削除すると冒頭にも書いた起動スクリプトが消えるので、これを元に戻してさらに内容を修正する。

起動スクリプトに実行権が付いてるはずだけど、念のため確認。また sysconfig ファイルも修正して、自動起動設定をやり直す(これも yum で古いものをアンインストルールすると消えている)。

ここまでで問題がなければ、メンテナンス用の Apache を止めて nginx を起動する。

メンテナンス画面を出すことで、切り替える間を急がなくても良いという精神的な安心感を得ることが大事。まぁさっさと片付けることができるに越したことはないけれど。

新しい nginx でブログが表示できることを確認できたら、ngx_cache_purge を使えるようにするのが重要項目だけど、この件を書くのは後日。SPDY のテストはいつでも良いので後回しにする。何でもできるようにしておいて何もしないということはよくあるのだけど、いきなりアレコレやったら脳みそぼーんなので、これくらいにしといたらぁみたいな。

それにしても、この手の切り替え。四六時中アクセスのある人気サイトだと切り替える日時をどうするのか凄く悩むのだろうなぁ。そういう意味ではこのサイト、あまり気にしないで作業できますというのは……わかった、みなまで云うな。土日の午前中なんて、メンテナンス日和ですよね。今日は外も晴れてるし(関係ない)。

というわけでですが、参考にしたサイトの方々2345 におかれましてはありがとうございました。

  1. nginx の入れ替えをどうしようかと思って準備したこと | 脳無しの呟き《土鍋と麦酒と炬燵猫》』 []
  2. sudo chkconfig –list nginx』 []
  3. Nginx – CentOS にインストール(ソースビルド)! – mk-mode BLOG』 []
  4. ngx_cache_purge』 []
  5. nginxにSPDYパッチあててみた – blog.youyo.info』 []