PerlさんPerlくん
[perl][mod_perl]PLESK環境でmod_perl2のインストール
最終更新:
atwikimyj
-
view
PLESK環境での話。
某PLESK環境のVPSでmod_perl2を使おうとしたが、
ApacheはVersion2なのだが、mo_perlが1.99だった。
ということでmod_perl2にアップグレードする。
某PLESK環境のVPSでmod_perl2を使おうとしたが、
ApacheはVersion2なのだが、mo_perlが1.99だった。
ということでmod_perl2にアップグレードする。
1.apxsをインストール
確認すると下記のパスに
/usr/sbin/apxs
が存在。つまりapxsがインストールされていたので次の工程へ。
/usr/sbin/apxs
が存在。つまりapxsがインストールされていたので次の工程へ。
2.既存 Apache2 API を削除
$ find /usr/lib/perl5 -name 'Apache2*' -exec rm -rf {} \;
$ find /usr/lib/perl5 -name 'Apache2*' -exec ls -lR {} \;
perlライブラリ内のApache2関連のAPIを根こそぎ削除しています。
実行後は何も表示されません。
実行後は何も表示されません。
3.mod_perl2の入手とインストール
Apacheのmod_perlのページ
からインストールをします。
からインストールをします。
ほかのアプリケーションと同じように、ダウンロード、
解凍、make、make test、make installでOK。
途中でapxsのパスを聞かれるのでインストールした
時のパス(/usr/sbin/apxs)を入力する必要があります。
解凍、make、make test、make installでOK。
途中でapxsのパスを聞かれるのでインストールした
時のパス(/usr/sbin/apxs)を入力する必要があります。
ここでmod_perl2がインストールされているかチェック
#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
print ($ENV{'MOD_PERL'} || 'ERROR');
上記のような簡単なスクリプトを作成し、
mod_perl_test.pl
と名づけ(今回のPLESK環境では拡張子plで
のみmod_perl2による動作をすることになっ
ている)、実際に実行してみる。
mod_perl/2.0.3
というような表示がされればとりあえず
バージョンアップに成功。だめな場合は
ERRORが出るので次の作業に。
mod_perl_test.pl
と名づけ(今回のPLESK環境では拡張子plで
のみmod_perl2による動作をすることになっ
ている)、実際に実行してみる。
mod_perl/2.0.3
というような表示がされればとりあえず
バージョンアップに成功。だめな場合は
ERRORが出るので次の作業に。
4.CPANからmod_perl2をインストール
もし3までの作業で、mod_perl2が動かなかったら
apacheのエラーログを見てみる。PLESK環境であれば
virtualHostのエラーログとなる。
apacheのエラーログを見てみる。PLESK環境であれば
virtualHostのエラーログとなる。
/var/www/vhosts/DOMAINNAME.COM/statistics/logs
の中のerror_log
になるだろう。
になるだろう。
その中に
failed to resolve handler `ModPerl::Registry': Can't locate ModPerl/Registry.pm in @INC (@INC (略)
というようなエラーが出ていたら、たぶん、
mod_perl2用のモジュールを入れる必要がある。
mod_perl2用のモジュールを入れる必要がある。
ということで
$perl -MCPAN -e shell
\>cpan install mod_perl2
ここで、インストールに失敗する場合はたぶんroot権限で
サーバにログインしてこの作業をしようとしているのでは
ないかと思われる。その場合は途中で出てくるテストを
すべてスキップする。
サーバにログインしてこの作業をしようとしているのでは
ないかと思われる。その場合は途中で出てくるテストを
すべてスキップする。
[warning] result:
[ error] You are running the test suite under user 'root'.
Apache cannot spawn child processes as 'root', therefore
こんなwarningが出るのでここでスキップするか聞いてくるので
YESを選ぶとスキップできる。
YESを選ぶとスキップできる。
また、この作業の中で
/usr/lib/httpd/modules/mod_perl.so
というファイルを作成しようとするが、すでにこのファイルが
存在する場合はエラーになってしまう(そういうメッセージが
出る)
その場合は上記のファイルをリネームして再度この作業を
実行させればよい。
/usr/lib/httpd/modules/mod_perl.so
というファイルを作成しようとするが、すでにこのファイルが
存在する場合はエラーになってしまう(そういうメッセージが
出る)
その場合は上記のファイルをリネームして再度この作業を
実行させればよい。
これで再度
mod_perl_test.pl
を実行してみるとおそらくmod_perlのバージョンが表示される
はずである。
mod_perl_test.pl
を実行してみるとおそらくmod_perlのバージョンが表示される
はずである。