【ぷろじぇくと64(ろくよん)】 ~第6日目:SpeedyCGIで500エラー・・・~

レンタルサーバー
BIG-server.com

簡単・はやい・大容量・どんな目的にもマッチするレンタルサーバー

HOME プライス お見積もり・プラン選択 お申し込み ユーザーサポート お問い合わせ

■ 【ぷろじぇくと64(ろくよん)】 ~T-Bananaサーバで64ビットOSを動かすぞっ!!の巻~

1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
目次に戻る
第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日目に続く。

1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
目次に戻る


Copyright (C) 1997-2013, BIG-server.com. All Rights Reserved.
レンタルサーバー BIG-server.com
Powered By Maido3.com