mod_perlを使おう!
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん
01/11/07 17:42ID:+Gux2iOQ関連リンク等は>2
0011名無しさん@お腹いっぱい。
01/11/08 18:15ID:???0012名無しさん@お腹いっぱい。
01/11/08 18:15ID:???cgi_to_mod_perl - CGIの代わりにmod_perlを使うための最初のステップ
[説明]
READMEや他のmod_perlドキュメントに書かれているように、CGIの代わりとして
mod_perlを使うということは、mod_perlパッケージが提供する機能のうちのごく
一部分に過ぎません。ですが、それがmod_perlの一番メジャーな使い方ですので、
すぐ使えるやり方をこの文書で説明します。
[インストール]
INSTALLを読んでください。たいてい次のやり方で大丈夫です。
perl Makefile.PL && make && make install
[設定]
CGI代わりとしてmod_perlを使うときのお勧めの設定です。
Alias /perl/ /real/path/to/perl-scripts/
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
</Location>
'Location'の指すのはURIで、ディレクトリではありません。上の<Location /perl>
というのは、
<Location http://www.hoge.com/perl>
ということです。
0013名無しさん@お腹いっぱい。
01/11/08 18:23ID:???/real/path/to/perl-scripts/ 以下にあるファイル)はApache::Registryモジュールに
よって処理されることになります。(Apache::RegistryはCGI環境をエミュレートする
モジュールです。)
ファイルは存在していて、実行可能で、それに'Options ExecCGI'がオンになっていなければ
なりません。
もし、どこに置かれたファイルでもmod_perlが拡張子を見てスクリプトを実行してくれるように
したいなら、設定はこんな感じです:
<Files ~ "\.pl$">
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
</Files>
0014名無しさん@お腹いっぱい。
01/11/08 18:35ID:???[CGIの移植]
[I/O]
Perl5.004を使っているならほとんどのCGIスクリプトは手を加えずにmod_perlで動くでしょう。
もし5.003をお使いなら、Perlのビルトイン関数 read() と print() はCGIと同じように動いて
くれません。CGI.pmを使っているなら、昔ながらの print() の代わりに $query->print を
使ってください。
[ヘッダ]
mod_perlはデフォルトではヘッダをまったく送りませんが、もし変えたければこうします。
PerlSendHeader On
これでレスポンス行や一般的なヘッダがmod_cgiと同じように送られるようになります。
ですが、mod_cgiと同じように、PerlSendHeaderも終わりの改行コードは送りませんので、
スクリプト自身が送らなければなりません。例えば:
print "Content-type: text/html\n\n";
0015名無しさん@お腹いっぱい。
01/11/08 18:40ID:???必要「ありません」。
[NPHスクリプト]
'nph'CGIスクリプトを実行したいなら、コードにこれを追加してください:
local $| = 1;
普段 PerlSendHeader を On にしているなら、httpd.confにこれを追加してください:
<Files */nph-*>
PerlSendHeader Off
</Files>
0016名無しさん@お腹いっぱい。
01/11/08 18:50ID:???CGIはだらしないプログラミングを許してくれますが、mod_perlは違います。
なぜでしょうか? CGIスクリプトの一生はは一回のHTTPリクエストで終わりますし、
それぞれ独立したプロセスです。リクエストが終わればプロセスはなくなり、
グローバル変数や開けっ放しのファイルなど、なにもかもきれいに片付けて
もらえます。しかしmod_perlで走るスクリプトはもっと長い生涯を送ります。
何回ものリクエストの間に、一つのプロセスでいくつものスクリプトが処理されます。
つまり、自分で後片付けをする必要があるのです。耳にされていると思いますが:
必ず'use strict'と'-w'オプションを使うこと!
0017名無しさん@お腹いっぱい。
01/11/08 18:57ID:???必要ではありませんが、「強く」推奨されています。それに長い目で見ると
時間の節約にもなります。
スクリプトをきれいに書いておいて損はないですよ!
[落とし穴]
mod_perl_traps参照
0018名無しさん@お腹いっぱい。
01/11/08 18:59ID:???mod_perl_trapsは後ほど。
他にやってくれる人がいたらお任せします〜
0019名無しさん@お腹いっぱい。
01/11/09 02:11ID:S+GQdZO0mod_perlとあります。これはもうmod_perlが入っているってことなんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています