Apacheのバージョンアップを行う

ここではソースからコンパイルしバージョンアップする方法を簡単に解説する。基本的には再コンパイルするだけ。『やり直し』を行う場合もこの手順を参考にすれば良い。

手順としては大まかに以下のようになる。ようはコンパイル後に生成された実行ファイルで上書きしているだけなのだ。

  1. 既存ファイルのバックアップ
  2. 前回のコンパイルオプションの確認
  3. ソースファイルのダウンロード・解凍
  4. configure
  5. make
  6. httpd stop
  7. sudo make install
  8. httpd start

以下に示すのは1.3系の例だが、2.xの場合はディレクトリ名を「apache2」と読み替えれば良い。

バージョンアップの実施

既存ファイルのバックアップ

最低でも設定ファイルはバックアップ。切り返しを考えapacheディレクトを一通りバックアップしておくのが良い。

$ cp /usr/local/apache/conf/* ~/backup

前回のコンパイルオプションの確認

コンパイルする際に指定するオプションの値は、「config.status」というファイルに保存される。前回インストール(バージョンアップ)した際のソースファイルをおいてあるディレクトリの中をのぞき、中身をcatしてやると前回のオプション値が確認できる。

$ cd /usr/local/src/apache_1.3.34
$ cat config.status
#!/bin/sh
##
## config.status -- APACI auto-generated configuration restore script
##
## Use this shell script to re-run the APACI configure script for
## restoring your configuration. Additional parameters can be supplied.
##

OPTIM="-O2" \
LIBS="-lpthread" \
SSL_BASE="SYSTEM" \
./configure \
"--with-layout=Apache" \
"--enable-shared=ssl" \
"--enable-module=ssl" \
"$@"

逆に言えば使用したディレクトリは丸ごと残しておくことが求められると言うことである。作業履歴の記録にもなるため間違っても消してはならない。

バージョンアップ開始~終了

まずはダウンロードする。ここらへんからお好みのバージョンをダウンロードしてくれば良い。なお、コンパイルするファイルは「/usr/local/src」あたりに置いておくのが慣わしとなっているので特別な理由が無ければ従っておくこと。

$ cd /usr/local/src
$ wget ftp://ftp.hoge.co.jp/apache/apache_1.3.37.tar.gz

ダウンロードしたら解凍しディレクトリを移る。

$ tar zxvf apache_1.3.37.tar.gz
$ cd apache_1.3.37

特に変更点などなければ前回の「config.status」を参考にし、「configure」を実行する。

$ ./configure --with-layout=Apache --enable-shared=ssl --enable-module=ssl

「configure 」の内容に従いソースファイルをコンパイルする。正常終了した場合でも特にメッセージは出ないので、エラーが表示されなければ気にせず次に行く。

$ make

最後にサーバを停止しインストールを行う。これにはroot権限が必要。これでバージョンアップのための作業は一段落となる。

$ sudo /etc/init.d/apache stop
$ sudo make install
$ sudo /etc/init.d/apache start

バージョンの確認

念のため最後にバージョンを確認しておこう。ここで自分が適用したバージョンが表示されればOK。ブラウザからも正常に動いているかどうかを確認し全作業が終了となる。

$/usr/local/apache/bin/httpd -v
Server version: Apache/1.3.34 (Unix)
Server built: Feb 16 2006 04:41:40

同系統(1.3系から1.3系、2.0系→2.0系など)のバージョンアップの場合は、原則この手順になる。(私の場合は)念のためconfigureの前からサーバを止めるが、「make install」前でも問題ないだろう。またsudoの代わりに「su -」でrootになってももちろん良い。要はroot権限があれば良いのだ。

なお、パッケージ管理ソフト(apt, yumなど)を使用しているなら、あらかじめ用意されているコマンドを利用すれば良い。

aptなら以下のようにする。updateでファイルリストを更新しupgradeで実行する。

$ sudo apt-get update
$ sudo apt-get upgrade