April 09, 2008

apache2 + mod_perl2 + mod_ruby + mod_ssl + mod_dav

最近もっぱらサーバの移行作業を行っています。というのも、今年で6年目になる現役サーバ(PowerMac G3 350MHz + MacOSX 10.2.8)のHDDがいつお亡くなりになるかわからず、はらはらドキドキの毎日が続いているからです。バックアップはこまめに取っているのでデータ消失の心配はひとまずないのですが、サーバが一時的にでも落ちるとこのサイトの休止をはじめとして、複数の拠点のデータ共有ができなかったり、と大損失になります。ということで最近は時間を見繕って、新サーバ用に購入したMac Mini(MacOSX 10.5.2 + Intel Core2 Duo 1.83GHz)への移行作業をできるかぎり早く進めています。

新サーバとなるMac Miniでは、メモリの増強(1G -> 2G)とHDDの換装(24時間稼働を想定したサーバ用HDDへ変更)を、過去記事で紹介した分解ヘラを利用して完了してあります。またソフトについても
Postgresとsquidの移行については、自動起動デーモンlauchdの設定について完了したことを報告ずみでしたが、今回は大物のapache2を処理しました。

これまで旧サーバではapache1.3+mod_perl+mod_ruby+mod_ssl+mod_dav(dav以外の拡張モジュールはビルトイン、davはDSO)という構成をとっていましたが、新サーバでもできるだけ同じ構成でいこうと思います。パッケージを導入すれば簡単だと思いますが、ここでは向学のために野良ビルドをしました。以下、ひたすらコマンドが並びます。

続きをどうぞ。

1.Apacheのダウンロード

$ cd /usr/local/src/apache
$ wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/httpd-2.2.8.tar.bz2
$ tar jvxf httpd-2.2.8.tar.bz2

2.Apache Portable Runtime(APR)のダウンロードとインストール(mod_perl2をビルトインモジュールとしてインストールする際に文句をいわれたので、先に手を打っておきます)

$ cd /usr/local/src/apache
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.2.12.tar.bz2
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.2.12.tar.bz2
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-iconv-1.2.1.tar.bz2
$ tar jvxf apr-1.2.12.tar.bz2
$ tar jvxf apr-util-1.2.12.tar.bz2
$ tar jvxf apr-iconv-1.2.1.tar.bz2
$ cd apr-1.2.12; ./configure; make; sudo make install; cd ..
$ cd apr-util-1.2.12; ./configure --with-apr=/usr/local/apr; make; sudo make install; cd ..
$ cd apr-iconv-1.2.12; ./configure --with-apr=/usr/local/apr --with-prefix=/usr/local/apache; make; sudo make install

3.mod_perl2のダウンロード

$ cd /usr/local/src/apache
$ wget http://perl.apache.org/dist/mod_perl-2.0-current.tar.gz
$ tar zvxf mod_perl-2.0-current.tar.gz

4.apache+mod_ssl+mod_dav+mod_perl2のインストール。mod_perlから全てのインストールが行われます。mod_dav、mod_sslはapacheと同梱になりました。また、mod_rubyをapache2に組み込む際はDSOのみのサポートとなったため、mod_rubyはここの項目では含まれていません。

$ cd /usr/local/src/apache/mod_perl-2.0.3
$ perl Makefile.PL MP_USE_STATIC=1 MP_CCOPTS=-I/usr/local/apr/include/apr-1/ MP_AP_PREFIX=../httpd-2.2.8 MP_AP_CONFIGURE="--with-mpm=prefork --enable-ssl --enale-dav"
$ mv ../httpd-2.2.8/build/config_vars.mk ../httpd-2.2.8/build/config_vars.mk.orig
$ sed -e 's/-arch ppc//' ../httpd-2.2.8/build/config_vars.mk.orig > ../httpd-2.2.8/build/config_vars.mk
$ make
$ make test
$ sudo make install

makeの前に行っているテキスト処理は、リンカldが出すユニバーサルバイナリ関連のエラーを抑制するためのものです。

5.mod_rubyのダウンロード、インストール

$ cd /usr/local/src/apache
$ wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz
$ tar zvxf mod_ruby-1.2.6.tar.gz
$ cd mod_ruby-1.2.6
$ ./configure.rb --with-apxs=/usr/local/apache2.2.8/bin/apxs --with-apr-includes=/usr/local/apr/include/apr-1/
$ make
$ sudo make install

6.mod_encodingのインストール。mod_encodingはmod_davのファイル名を多言語対応させるために必要なモジュールです。

$ cd /usr/local/src/apache
$ wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
$ tar zvxf mod_encoding-20021209.tar.gz
$ cd mod_encoding-20021209
$ cd lib; ./configure; make; sudo make install; cd ..
$ mv mod_encoding.c mod_encoding.c.orig
$ sed -e 's/regex_t/ap_regex_t/g' -e 's/REG_/AP_REG_/g' mod_encoding.c.orig > mod_encoding.c
$ make
$ gcc -pipe -bundle -undefined suppress -flat_namespace -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -liconv_hook -liconv -framework CoreServices
$ sudo cp mod_encoding.so /usr/local/apache/modules

同梱のiconv_hookを先にインストールしたあと、mod_encoding本体をインストールしています。またなぜかmakeでmod_encoding.soを作ってくれないので、最後のほうで別箇作成しています。

8. httpd.confに設定を書き込む
/usr/local/apache-2.2.8/conf/original/httpd.confを参考に作成します。ビルトインとしてコンパイルしたmod_sslやmod_davは、参考元の当該部分の設定をコメントインすることで有効になります。DSOとしてコンパイルしたmod_ruby、mod_encodingについては以下の行を書き足せば読み込まれるようになります。

LoadModule ruby_module modules/mod_ruby.so
LoadModule encoding_module modules/mod_encoding.so

またmod_encodingについてはextra/httpd-dav.confの中で以下の設定を書き込んでおくと良いようです。
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
DefaultClientEncoding JA-AUTO

# Windows XP?
AddClientEncoding "Microsoft-WebDAV-MiniRedir/" MSUTF-8
AddClientEncoding "Microsoft Data Access Internet Publishing Provider" CP93
# Windows 2K SP2 with .NET
AddClientEncoding "(Microsoft .* DAV\$)" MSUTF-8
# Windows 2K SP2/Windows XP
AddClientEncoding "(Microsoft .* DAV 1.1)" CP932
# Windows XP?
AddClientEncoding "Microsoft-WebDAV*" CP932
# RealPlayer
AddClientEncoding "RMA/*" CP932
# MacOS X webdavfs
AddClientEncoding "WebDAVFS" UTF-8
# cadaver
AddClientEncoding "cadaver/" EUC-JP
</IfModule>

以上で、目標としたことが完了しました。参考としたサイトをあげておきます、ありがとうございました。

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

Fenrirさんはじめましてtoshiyanと申します。
還暦が近い中年(?)です、よろしくお願いします。
最近ブログを知りまして拝見させて頂いてます。
このたびリンクを張らせて頂きましたのでご挨拶です。
もしまずければお知らせください、すぐに削除します。
今後ともよろしくお願い致します。

Posted by: toshiyan : April 10, 2008 04:36 PM

>toshiyanさん
はじめまして、fenrirです。わざわざリンクのご報告ありがとうございます。このサイトはリンクフリーですので、むしろ大歓迎です!! こちらこそ今後ともよろしくお願い致しますm(_ _)m

Posted by: fenrir : April 11, 2008 01:10 AM
コメントする









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