■ 【ぷろじぇくと64(ろくよん)】 ~T-Bananaサーバで64ビットOSを動かすぞっ!!の巻~
|
第6日目:SpeedyCGIで500エラー・・・
|
やっとメールシステムをインストールできたので、パッケージソフトは以下のものを
入れるだけとなった。
1)SpeedyCGI(バージョンは 2.22)
2)Apacheモジュール
expat
(xmlパーサー、バージョンは 2.0.0)
libapreq2
(リクエストやクッキー操作に必要なライブラリ、バージョンは 2.08)
mod_cgidso
(ApacheモジュールとしてCGIを動かす為のモジュール、バージョンは?)
mod_limitipconn
(Apacheの同時接続数を制御するモジュール、バージョンは 0.22)
mod_perl
(ApacheモジュールとしてのPerlプログラム制御する、バージョンは 2.0.3)
3)Awstats (日本語対応版、バージョンは 5.0)
4)root管理者用各種ツール
|
まあ、4)はT-Bananaやbananaサーバを運用するのに使う特殊なツールなので
これらのインストールの顛末については今回省略します。
というか「(^_^;)そろそろできた?」という声も聞こえてきたので、ペースアップしなきゃ(汗
さてSpeedyCGIを手元にあるパッケージでインストールしてみると、、、エラーになった。
Writing /usr/local/lib/perl5/site_perl/5.8.8/mach/auto/CGI/SpeedyCGI/.packlist
FreeBSD: Registering installation in the package database
Appending installation info to /usr/local/lib/perl5/5.8.8/mach/perllocal.pod
cd mod_speedycgi2 && make install
apxs -i -a -n 'speedycgi' mod_speedycgi.la
/usr/local/etc/apache2/instdso.sh SH_LIBTOOL='/usr/local/etc/apache2/libtool' mod_speedycgi.la /usr/local/apache2/modules
/usr/local/etc/apache2/instdso.sh: not found
apxs:Error: Command failed with rc=8323072
.
*** Error code 1
|
うおっ、instdso.shが入っていない?
Apacheのインストールで組み込まれたと思ったんだけどなあ・・・・
どこに入っているか探してみると、 /usr/local/apache2/build の中にあった。
これを該当のディレクトリにコピーしよう。それから再インストールする、、、、エラーは無し!
(SpeedyCGIの構築時のパラメータはココを参照して下さい。)
んで、動作確認用のCGIを動かしてみると、、、内部エラー500って・・・
どこかに32ビット版のオブジェクトがあるかもしれないので、 make cleanを実行して
オブジェクトを消してから、Makefile.PLを実行してオブジェクトを再作成する。
# perl Makefile.PL
Optional mod_speedycgi support.
Mod_speedycgi increases performance under Apache by avoiding the fork/exec
overhead associated with each request under normal SpeedyCGI. However, it
requires a working copy of "apxs" in your path, Apache with mod_so
support, and additional Apache configuration.
Compile mod_speedycgi (default no)?
|
と聞いてくるので、yes を入力する。
(どうせだからApacheのモジュール用として作られるmod_speedycgiも再作成しよう)
Compiling for Apache version 2
Checking if your kit is complete...
Looks good
Writing Makefile for src
Writing Makefile for speedy_backend
Writing Makefile for speedy
Writing Makefile for mod_speedycgi2
Writing Makefile for CGI::SpeedyCGI
#
|
これでオブジェクトは64ビットになったはずだから、make -> make install で進める。
--------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
--------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_speedycgi.so
[activating module `speedycgi' in /usr/local/apache2/conf/httpd.conf]
|
何とかインストール成功。動作確認用のCGIも500エラーにならずに動いた。
次にexpat以下のApacheモジュールを通しでインストール。
こっちはエラーも無く終了した。
(Apacheの各モジュール構築時のパラメータはココを参照して下さい。)
動作確認は早めにやらないといけないとは思っているけど、実はちょっとやりたい事が
ありまして・・・カーネルの再構築。
今はuname -a コマンドを打つとデフォルトのカーネルが表示されますが、T-Banana
サーバの様に別のカーネル名(例えばTTIGERとか)を表示させたいなあ、と。
それに実はカーネルの再構築は初めてで、パッケージを入れるべきサーバ(「百式」)が
まだ来ていないうちに、一度挑戦したいなあ。
(まあ前もって痛い目にあった方が、本番の時のショックが少ないかも。)
なので、次回はカーネル再構築をやってみます。
と言っても、明日と明後日はお休み。なので来週作業しますから、(^_^;)さん・・・・
|
|
[SpeedyCGI]
SpeedyCGIのインストールで使うパラメータです。
今回はオブジェクトのコンパイルから行ないましたが、通常はコンパイル後の状態で
アーカイブを作り(パッケージ化)、以下のコマンドでインストールします。
cp /usr/local/apache2/build/instdso.sh /usr/local/etc/apache2/
make
make install
|
動作確認用のCGIとしてサーバ時間を表示する簡単なPerlのCGIを掲載します。
speedyCGIを使う時には、CGIの1行目の所に書くパスを
#!/usr/bin/perl -> #!/usr/local/bin/speedy に変更します。
#!/usr/local/bin/speedy
##
## オプションで、いくつかの目的のために
## use the CGI::SpeedyCGI モジュールを使う
##
# SpeedyCGI オブジェクトの作成
use CGI::SpeedyCGI;
my $sp = CGI::SpeedyCGI->new;
$ENV{'TZ'} = "JST-9";
$times = time;
($sec,$min,$hour,$mday,$mon,$year) = localtime($times);
$year=$year+1900; #
$mon=$mon+1; #
print "Content-Type: text/html\n\n";
print "\n";
print "\n";
print "\n";
print "Time\n";
print "$year/$mon/$mday $hour:$min:$sec ";
# SpeedyCGIの下で実行されているかどうかを調べる
print "Running under speedy=", $sp->i_am_speedy ? 'y' : 'n', " \n";
# いくつかのSpeedyCGIオプションの設定/取得
$sp->setopt('timeout', 30);
print "maxruns=", $sp->getopt('maxruns'), " \n";
print "timeout=", $sp->getopt('timeout'), " \n";
print "";
exit;
|
んで、各Apacheモジュールをインストールする時のパラメータはこちらになります。
[expat]
./configure
mv Makefile.thisuse Makefile
make install
|
configureの後にできるMakefileの雛形をリネームする事を忘れずに
[libapreq2]
./configure --with-perl=/usr/bin/perl --with-apache2-httpd=/usr/local/apache2/bin/httpd \
--with-apache2-apxs=/usr/local/sbin/apxs --with-expat=/usr/local/ --enable-perl-glue
make install
mkdir /usr/local/include/apache2/apreq2
cp /usr/local/apache2/bin/apreq2-config /usr/local/bin
chmod 755 /usr/local/bin/apreq2-config
cp /usr/local/apache2/include/apreq2/*.h /usr/local/include/apache2/apreq2
|
libapreq2の場合、Apache本体(httpd)をconfigureした時に使ったパラメータのいくつかを
その時指定した値で使って下さい。
make install 後にできたものを各ライブラリにコピーするのも忘れずに。
そして、このモジュールをApacheで使用する場合には、httpd.confに以下の行を追加して
再起動して下さい。
LoadModule apreq_module modules/mod_apreq2.so
|
[mod_perl]
perl Makefile.PL MP_APXS=/usr/local/sbin/apxs MP_USE_DSO=1
make install
|
1行目でオブジェクトを生成し、2行目で実行形式を作成してインストールします。
そして、このモジュールをApacheで使用する場合には、httpd.confに以下の行を追加して
再起動して下さい。
LoadModule perl_module modules/mod_perl.so
|
[mod_cgidso]
/usr/local/apache2/bin/apxs -cia mod_cgidso.c
|
この1行(apxs)でコンパイル->インストールまで行ないます。
モジュールは /usr/local/apache2/modules に格納され、httpd.confにも
LoadModule cgidso_module modules/mod_cgidso.so
|
という行が自動的に追加されます。
[moc_iplimitconn]
/usr/local/apache2/bin/apxs -cia mod_limitipconn.c
|
このモジュールもmod_cgidsoと同じで1行でインストールまで行きます。
モジュールは /usr/local/apache2/modules に格納され、httpd.confにも
LoadModule limitipconn_module modules/mod_limitipconn.so
|
という行が自動的に追加されます。
|
|
|
5日目に戻る。 7日目に続く。
|