May 29, 2004

Apache 1.3.31へ移行

今までApacheの1.3.28を使ってきたのですが、ここのところApacheの調子がよくなかったので、1.3系で最新のものに入れ替えてみました。調べてみると、どうやら1.3.29以前で重大なバグが存在していたようです。

今回作成したApacheは以下のような構成にしました。Apache_1.3.31 + OpenSSL-0.9.7d + mod_ssl-2.8.17-1.3.31 + mod_perl-1.29(Perlは5.8.0) + mod_ruby-1.2.0(Rubyは1.8.0)で、mod_ssl、mod_perl、mod_rubyはすべてDSOではなくビルトインにしました。ターゲットはMacOSX 10.2.8です。

手順は続きをどうぞ。

1.Apacheのソースダウンロード

$ cd /usr/local/src
$ wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/apache_1.3.31.tar.gz
$ tar zvxf apache_1.3.31.tar.gz

2.OpenSSLのダウンロードとコンパイル

$ cd /usr/local/src
$ wget http://www.openssl.org/source/openssl-0.9.7d.tar.gz
$ tar zvxf openssl-0.9.7d.tar.gz
$ cd openssl-0.9.7d
$ sh config no-idea no-threads -fPIC
$ make
$ make test

OpenSSLのコンパイル・オプションはmod_sslの説明によると、Apacheはマルチスレッド動作しないのでno-threads、-fPICは今回は違いますがDSOにするときのみ重要らしいです。no-ideaは調べてません。

3.mod_sslのダウンロードとApacheへのビルトイン

$ cd /usr/local/src
$ wget http://www.modssl.org/source/mod_ssl-2.8.18-1.3.31.tar.gz
$ tar zvxf mod_ssl-2.8.18-1.3.31.tar.gz
$ cd mod_ssl-2.8.18-1.3.31
$ ./configure --with-apache=../apache_1.3.31

4.mod_perlのダウンロードとビルトイン

$ wget http://perl.apache.org/dist/mod_perl-1.29.tar.gz
$ tar zvxf mod_perl-1.29.tar.gz
$ cd mod_perl-1.29
$ perl Makefile.PL \
    EVERYTHING=1 \
    APACHE_SRC=../apache_1.3.31/src \
    USE_APACI=1 \
    PREP_HTTPD=1 \
    DO_HTTPD=1
$ make
$ make install

mod_perlのコンパイルオプションについては、INSTALLというファイルに詳しく書いてあります。

5.mod_rubyのダウンロードとビルトイン

$ wget http://modruby.net/archive/mod_ruby-1.2.0.tar.gz
$ tar zvxf mod_ruby-1.2.0.tar.gz
$ cd mod_ruby-1.2.0
$ ./configure.rb --with-apache=../apache_1.3.31
$ make
$ make install

6.(MacOSXだけ)libgdbmのダウンロードとコンパイル。これはmod_sslをいれることによってDBMのライブラリが必要になるのですが、MacOSXのDBMのライブラリはバグを含んでいるらしい(詳細はここ)ので、GNUによるフリーのDBM、GDBMをかわりに使用することにします。

$ cd /usr/local/src
$ wget ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.8.3.tar.gz
$ tar zxvf gdbm-1.8.3.tar.gz
$ cd gdbm-1.8.3
$ cp /usr/share/libtool/config* .
$ ./configure
$ make
$ sudo make install
$ sudo ln -s /usr/local/lib/libgdbm.a /usr/local/lib/libdbm.a

最後のシンボリックリンク作成はApacheのコンパイル中にリンカスクリプト(ld)に-ldbmというパラメータが渡されることによっておこるエラーへの対策です。

7.Apacheのコンパイルとインストール

$ cd /usr/local/src
$ cd apache_1.3.31
$ export SSL_BASE=../openssl-0.9.7d
$ ln -s src/modules/perl/libperl.module src/modules/perl/libperl.a #もしかしたら必要かも
$ ./configure --with-layout=Apache \
    --enable-module=ssl --enable-module=so \
    --activate-module=src/modules/perl/libperl.a --enable-module=perl \
    --activate-module=src/modules/ruby/libruby.a --enable-module=ruby
$ make
$ make install

今回はssl、perl、rubyのほかにSharedObjectのモジュールを有効にしました。また--with-layout=Apacheでは/usr/local/apacheにログや設定ファイルも含めてすべてインストールされます。config.layoutをみれば色々と書いてあると思います。
MacOSXでの注意点がひとつ。configureでheadというコマンドの使い方がだらだら表示されるかもしれませんが、その場合はPerlのLWPというモジュールが、もともとあったheadというテキスト処理用の実行ファイルを上書きしている可能性があります(詳しくはここ)。その場合はheadというコマンドを復元する必要があります。
手順は、まず/usr/binにあるhead,get,postの3つのLWPのファイルを適当にところに移動してください。次に、ここからtext_cmdsを入手して圧縮ファイルを解凍すると、headコマンドのソースがでてきます。make && make installしてください。これでエラーが解消するはずです。

8.(mod_perlでMovableTypeを使いたいなら)libapreqのコンパイルとインストール
MovableTypeをmod_perl下で使いたいならlibapreqをインストールする必要があります。

$ cd /usr/local/src
$ wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/libapreq/libapreq-1.3.tar.gz
$ cd libapreq-1.3
$ export APACHE=/usr/local/apache/bin/httpd
$ ./configure
$ make
$ make install
$ perl Makefile.PL -apxs=/usr/local/apache/bin/apxs
$ make
$ make test
$ make install

これでできあがり、お疲れ様でした。

22:07 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/268
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。