2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

mod_perlを使おう!

1 :名無しさん:01/11/07 17:42 ID:+Gux2iOQ
CGIを激速で実行できるmod_perlについて語りませう。
関連リンク等は>2

2 :1:01/11/07 17:42 ID:???
本家
http://perl.apache.org/

日本語解説サイト
http://www1.plala.or.jp/knambo/apa/mod_perl.html

cgi_to_mod_perl(英語)
http://www.perldoc.com/perl5.6.1/lib/cgi_to_mod_perl.html

mod_perl_traps(英語)
http://www.perldoc.com/perl5.6.1/lib/mod_perl_traps.html

3 :名無しさん@お腹いっぱい。:01/11/07 17:47 ID:???
名スレの予感

4 :1:01/11/07 17:52 ID:???
最近導入したのですがうまく動いてくれないで困りました。
use strict;はもちろんしてるし、変数の初期化もちゃんとしてて、それでも
動かないから、残っていたグローバル変数も必死(涙 で排除して、
それでも動かないのでよくよくmod_perl_trapsを読むと、「package宣言を
していないファイルをrequireするな」のようなことが書いてあってそれで
なんとか解決しました。html表示用のスクリプト(ヒアドキュメントで
書き出すだけの)をrequireしていたのですが、全部print_htmlという
サブルーチン名にしていて、それが原因でした。

5 :1:01/11/07 17:54 ID:???
ところで「グローバル変数は使っちゃだめ」みたいなことはよく言われますが、
環境変数($ENV{...})とかは大丈夫なのかな?
↑実はこれがスレ立てた動機だったりして(笑)

誰か教えて〜

6 :名無しさん@お腹いっぱい。 :01/11/07 17:57 ID:???
mod_perl MLって終わってるの? w
取り合えずFAQは....
正規表現の'o'はダメ
名前空間が変わる、Packageで修飾
exit(0);
$hoge = ''; でクリア
こんな感じ?

7 :名無しさん@お腹いっぱい。:01/11/07 18:00 ID:???
$main::ENV{'HTTP_HOGE'}

8 :名無しさん@お腹いっぱい。:01/11/08 00:54 ID:uKgtvIlV
>>5
%ENVはリクエスト毎にセットしなおされる。
だから、大丈夫だと思う。

といってもApache::Regstryなコードの話ね(あたりまえ)

9 :8:01/11/08 00:55 ID:???
う。
Apache::Registryだ。

10 :名無しさん@お腹いっぱい。:01/11/08 07:45 ID:???
コンパイル繋がりでPerlccとかも良い?
FastCGIとかSpeedyとかも    :-)

perlccはB::Cは殆ど速くならないね、ファイルは50KB位のが
800KBとかになった
B::CCに期待したいんだけどこっちは殆どharnessでこけるか
ポインタ周りでヲーニング出て無理やり実行したらコア、って感じ
面白いんだけどあの凶悪なヘッダは追う気にならなかった・・・

11 :名無しさん@お腹いっぱい。:01/11/08 18:15 ID:???
つれづれなるままに、cgi_to_mod_perlの翻訳でも。

12 :名無しさん@お腹いっぱい。:01/11/08 18:15 ID:???
[名前]
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>
ということです。

13 :名無しさん@お腹いっぱい。:01/11/08 18:23 ID:???
こうすると、指定した場所の下にあるファイル(あなたのファイルシステムで
/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>

14 :名無しさん@お腹いっぱい。:01/11/08 18:35 ID:???
'ScriptAlias'はmod_perlでは'効かない'ことに注意してください。

[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";

15 :名無しさん@お腹いっぱい。:01/11/08 18:40 ID:???
もしCGI.pmを使っていて'print $q->header'としているなら、PerlSendHeaderは
必要「ありません」。

[NPHスクリプト]
'nph'CGIスクリプトを実行したいなら、コードにこれを追加してください:
local $| = 1;

普段 PerlSendHeader を On にしているなら、httpd.confにこれを追加してください:
<Files */nph-*>
PerlSendHeader Off
</Files>

16 :名無しさん@お腹いっぱい。:01/11/08 18:50 ID:???
[プログラミング作法]
CGIはだらしないプログラミングを許してくれますが、mod_perlは違います。
なぜでしょうか? CGIスクリプトの一生はは一回のHTTPリクエストで終わりますし、
それぞれ独立したプロセスです。リクエストが終わればプロセスはなくなり、
グローバル変数や開けっ放しのファイルなど、なにもかもきれいに片付けて
もらえます。しかしmod_perlで走るスクリプトはもっと長い生涯を送ります。
何回ものリクエストの間に、一つのプロセスでいくつものスクリプトが処理されます。
つまり、自分で後片付けをする必要があるのです。耳にされていると思いますが:

必ず'use strict'と'-w'オプションを使うこと!

17 :名無しさん@お腹いっぱい。:01/11/08 18:57 ID:???
このことはmod_perlでのPerlでは他のどんな環境での場合よりも重要です。
必要ではありませんが、「強く」推奨されています。それに長い目で見ると
時間の節約にもなります。
スクリプトをきれいに書いておいて損はないですよ!

[落とし穴]
mod_perl_traps参照

18 :名無しさん@お腹いっぱい。:01/11/08 18:59 ID:???
ふ〜時間かかっちゃった。(もうあったりして・・・日本語訳)
mod_perl_trapsは後ほど。
他にやってくれる人がいたらお任せします〜

19 :名無しさん@お腹いっぱい。:01/11/09 02:11 ID:S+GQdZO0
自分のSUN Cobalt RaQ4の環境変数見てみると、
mod_perlとあります。これはもうmod_perlが入っているってことなんでしょうか?

20 :名無しさん@お腹いっぱい。:01/11/09 02:30 ID:???
mod_perlを入れると
$ENV{SERVER_SOFTWARE} に'mod_perl'が追加され,
$ENV{GATEWAY_INTERFACE} が 'CGI-Perl/1.1' になって
$ENV{mod_perl}が設定されるらしい。

iswebはSERVER_SOFTWAREしか変わってない。

21 :名無しさん@お腹いっぱい。:01/11/09 08:55 ID:nd1WMoVX
うちの場合(影響ありそうなもののみ)
SERVER_SOFTWARE = Apache/1.3.20 (Unix) mod_perl/1.26
GATEWAY_INTERFACE = CGI-Perl/1.1
PERL_SEND_HEADER = On
MOD_PERL = mod_perl/1.26

22 :名無しさん@お腹いっぱい。 :01/11/09 19:12 ID:???
>>10
バイトコードじゃ殆ど意味ないねえ...
俺もCCは殆ど使ってないよ
関係無いけど、某無料サーバ(perl他一切無し)にバイナリ上げてhtaccessで
ExecCGIオーバーライドしたらバイトコードが動いた (w

23 :名無しさん@お腹いっぱい。:01/11/09 20:44 ID:???
>>18
ありがとー、trapは一応有るけど機械翻訳丸出しみたい
http://www.google.com/search?q=cache:yAlKb0cn18k:www2.tech-unet.ocn.ne.jp/__dic__/perl/mod_perl_cgi.html+mod_perl_traps&hl=ja&lr=lang_ja
5003以前でprintが駄目ってのが気になるなぁ・・・
バッファが残っちゃうのかな? 5003使ってないから良いけど

24 :名無しさん@お腹いっぱい。:01/11/09 23:29 ID:???
ネストしたサブルーチンはトラップしにくい

おいらは、speedyCGIのほうが好き。
実際mod_perlはリソース食いすぎ

25 :名無しさん@お腹いっぱい。:01/11/10 18:55 ID:QgGGhVTZ
厨な質問なんですが、
PerlCGIで使っていたスクリプトを、そのままmod_perlで動かした場合はどれくらい速くなるものなのですか?
どんな種類のスクリプトに効果的なのかも分かりません。
宜しければ教えていただけないでしょうか?

26 :名無しさん@お腹いっぱい。:01/11/10 20:44 ID:???
>>どれくらい速くなるものなのですか
解らんけど所詮バイトコード並、PerlはPerlだから、4.5倍なんじゃ無いの?
>>どんな種類のスクリプト
呼ばれれば呼ばれる程効果が有る、勝手に永久常駐して自分でリクエスト捌くようなのだと
全く意味無し。

つーかroot持って無いと使えないんだけど、その辺はOK?

27 :25:01/11/10 21:21 ID:???
>>26
回答ありがとうございました。
例えばWebチャットの場合は効果がありそうですね。

mod_perlが組み込まれている無料サーバ(珍しいけど)がありますので(^^;;;

28 :名無しさん@お腹いっぱい。:01/11/10 21:30 ID:???
Xreaか・・・
チャット置いてレン鯖板で晒されないようにな w

29 :25:01/11/10 23:07 ID:???
>>28
いえ、設置を考えてるのは掲示板なので、普通に使っても問題ないと思います。
でも共有サーバですし、少しでも負荷を削減できないかと、mod_perlの利用を考えました。

お気遣いありがとうございます(^^;

30 :名無しさん@お腹いっぱい。:01/11/11 22:41 ID:???
http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl1.html
むつかしい・・・

31 :名無しさん@お腹いっぱい。:01/12/03 01:28 ID:VLJw8Nzl
保守age

32 :名無しさん@お腹いっぱい。:01/12/07 02:36 ID:???
1ch.tvではグローバル変数つかいまくりでも、mod_perlしてました。
先生、mod_perlって別に難しくないんですね!age

33 :名無しさん@お腹いっぱい。:01/12/08 02:05 ID:???
デキネーヨ
名前空間グチャグチャで動く訳ネーダロ -_-...

34 :名無しさん@お腹いっぱい。:01/12/10 00:26 ID:ko+ATGtx
mod_perlなんて使うよりPHP勉強しろ。
もうPerlが滅びるのも時間の問題なのだから。

35 :名無しさん@お腹いっぱい。:01/12/10 01:19 ID:???
>>33
Apache::PerlRunなら動くでしょーよ。へたれだけど。

36 :名無しさん@お腹いっぱい。:01/12/10 14:22 ID:u4VetMyU
>>34
PHPの勢いの方が心配だよ〜。

37 :仕様書無しさん:01/12/10 19:34 ID:???
>>35
ああそっか、使った事無いから>Apache::PerlRun
これだと殆ど意味ないよね? >毎回コンパイル
実験する価値はあるかにゃ・・・

38 :名無しさん@お腹いっぱい。:01/12/11 06:57 ID:???
Perl自体をexec()しない分、CGIと比べると割と軽くなるYO!
CGIをそのまま使える場合も多いから、性能と開発コストを天秤にかければ、
十分ペイする場合も多いような。

39 :名無しさん@お腹いっぱい。:01/12/11 14:24 ID:QvfYRs1F
Apache/1.3.22 (Win32)にmod_perl入れようということで
ソース落としてきたんですけど、makefile.pl実行してもmod_perl.makはみつからないし
makefileはnmakeで通らないしと、なんかおかしいです なんかファイル足らんのかなぁ?
つーかWin32バイナリってどっかにないですかね?

40 :抹茶 ◆RojWUtWg :01/12/11 14:58 ID:???
なるほど、ちょっと解説サイトを色々見てみたけど
mod_perlという代物はそれほど難しいというわけでもなさそうだ。

41 :名無しさん@お腹いっぱい。:01/12/11 15:17 ID:ebIAeWdW
>>39
PPMでインストールできたと思うよ。
http://apache.perl.org/distributions.html

42 :名無しさん@お腹いっぱい。:01/12/11 20:43 ID:ebIAeWdW
>>40
既存のスクリプトをPerlRunやApacheRegistryで動かす分には
殆ど変更は必要ない。

だけど、やっぱApache::*なモジュールをつくるのが
面白いYo!

43 :名無しさん@お腹いっぱい。:01/12/11 21:46 ID:ORPF/X5f
modperl-mlで出てた。Win32へのmod_perlインストール手順だとさ

http://www.gihyo.co.jp/wdpress/correctVol1_Perl.html

44 :のーとりあすびっぐ:01/12/13 20:30 ID:BEbOFXi+
suexec が使える mod_perl みたいなのってないですかね。
suexec っていうぐらいだから 毎回 exec しなきゃいけないんだろうけど。
うーむ。

45 :名無しさん@お腹いっぱい。:01/12/13 23:09 ID:???
>>44
別portで別uidのapacheを動かしておいて、
ProxyPass /path/to/vdir/ http://localhost:port/hogehoge/
ProxyPassReverse /path/to/vdir/ http://localhost:port/hogehoge/
みたいな感じでメインのapacheの一部に見えるようにするってのはどうよ。

46 :名無しさん@お腹いっぱい。:01/12/16 22:54 ID:???
#!/usr/bin/perl
use CGI;
$q = new CGI;
print $q->header;
print "Hello, world\n";
をCGI、Apache::Registry、Apache::PerlRunで動かしてab -c10 -n1000してみた。
環境はPentium II 400MHz、メモリ512MB、FreeBSD 4.4-STABLE。

CGI
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 7 67.3 0 1181
Processing: 171 1735 429.2 1738 3010
Waiting: 166 1729 430.0 1733 3005
Total: 171 1742 430.7 1745 3130

Apache::Registry
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 18 11.0 18 133
Processing: 24 25 11.9 25 144
Waiting: 5 21 11.5 20 139
Total: 33 44 10.6 43 148

Apache::PerlRun
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 1 16 12.8 15 197
Processing: 28 35 45.2 30 1006
Waiting: 4 30 44.4 26 986
Total: 28 51 46.0 46 1033

たしかにApache::Registryの方が速いけど、CGIに比べればApache::PerlRunも
かなり速い。BEGINブロックへの追い出しをきっちりやっていけばApache::Registry
とApache::PerlRunとの差は開くだろうけどね。

47 :名無しさん@お腹いっぱい。:01/12/16 23:01 ID:???
ちなみに、
main() { printf("Content-Type: text/html\n\n"); printf("Hello, world\n") }
をコンパイルしたCGIだと
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 4 13.2 0 90
Processing: 10 105 345.4 11 2729
Waiting: 0 100 345.2 10 2725
Total: 10 110 346.3 11 2729

PHP 4.0.6で <?php echo("Hello, world\n"); ?> だと
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 15 6.2 15 36
Processing: 12 20 10.6 19 290
Waiting: 5 17 10.5 16 286
Total: 30 35 8.5 34 293

もちろん、これは初期化にかかる時間を計測しているようなものなので、
実際のスクリプトでは違った結果が出ると思う。
(それにしてもCGIでperlを動かすのは遅すぎ)

48 :名無しさん@お腹いっぱい。:01/12/16 23:19 ID:???
Apache::PerlRunの結果が違ってた。本当は↓。欝氏。
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 21 29.2 10 229
Processing: 8 101 295.4 42 3759
Waiting: 0 92 293.3 33 3703
Total: 8 122 295.5 80 3790

49 :名無しさん@お腹いっぱい。:01/12/17 00:18 ID:fVST7IKB
>>46
うぁ、ほんと速いね。
でもなあ。suexec 出来ないのがなぁ。
一般ユーザで気軽にディレクトリ掘ったりできないのがちょっと。
FastCGI とかどうなんだろ。
入れてみっか。

50 : :01/12/18 22:35 ID:???
厨質で悪いんですが、mod_perlってan httpdでも使えるんですか?

51 :名無しさん@お腹いっぱい。:01/12/19 00:04 ID:???
>>50
mod_perlはApacheのモジュールなので、対応しません。

52 :名無しさん@お腹いっぱい。:01/12/19 01:40 ID:JMF99QDd
どうしても suexec したいんで、SpeedyCGI にしました。
mod_perl と普通の CGI の速度比が 100:1 だとすると、
SpeedyCG : 普通のCGI は 50:1 ってかんじかなぁ。

一行目の書換えで動くかとおもったけど、やっぱ多少のスクリプトの修正が必要だった。
行儀よくしろってか...

53 :名無しさん@お腹いっぱい。:01/12/19 04:30 ID:???
前にこの板のどこか(たぶん)で読んだんだけど
別ユーザ+別ポートでもう一つApache動かして
本体側にAliasするってのが有った。
現実的かどうかは分からんけど、結構面白そうだよね。

54 :名無しさん@お腹いっぱい。:01/12/19 04:32 ID:???
と思ったら45に書いてるじゃん (鬱
逝ってくる。。。

55 :名無しさん@お腹いっぱい。:01/12/19 19:43 ID:tRuF1VkQ
>>53
うーん。やりすぎって感じがしないでもない。
ちゅうか、それだったら、Apache 立ち上げないで
必要最低限の HTTP を解釈する独自デーモンでも書いたほうがいいような。

56 :名無しさん@お腹いっぱい。:01/12/19 21:58 ID:xcH3mu33
>>55
そうかなあ。
mod_perl環境の場合、前段にHTTPアクセラレータを
置くのは割と一般的だと思うんだけど。

こいつで振り分ければ良い訳だから
案外現実的な解かも...と思った。

57 :名無しさん@お腹いっぱい。:01/12/20 05:12 ID:RDMFULhn
>>56
HTTPアクセラレータがなんだかわかってないDEATH。

一般的な mod_perl 環境ってどんなのなんでしょう。
普通はあれですよね。サイト全体の為のスクリプトをmod_perlで動かしたりするんですよね。

58 :名無しさん@お腹いっぱい。:01/12/20 12:24 ID:tX1BaRx6
mod_perlって、httpdが太るじゃないですか。

画像とか静的なHTMLを出力するために、こんな大きなhttpdを
使うのは無駄なので、squidみたいなproxyを前段におくことが
あります。これがHTTPアクセラレータ。

同じマシンの中で両方するなら、
squid : port 80
mod_perl: port 8080
みたいな感じ。

59 :名無しさん@お腹いっぱい。:01/12/20 12:27 ID:sKSPgKeT
>>57
squid等、キャッシュサーバーをwebサーバーの入り口において、
サーバーの負荷を軽くする技術です。
mod_perl組み込むと、httpdの実行イメージが肥大するので、
画像や、html等はmod_perlのhttpdでサービスするのは無駄です。
そのため、
動的ページ→mod_perl
静的ページ→軽量apache、mathopdやboa,thttpd等
と振り分けると理論上はパフォーマンスが向上するはずです。
perl.apache.orgにも、この手法が公開されてます。
私も実際に試しましたが、squidのオーバーヘッドが結構でかいのと、
squidのキャッシュコントロールの設定が難しかったので、
やめました。
ただ、セキュリティの点で導入するのならメリットあると思います。
色々やった末、軽量apache+speedycgiが、もっとも
確実で、パフォーマンスがいいと思いました。

60 :名無しさん@お腹いっぱい。:01/12/20 12:53 ID:???
>>58-59
ケコ-ン!

61 :名無しさん@お腹いっぱい。:01/12/21 07:03 ID:jk5ftRfj
>>58,59
色々勉強になりました。
とりあえず、perl.apache.org を読んでみます。
ありがとうです。

62 :名無しさん@お腹いっぱい。:01/12/21 11:04 ID:vI34GlQ7
squid httpdアクセラレーターを語ろう
http://pc.2ch.net/test/read.cgi/php/998166103/

63 :名無しさん@お腹いっぱい。:01/12/21 16:25 ID:kuKW9GTl
mod_perl環境でもプロセスIDはPerl/CGI呼び出す度に変わりますか?

64 :名無しさん@お腹いっぱい。:01/12/21 22:19 ID:IUk0HPIs
cgiを止めてPHPオンリーってのはダメ?

65 :名無しさん@お腹いっぱい。:01/12/21 22:41 ID:vI34GlQ7
>>63
プロセスIDはApacheのプロセス毎についてますが...?
#外してるよな...

>>64
好みの問題でしょう。ちなみにmod_perl環境ではperlでCGIを使う意味が
あまりありません。もしかして誤爆ですか?

66 :63:01/12/21 23:00 ID:???
>>65
今テンポラリファイル名に$PID使ってるので,mod_perlでもちゃんと動くかなぁと思って聞きました。
よく考えるとperlがhttpdになるだけなので だいじょうぶそうですね。
ありがとうございました。

67 :名無しさん@お腹いっぱい。:01/12/22 02:08 ID:???
>>66
$PID使うよりも$UNIQUE_ID使った方が安全と思われ。
将来mod_perlが同一プロセス、複数スレッドで動くようにもなった場合はまるかもよ。

68 :名無しさん@お腹いっぱい。:02/01/02 14:28 ID:z//VSzFn
Apache::Registry環境でPATH_INFOを使っていないときに
$ENV{'PATH_INFO'}を参照したら前回のPATH_INFOが
残ったままになってるんですが回避の方法って無いんですかね?

69 :名無しさん@お腹いっぱい。:02/01/02 20:06 ID:???
>>68
手元の環境で試してみたところ、$ENV{'PATH_INFO'} はちゃんとクリアされて
たよ。PID が変わってないことも確認した。

とは言え、実際そっちではそうなってるんだろうから、当面の回避策としては
REQUEST_URI と SCRIPT_NAME を使って本当に自分が PATH_INFO 付きで呼ばれ
たのかを確認するしかないかな。

70 :名無しさん@お腹いっぱい。:02/01/05 21:34 ID:LDyBbo+H
スイマセン、質問いいすかー?
とりあえず、mod_perl-1.26は動いてるんですけど、気になることが。

perl Makefile.PL USE_APXS=1 WITH_APX=/path/to/bin/apxs EVERYTHING=1

でMakefileつくってmakeの後、make testしたとき、
Can't make test with APXS (yet)
って出るけど、これはこれで問題ナシなんでしょーか。

Makefileのソースみてもこれしか
出ないようになってるからいいんだろうが・・・。

INSTALL.apaciに明記してある手順、
=head2 Build mod_perl as DSO outside Apache source tree via APXS
ではmake testも入ってるけど
実質的には意味のないステップなの?

気になります。だれか教えて。長くてスマソ。

71 :名無しさん@お腹いっぱい。:02/01/10 14:07 ID:???
age

72 :名無しさん@お腹いっぱい。:02/01/12 03:23 ID:9iEYLiJr
あげてみよう。

73 :名無しさん@お腹いっぱい。:02/01/25 00:51 ID:???
おお、ためになった。

74 :ほげ:02/01/25 00:56 ID:jfCY728M
おお、だめになった。

75 :名無しさん@お腹いっぱい。:02/02/01 01:56 ID:???
運用が難しい(一般的にあまり利用されていない)
→KENTさんの技術力でカバー
http://kent.parks.jp/over3.html

YYボードも動きますか?

76 :名無しさん@お腹いっぱい。:02/02/01 13:01 ID:???
>>75
>>32-35 辺り参照。

77 :名無しさん@お腹いっぱい。:02/02/01 16:37 ID:uE2BC2dR
他スレでも出てたけど
mod_perl vs PHP + Zend Optimizer
ではどっちが早いの?
すげー気になる。

78 :名無しさん@お腹いっぱい。:02/02/01 22:22 ID:???
http://kent.parks.jp/over3.html
>「mod_perl」とは、WEBサーバーでCGIを高速に動かすためのツールです。
さすがKENT (爆)

79 :名無しさん@お腹いっぱい。:02/02/03 21:19 ID:nVjpXt8Y
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer

80 :名無しさん@お腹いっぱい。:02/02/03 22:20 ID:???
>79
マルチは感心しないな。

81 :Redhater:02/02/04 02:40 ID:r5AiMbOu
mod_perlを使いつつ、suexecすることってできるんですか?
いろいろやってみたのですができません・・・。

http://www.goodbreeze.com/

82 :名無しさん@お腹いっぱい。:02/02/04 02:48 ID:???
>>81
できない。

83 :名無しさん@お腹いっぱい。:02/02/09 23:28 ID:???
mod_perlの事を知りたく思っています。
借りてるサーバーでmod_perlが使えるそうなので、軽くなるならと思い
色々調べはじめました。
ところがgoogleでmod_perlの事を検索したのですが、検索キーワードが
良くないのかmod_perlのインストールの方法とかばかりが引っかかり、
実際にコーディングをどうすればいいとか具体的な利用法とかの
載っているページが見つかりませんでした。
もしどなたか詳しく説明をされているサイトをご存知でしたら、
教えていただけないでしょうか?
よろしくお願いします。

84 :名無しさん@お腹いっぱい。:02/02/09 23:44 ID:7ll9Q9qB
>83
-w付けて,use strictして,
グローバル変数はなるべく使わないようにして,
もし使う時も初期化をきちんとやる,
とかかなぁ。
漏れも知りたいのであげ

85 :名無しさん@お腹いっぱい。:02/02/09 23:49 ID:WSZ5EavI
>>83
>>11-19

86 :名無しさん@お腹いっぱい。:02/02/10 07:55 ID:???
何か適当にメールサーバ動かしてるけど、コードはそれほど変わらないよ
強いて言うなら、Packageの修飾をちゃんとする事とパイプ何かの
後片付けを忘れない事位かなぁ・・・・
漏れの書いたの見ると意識的に初期化する様なコードになってた
$scalar = ''; @ary = (); とか

あ、正規表現のoスイッチも駄目だったかも

87 :名無しさん@お腹いっぱい。:02/02/10 11:55 ID:TL971BdT
うーむ、わかんねぇ。

たとえば、helloworldを表示するスクリプトを
mod_perlで動かすにはどうすんの?

88 :83:02/02/10 12:56 ID:TkkSs6mB
>87
自分もそれを聞きたいです。
それの説明されているサイトの紹介でも良いのでどなたかお願いします。

その後に>11-19を参考にさせてもらおうと思います。

89 :名無しさん@お腹いっぱい。:02/02/10 14:32 ID:GSOYlDJs
基本的には、>>84で問題ないが、
mod_perlでは、
my() scoped variable in nested subroutines
という特殊な問題があるので注意。

http://perl.apache.org/
http://perl.apache.org/guide/
http://perl.apache.org/dist/cgi_to_mod_perl.html
http://perl.apache.org/dist/mod_perl_traps.html
は必読。
日本語ドキュメントは期待しても駄目よ。

90 :名無しさん@お腹いっぱい。:02/02/11 00:46 ID:???
>>89
そこの中なら、
CGI to mod_perl Porting. mod_perl Coding guidelines.
http://perl.apache.org/guide/porting.html
見れば良いんでないの。

91 :名無しさん@お腹いっぱい。:02/02/11 21:03 ID:???
あと、これが有るな。早く日本語版ホスィ
mod_perl Pocket Reference
http://www.oreilly.com/catalog/modperlpr/

92 :名無しさん@お腹いっぱい。:02/02/23 22:36 ID:???
質問です。
以下はSocketを使って2ちゃんのトップページを表示する
簡単なCGIスクリプトですが、mod_perl経由だと動いてくれません。
mod_perlが動くことは確認したのですが、Socketを使うとなると
どうしても正常に動いてくれません。何か良いお知恵を・・・。
-----
use Socket;
socket('SOCK',PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect('SOCK',sockaddr_in(80,inet_aton('2ch.net')));
select((select(SOCK),$|=1)[0]);
print SOCK "GET http://2ch.net/ HTTP/1.0\r\n\r\n";
print "Content-type: text/html\n\n";
print <SOCK>;

# Apache/1.3.23 (Win32) mod_perl/1.26_01-dev

93 :名無しさん@お腹いっぱい。:02/02/23 22:48 ID:???
私的にはIO::Socketのほうが好き。

94 :名無しさん@お腹いっぱい。:02/02/23 23:31 ID:???
>>92
なんかおかしくないか?
GET / HTTP/1.0
じゃないの?

95 :92:02/02/23 23:45 ID:???
>>93
タイムアウトとかあってよさげです。
今度、使ってみようかと思います。
>>94
そうですね。正しくは
print SOCK "GET / HTTP/1.0\r\n";
print SOCK "Host: 2ch.net\r\n\r\n";
ですね。お手数かけてすいません。

いずれにせよ動いてくれませんが・・・。

96 :名無しさん@お腹いっぱい。:02/02/24 02:12 ID:1IBSQesy
>>92
use strict;
perl -wで動かして、apacheのログ見てみてんさい

97 :名無しさん@お腹いっぱい。:02/02/24 02:19 ID:???
素直にLWP。

98 :”管理”者:02/02/24 04:08 ID:???
テスト書込み1

99 :92:02/02/24 08:13 ID:???
>>97
LWPを使ってみたら動きました。
SocketやIO::Socketだと動かず、LWPだと動くのは何故だかわかりませんが...

いろいろとありがとうございました。
-----
use LWP::Simple;
print "Content-type: text/html\n\n";
getprint 'http://2ch.net/';


100 :ひろゆ子@暫定管&lre;直人:02/02/24 18:18 ID:???
>98
せめてこのくらいやって下さいですです。。。

101 :ひろゆ子@暫定管&lre;理人:02/02/24 18:19 ID:???
なんのテストしたかったんだろう?100げとしちゃった、てへ。

102 :名無しさん@お腹いっぱい。:02/02/24 19:21 ID:???
厨房丸だし

103 :名無しさん@お腹いっぱい。:02/02/28 20:41 ID:9QfD2oaF
>>87のやり方って結局どうなのよ?

104 :nobodyさん:02/03/03 02:09 ID:Z7la6eJB
こんなのあったよー。

Apache+mod_perlのCSS予防法
http://slashdot.jp/article.pl?sid=02/03/02/1150203
#クロスサイトスクリプティングの方。

個人的にはApache::*なモジュールよりも、
Apache::Regstryなコードを書くほうが多いから「ふーん」て感じ。

105 :fight:02/03/03 10:10 ID:sYgoE6A5
ちょっと皆さんこのページさぁどう思う
http://www.geocities.co.jp/Bookend-Ango/2352/


106 :nobodyさん:02/03/03 10:13 ID:???
>>105
いきなりwindowが開いてウザイ。板違い。宣伝氏ね。

107 :なぁ。:02/03/06 17:06 ID:R30flEyT
apache_1.3.23 and mod_perl-1.26
でmake testがとおらないーー!

Can't locate object method "new" via package "URI::URL" at ../blib/lib/Apache/te
st.pm line 252.
だと。
なんか、調べるとLWP::UserAgent.pmにパッチを当てろとか書いてあるけど、
../blib/lib/Apache/test.pm
に当ててるわけでないから、意味ないきがするんだよね。
どうしたらよい?
テストが通らないくらい、無視してよいですか?



108 :nobodyさん:02/03/06 18:29 ID:xRtVgBJD
>>107
モジュール類古くない?
とりあえずアップデートしてみたらどう?
perl -MCPAN -e '@mod = CPAN::Shell->r; CPAN::Shell->install(@mod)'

109 :nobodyさん:02/03/06 23:53 ID:???
苦労してmod_perlなんて使うぐらいなら
CでCGI組めばいいじゃん。

110 :nobodyさん:02/03/07 00:09 ID:???
C/CGIより速いからじゃない?

111 :nobodyさん:02/03/07 15:20 ID:???
>> 110
そだね。CGI屋には馴染めない部分があるかもしれないけど、
Perl屋には普通のことばっかだし。

112 :nobodyさん:02/03/07 17:20 ID:???
mod_perlとmod_phpだとどっちが速いの?

113 :nobodyさん:02/03/07 21:25 ID:???
http://www.hippo2000.net/cgi-bin/KbWiki/KbWiki.pl?cmd=disp&page=PHP%a4%ce%ca%fd%a4%ac%b7%da%a4%af%a4%c6%c2%ae%a4%a4%a4%cf%cb%dc%c5%f6%a1%a9
>>112
上のリソースによると、大差ないか、少しmod_perlの方が速いということらしい。


114 :nobodyさん:02/03/07 21:41 ID:572QyWU+
PHPって大した事ないんだね。

115 :nobodyさん:02/03/07 23:01 ID:???
Apache::ASP使ってみた。 いい感じだけど、エディテングで発狂。
ASPとかJSPな人、どんなエディタ使ってんの?


116 :nobodyさん:02/03/07 23:37 ID:???
>>115
Emacs + mmm-modeはどうよ。
ttp://mmm-mode.sourceforge.net/

117 :nobodyさん:02/03/08 00:30 ID:???
俺的には、HTMLに埋め込むのはHTML::Template程度が限界。


118 :115:02/03/08 01:18 ID:???
さんきゅ、見てみる。
ASPというより、perl scriptのヒアドキュメントの中に埋め込みたいのだけど…


119 :nobodyさん:02/03/28 11:19 ID:???
Apache::Registryを使用するためのconfigファイルの典型的なエントリ

Alias /perl/ /usr/local/apache/perl
<Location /perl>
  SetHandler perl-script
  PerlHandler Apache::Registry
  PerlSendHeader On
  Options +ExecCGI
</Location>


120 :nobodyさん:02/03/28 11:26 ID:???
スクリプトを標準のCGIで実行するつもりがないなら、いくつかの
関数を、それらに対応するApache::関数で置き換えることで、若干
パフォーマンスを高め、メモリを大幅に節約することが出来る。

IO::File        --> Apache::File
CGI::escape     --> Apache::Util::escape_uri
CGI::unescape   --> Apache::Util::unescape_uri
CGI::escapeHTML --> Apache::Util::escape_html
POSIX::strftime --> Apache::Util::ht_time


121 :nobodyさん:02/03/29 03:17 ID:???
Alias /perl "C:/www/http/home/mod_perl/"

<Directory "C:/www/http/home/mod_perl/">
SetHandler perl-script
# PerlHandler Apache::Registry
PerlInitHandler Apache::StatINC
AllowOverride All
Options +ExecCGI Indexes
Order allow,deny
Allow from all
</Directory>

こういう風にやって、上のコメントアウトを外すとディレクトリーが404になってしまいます。
どうすれば直りますか?

122 :nobodyさん:02/03/29 03:17 ID:???
 

123 :nobodyさん:02/04/05 18:16 ID:???
mod_perl FAQ

【CGI動かねぇぞゴルァ!!】
で、どんな症状なわけ?いくつか可能性あるYO!

・File not found
Apacheの設定ファイルに正しいエントリを作成したのか?mod_perl.podに書か
れているように、Alias /perl/ ... と <Location /perl>... ディレクティプ
をaccess.confへ追加する必要があるんだよ。そしてもちろんスクリプトはAlias
ディレクティプで指定されたディレクトリの中にあって、ウェブサーバを実行
するユーザーが、読み込みと実行が可能でないとイヤン。

・Forbidden
てめーはこのサーバの/perl/fooにアクセスする許可を持ってねーよ。(プ
chmod 755 /path/to/my/mod_perl/scripts
chmod 755 /path/to/my/mod_perl/scripts/foo

・Internal Server Error
このスクリプトは実行時エラーで逝ってしまった。サーバーのerror.logの中に
エラーメッセージがあるからさ、それ読めばなんでそうなったか分かるっての。
そうそう、CGI.pmを使っているなら、スクリプトをシェルプロンプトで走らせち
まえば、何が起こるのか分かるかもしれん。

error.logにスクリプトの構文エラーだぞゴルァ!!って書いてあんのに、
perl -c /path/to/my/mod_perl/scripts/foo
だと全然オッケーな時は、__END__ や __DATA__が使ってるのが悪いんちゃうんか
と。ゴメソ、mod_perlのApache::Registryはそいつら使えへんねん。

124 :あわてもの:02/04/14 10:08 ID:4YBd0gTm
 Apache2.0.35+ActivePerl5.6.1.631(mod_perl1.99_02-dev)
をインストールしてみましたがhttpd.confの設定が変わっているようで
 LoadModule perl_module modules/mod_perl.so
は記述するのですが、Apache1.3.24の場合のような
 AddModule mod_perl.c や #!D:/ActivePerl/561/bin/perl.exe
の記述は必要ないようです。

httpd.confに
ScriptAlias /mod-perl/ "D:/Apache2/mod-perl/"
<Directory "D:/Apache2/mod-perl">
SetHandler perl-script
PerlHandler Apache::Registry
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
と書いてapache2をスタート。一応ApacheServiceMonitorでは正常に
動いてるようです。

 ところがブラウザからCGIを動かしてみるとmod_perlのディレクトリ構成も変わっているようで PerlHandler Apache::Registry のままでは@INCにそんなものはないと怒られます。
 調べてみるとRegistry.pmは D:/ActivePerl/561/site/lib/apache2/ModPerl にあるので  PerlHandler ModPerl::Registry と変えてみましたが
 Can't locate ModPerl/Registry.pm in @INC (@INC contains: D:/ActivePerl/561/lib D:/ActivePerl/561/site/lib .) at (eval 1) line 3. と言われてダメ。

さらに調べてみると D:/ActivePerl/561/site/lib/にApache2.pmというファイルがあって@INCに D:/ActivePerl/561/site/lib/apache2を追加する機能があるらしいと解ったので物は試しと
PerlHandler Apache2 ModPerl::Registry
と書き直してブラウザからCGIを動かしてみると
 BEGIN failed--compilation aborted at D:/ActivePerl/561/site/lib/Apache2/ModPerl/RegistryCooker.pm line 48.
 Compilation failed in require at D:/ActivePerl/561/site/lib/Apache2/ModPerl/Registry.pm line 11.
 BEGIN failed--compilation aborted at D:/ActivePerl/561/site/lib/Apache2/ModPerl/Registry.pm line 11.
 Compilation failed in require at (eval 2) line 3.
といわれてダメでした。

 Apache2.0.35+ActivePerl5.6.1.631(mod_perl1.99_02-dev)でのhttpd.confの正しい設定を誰か知りませんか?


125 :あわてもの:02/04/21 23:11 ID:1/aZbmex
 >>124はあほな質問だったのかな?
 それともこのスレ、誰も見てないのだろうか?

 誰か反応してくれませんか。


126 :nobodyさん:02/04/21 23:34 ID:???
Apache2.xが流行るまで辛抱辛抱。

127 :nobody:02/04/22 02:35 ID:80pbFtvd
< % Web Applications with Apache & mod_perl % >

Apache::ASP マニュアル和訳開始

http://sourceforge.jp/projects/apache-asp-jp/


128 :nobodyさん:02/04/22 03:24 ID:???
>>125 lib の中にApache2/ModPerl/Registry.pmがあるなら
Apache2::ModPerl::Registry
じゃねーの?

129 :あわてもの:02/04/22 07:43 ID:wb65qKDP
>>126
 励まし、ありがとうございます。

>>127
 情報、ありがとうございます。
 早速見に行ってきます。

>>128
 ご助言、ありがとうございます。
 でもすでにやってみましたがダメだったのです。


130 :nobodyさん:02/04/24 19:09 ID:oPJvWoo3
$0と%ENVと%SIGはグローバル変数ですか。

131 :lom:02/04/24 19:27 ID:a5s+3PHM
面白いのみつけたぞー。dennoukk@mail.goo.ne.jp

132 :nobodyさん:02/04/29 00:10 ID:44EJtQiu
 Apache2対応mod_perl2の情報求む。

 当方httpd.confの書き方わからず難渋している。


133 :nobodyさん:02/04/29 00:21 ID:???
>>132
http://www.freeml.com/message/modperl@freeml.com/0000238

134 :nobodyさん:02/04/29 01:20 ID:???
httpd.conf:
-----------
LoadModule perl_module modules/mod_perl.so
Alias /perl e:/Apache2/cgi-perl
PerlRequire e:\apache2\conf\startup.cgi

<Location /perl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options ExecCGI
PerlSendHeader On
</Location>

startup.pl:
-----------
#! /perl/5.6.1/bin/MSWin32-x86-multi-thread/perl.exe -w

use strict;
use Apache2 ();
use Apache::compat;

and a test script:
#! c:/perl/5.6.1/bin/MSWin32-x86-multi-thread/perl.exe -w
use ModPerl::Registry;
use CGI;

$q = new CGI;

print $q->header,
$q->start_html(),
'Hello',
$q->end_html();


135 :nobodyさん:02/05/26 20:20 ID:???
メンテナンスでやんす

136 :nobodyさん:02/05/27 00:56 ID:???
ここに書き込んでる奴等ってmod_perlがなんだかわかってんのかいな・・・
軽くなる軽くなるとは言うけど、結局一番短縮できる(というかスキップ
できる)のはコンパイルだけだぜ?

それよかApacheの色んなハンドラーを使えるとか、そういうことのメリット
のほうが大きいと思うけど。

137 :nobodyさん:02/05/27 01:46 ID:???
>>136
じゃ、そういう具体的な事でも書いてってよ

138 :nobodyさん:02/05/27 13:32 ID:???
>>136

Perlインタプリタをプロセスとして起動する必要が無くなる点を忘れてはいけない。
Apache::RegistryとApache::PerlRunを比べると極端に差が無いでしょ?

139 :nobodyさん:02/05/27 18:43 ID:???
おお、そうかそうか。忘れてた。perl_init()(←関数名が怪しいが・・・)
が各プロセスに対して一回しか呼ばれないのだよね。

140 :nobodyさん:02/05/27 18:49 ID:???
>>137
うーん、例えばその成功・失敗をユーザーに報告しなくても
いいような処理の場合は$r->register_cleanup()を使うと
ユーザーにとって処理が早く終わったように思わせられるとか?

PerlTransHandlerを使うとコンテンツ又はハンドラーにアクセス
する前にURLを色々変換できて便利だとか?

あと個人的にはApache::DBIが使えてすごい嬉しい・・・

141 :nobodyさん:02/05/27 22:05 ID:???
>>140
だねー。


142 :nobodyさん:02/05/29 09:44 ID:UwM7m6Hb
mod_perlをちゃんと使ってる人って少ないのね・・・便利なのに。

143 :nobodyさん:02/05/29 10:13 ID:???
俺はハンドラ書いたりするし便利だと思うけど、Apache::Registoryだ
け使うのを指して「ちゃんと使ってない」呼ばわりするのはひどくない?
別にいいじゃん。

144 :nobodyさん:02/05/29 10:16 ID:???
>>143
いや、そうじゃなくてなんかスレがあっというまに下のほうに
行ってしまったので「あらやっぱり少ないのねぇ」と思った
だけよ。

145 :143:02/05/29 11:20 ID:???
>>144
あ、そういう事か。
既に便利に使ってる人は特に書き込むネタが無いんじゃないかな。
Webアプリ開発手法みたいに日々精進て感じじゃないし。

で、気軽に試せる環境がない(レンタルスペース等では使えない)ので初
心者からの質問ネタも出ないと。

146 :nobodyさん:02/05/29 12:09 ID:???
>>142
使ってる人が少ないんじゃなくて、
2chユーザなmod_perlユーザが少ないに5円。

仕事でやってる人はこーいうところ見ないし書かない(書けない)からな。

147 :nobodyさん:02/05/29 14:58 ID:???
>>144-145
確かに。でもこのスレでmod_perlプロの裏技とか披露してくれたら
すごい楽しいのに。mod_perl MLもたまにおもしろいネタがあるけど
たいていつまんないしなー。

148 :nobodyさん:02/05/29 17:19 ID:???
>>147
mod_perl MLって英語のアレ?

体感で9割がダラ長い初心者質問メールで追っかけるの疲れてやめた。
2chの短いレスに慣れてるから尚更疲れた。

時々興味深いモジュールのアナウンスなんかはあったけど、メールチェッ
クにかける時間を考えたらコストパフォーマンス悪すぎた。俺には。

149 :nobodyさん:02/05/30 01:10 ID:???
>>148
そうそうまさにその通り。
まーでもまだ一応入ってる。ほとんど流し読みだけどね。

150 :nobodyさん:02/05/31 14:24 ID:???
ttp://perl.apache.org/dist/mod_perl-1.26/INSTALL.win32

151 :nobodyさん:02/07/23 14:10 ID:CrJNwpCC
古スレあげて恐縮なんですがちょっと質問させてください。
Apache::Registry用にコードを書くときはスコープに注意して
書いたりしないとならないようですが、Apache::PerlRunを使う
場合はどこらへんに注意して書けばいいのでしょうか。

基本的に、Apache::PerlRunなら大抵のスクリプトはそのまま動くと
思うのですが、そのままでは動かないスクリプトもあると聞いたので…

152 :nobodyさん:02/07/23 17:39 ID:???
記述ミスに気をつければいいと思うよん

153 :nobodyさん:02/07/24 00:48 ID:???
普通に書けば問題は無い。
世に反乱してるCGI用のコードは異常なのばっかだけど。

154 :nobodyさん:02/07/24 10:03 ID:???
>>152-153
回答ありがとうございます。ということは素人が書いたような
スクリプトが大量に動いてるサーバーに導入するのは控えた方が
よさそうですね。どうもありがとうございました。

155 :nobodyさん:02/08/11 17:02 ID:aSGcdTFF
BIG-server.comの新プランにより、
2ちゃんにmod_perl導入の予感

156 :コギャルとHな出会い:02/08/11 17:17 ID:JupEU5/3
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
                 
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。

157 :nobodyさん:02/08/11 19:46 ID:???
mod_perlを導入したらサーバのスワップ溢れた・・・
MaxClients をかなり低くしないと駄目?

158 :nobodyさん:02/08/11 21:10 ID:???
mod_perl より FastCGI のほうがいいよ
メモリ消費量が全然違う
http://www.fastcgi.com/


159 :nobodyさん:02/08/11 23:39 ID:???
>>158
FastCGI でのPerlCGIスクリプトを書くときの留意点とか、Apacheへの導入の
分かり易い説明サイト(日本語)ってありますか??

160 :nobodyさん:02/08/12 00:26 ID:???
for vaka

http://www.google.com/search?q=FastCGI+FAQ&sourceid=opera&num=100&ie=utf-8&oe=utf-8

161 :nobodyさん:02/08/12 01:04 ID:???
fastcgiはIE5.01並みの今更感があるんだけど、、、どうなのよ

>>157
元々かなりのメモリが必要。物理的に増設した方がいいんじゃないの

162 :nobodyさん:02/08/12 11:32 ID:???
MaxClients 2
でいいよ。

163 :nobodyさん:02/09/18 02:05 ID:p3QnY3K0
age

164 :nobodyさん:02/10/17 17:26 ID:w3jHhAtg
mod_perlってグローバル変数は絶対に使えないのですか?

165 :nobodyさん:02/10/17 17:29 ID:???
なわけねーだろ

166 :nobodyさん:02/10/17 19:55 ID:vMdIvLO8
DBMSつかわなけりゃ、PHPなんぞより全然いいのにね
mod_perlもfastcgiも普及率低すぎるのはどーゆーことよ!?


167 :nobodyさん:02/10/18 01:43 ID:???
DBMS使わなけりゃって、PerlとDBMSのどっちが悪いっていいたいんだ?

まあ、mod_perlはメモリ食いすぎってのはあるわな。phpもそれなりに食うけど
松下からの支援があるから大丈夫なんだろう。

168 :nobodyさん:02/10/18 11:51 ID:LQtlqqOK
>167
PerlとDBMSが悪いってことはないさ
PHPってDBとネイティブ接続じゃん
PHPがmod_perl、fastcgi、tom猫とかに確実に勝ってるところってそこだけじゃん
↑極端だけど
PHPって他に良いとこみあたんないし、簡単だけどアホだし遅いし
だから、mod_perlもfastcgiの方がぜーんぜん良いってことさ


169 :nobodyさん:02/10/18 15:54 ID:???
Nationalの不買運動をするスレはここですか?

170 :nobodyさん:02/10/18 18:44 ID:vtdegNTU
>>164
コンフィグみたいなリードオンリーの変数は、
あえてグローバルにすることで速くなる。
上手く使えば、共有メモリーみたいにも使えるかも。
use var使えば、普通にグローバル変数使えるけど、パッケージまたぐような
使い方は無理だね。
普通そんな使い方しないけど。

171 :nobodyさん:02/10/18 20:07 ID:???
>>170
詳しくありがとうございます

172 :nobodyさん:02/10/19 02:23 ID:???
PHPはHTMLにスクリプトを組み込む形だけどPerlはスクリプトの中にHTMLを埋め込む形になる.
PHPならデザイン担当とプログラム担当を分けて分担作業ができるが、Perlだと完全分離は難しい.
個人ユースならともかく、実用ベースではPHPの勝ちかな.

173 : :02/10/19 04:50 ID:???
↑こいつ何もわかってないな。。。
マジレスしちゃって恥ずかしくないのかよ。。。

174 :nobodyさん:02/10/19 04:53 ID:???
fastcgi、名前だけは速い( ´,_ゝ`) プ

175 :nobodyさん:02/10/20 05:17 ID:???
PHPもPerlも実際にはあまり使われてないよ。
実際インターネットを見渡せばASPばっかり。

176 :nobodyさん:02/10/20 05:30 ID:???
>>175
GoogleはPHPだが

177 :nobodyさん:02/10/23 16:10 ID:???
ASPは糞

178 :nobodyさん:02/10/23 22:09 ID:MeYX5mSP
> 実際インターネットを見渡せばASPばっかり。
Webサーバーでは、apacheがトップシェアですが、
apacheでASPが動くのですか?



179 :nobodyさん:02/10/24 00:00 ID:???
>>178
動くけどASPの持ち味が生きない

180 :nobodyさん:02/10/24 00:02 ID:???
うごくよ。いくつかopen sourceの実装があるよ。

181 :nobodyさん:02/10/24 09:59 ID:???
実際インターネットを見渡せばJSPばっかり。

perlもヒアドキュメント使わずにjspのような
書き方できればシェアも広がるのに。

182 :nobodyさん:02/10/24 11:33 ID:???
>>181 jsp はよく知らないけど、テンプレート
モジュールならいくつもあるよ。そういう話じゃ
ない?

ところでみなさん、どんなテンプレートモジュー
ル使ってる?

183 : :02/10/24 19:31 ID:???
Mason最強!

184 :nobodyさん:02/10/24 23:29 ID:???
Perl + PHP::Session + PHP これ最強。

185 :nobodyさん:02/10/25 01:34 ID:???
Ruby最強説

186 :nobodyさん:02/10/25 21:47 ID:???
>>185
Ruby馬鹿ハケーン

187 :名無しさん@35周年:02/10/25 22:10 ID:f0WFU3YH
ハイヤーハイヤーとんとんとんとんとんとんとんとんとんとんとんとん
ばらばばらっばばらーばばら ぺんぺん!!
アーイヤーヤーコラ ぺんぺん!!
ソーレ 
http://plaza.rakuten.co.jp/a240a/



188 :nobodyさん:02/10/26 13:04 ID:???
すれ違いは承知の上で聞くけど使った人いる?

http://sourceforge.net/projects/psp/


189 :nobodyさん:02/10/27 12:41 ID:EphP21JY
単純に
<Files ~ "\.(cgi|pl)$">
SetHandler perl-script
PerlHandler Apache::Registry
PerlInitHandler Apache::StatINC
Options +ExecCGI
PerlSendHeader On
</Files>
て書いたんだけど同ディレクトリのデータファイルとか読みこめない・・・
仕様?

190 :nobodyさん:02/11/02 01:47 ID:vRpNWbq2
>>182
HTML::Template 使ってるよ。
というか他にテンプレートモジュール知らないので紹介してくれ。

HTML にスクリプトを埋め込む PHP や ASP より
HTML とスクリプトをかなり分離できて割とすっきりすると思う。
でも PHP でも確か同じようなテンプレートモジュールがあったな…

191 :nobodyさん:02/11/02 05:25 ID:o+t0cR8M
PHPとmod_perlのシェアの違いは
PHPはレンタルサーバーにインストールされてる率が高いけど
mod_perlが入ってるレンタルサーバーってあまり聞かないから
そこらへんなのかな。

192 :nobodyさん:02/11/06 12:12 ID:???
>191
HTMLの延長として書けるPHPの方が入りやすいのではないかしら。

193 :nobodyさん:02/11/08 17:11 ID:???
>>192
使い易さか・・・。

194 :nobodyさん:02/11/09 22:53 ID:4Q7VYiKo
そこら辺で配られてるスクリプト使うには
どれくらいの修正が必要?
例えばkentの掲示板とか

195 :nobodyさん:02/11/09 22:56 ID:4Q7VYiKo
PerlRunモードで動かしても
askabbsのデフォルトのままだと500エラー
どこら辺を直せばいいのかな?

196 :nobodyさん:02/11/10 00:39 ID:wej5Zqd8
speedycgiってどうよ?
mod_perlよりperlで書かれたフツウのCGIつかうなら楽っぽいけど

197 :nobodyさん:02/11/10 19:42 ID:xESBM0en
同じライブラリを別のCGIから読むと、必ず後で読んだ方のCGIから、
ライブラリ内のサブルーチンを呼ぶ時に、ありませんとエラーがでます。
ライブラリの読み込みにエラーは出ていません。
ライブラリはpackage使っていません。対策希望。

198 :nobodyたん:02/11/11 05:26 ID:???
SpeedyCGI は比較的シンプルなCGIプログラム向きだね。
mod_perl 特有の機能を使用しなければ,よいかも。

ただ,mod_perl と同じような注意点はあるので,そのまま使えるわけじゃないよん。

199 :nobodyさん:02/11/11 23:37 ID:???
最近はTemplate-Toolkitらぶ。

200 :nobodyさん:02/11/12 12:24 ID:+G2ZIth5
ttp://pc.2ch.net/test/read.cgi/php/1034583844/790n
>昔、mod_perlを開放して痛い目にあってた鯖屋を知ってます。
誰か、↑の件について詳しく知ってる人いませんか?
XREA利用してるから、ちょっと気になる。

201 :nobodyさん:02/11/12 17:42 ID:???
>>200
サポートです。

shared_html内でCGI/SSIは基本的にサポートしていません。新しいサーバーs4,s7では初めから動かないようになっています。
古いサーバーでは、shared_htmlでCGIを動かしているアカウントに移動をしてもうらうようにメールした後、順次サポートを停止します。
shared_html内でCGIを動かす理由は無いと思いますので、publuc_html内で動かして下さい。

ちなみにshared_htmlでCGIを動かしたからと言って速くなることはありません。(モジュール化はされません。)

mod_perlですが、利用しますとshared_html内のスクリプトのソース、データが他の利用者から丸見えになります。
隠す手段が無くなり、悪戯・改竄も簡単にできてしまいます。(パーミッション606以上にしないといけない為)

shared_html内でPHPを動かす場合は、SafeModeで起動されるため、ある程度セキュリティ上の確保が出来ますが、mod_perlを使うと上で述べたセキュリティ上問題が生じます。

s3のASP、JSPについても同様の問題があり、最大の壁になっています。

他人に見られても構わない、他人にデータを消される危険性を承知して頂ける場合は対応致しますが、利用者全員にリスクを背負わせる事は出来ないため現在対応しかねています。

202 :nobodyさん:02/11/15 23:58 ID:???
>他人にデータを消される危険性を承知して頂ける場合は対応致しますが、
>利用者全員にリスクを背負わせる事は出来ないため現在対応しかねています。
できるのかできないのかどっちや?

203 :nobodyさん:02/11/19 21:51 ID:???
XREAはfastcgiじゃなかった?

204 :nobodyさん:02/11/19 23:04 ID:VhhOAZ+P
SpeedyCGI 使ってる人って少ないのかな。

205 :rubyist@カラアゲうまうま:02/11/19 23:07 ID:???
未だにPerl塚手居る奴ってあほ

206 :nobodyさん:02/11/25 15:31 ID:4k6ePYUG
mod_perlでjcode.plみたいな外部ライブラリの呼び出し方がわかりません
具体的にどうすればいいんでしょうか?

207 :nobodyさん:02/11/25 16:06 ID:???
require 'jcode.pl';

おまえ一回近藤さんところ行って金払って勉強しなおせ。

208 :nobodyさん:02/11/25 17:55 ID:???
>>207
本当にそれでイイの?

209 :nobodyさん:02/11/25 20:57 ID:???
なぜあれで問題があると思ったかを簡潔に説明せよ。
まーpreloadしとくと幸せかもってのはあるけどな。

210 :nobodyさん:02/12/11 12:50 ID:OIU8Ox7y
xreaってfastcgiなんですか?
普通のスクリプトでも動く?>fastcgi
mod_perlとどっちがいいのかな?
sppedycgiはmod_perlより遅かったYO!

211 :nobodyさん:02/12/11 21:42 ID:???
一般的にはFastCGIはmod_perlよか早いって事になってるよね。
でも両者同じくらいなんじゃないかな。
どっちも使ってない漏れが言うのもなんですが。

212 :nobodyさん:03/01/08 19:06 ID:B/d3X4vI
質問!
>>189さんと同じような質問なんだけど、Apache2系+mod_perl環境に
変更したところ、CGIの中からファイルを読む時に、ファイルのパスを
フルパスで記述しないとエラーになるようになっちゃった。

<Files "*.cgi$">
SetHandler perl-script
PerlHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
</Files>

httpd.conf には上のように書いたんだけど、どこか設定し忘れでしょうか?
おまいら教えて下さい!

213 :山崎渉:03/01/15 13:35 ID:???
(^^)

214 :nobodyさん:03/01/16 08:45 ID:???
>>212
use Cwd;
print "\n\n",cwd;

実行してみ。

215 :nobodyさん:03/01/16 20:02 ID:???
Apachi2にきちんと対応するのは mod_perl と mod_php のどっちがはやいかな?

216 :nobodyさん:03/01/17 13:14 ID:WcjfDkhM
http://perl.apache.org/dist/win32-bin/
キタ━━━━━━(゚∀゚)━━━━━━━!!!!!

217 :nobodyさん:03/01/17 13:17 ID:???
つーかActivePerl 5.8.0 build 804 出てたのね
気付かなかった

218 :nobodyさん:03/01/17 14:55 ID:???
>>210
speedyCGIはね・・・速いんじゃなくて軽いんですよ
もちろん、cgiに比べれば激速だけど
ちなみに、mod_speedyなんてのもあります。
mod_perlはメモリー食いすぎ&スクリプトの入れ替えが面倒
あと、httpd自体が重くなるから、静的ファイルの処理も重くなる

ケースバイケースとはおもうけど、うちの場合、スケーラビリティでは、
speedycgi >>> mod_perlでしたね

219 :nobodyさん:03/01/17 21:28 ID:???
mod_perlの場合exitしちゃイケナイ
って言われたんですが 処理止める場合や
プログラムの終わりはどうすればいいんでしょう?

220 :nobodyさん:03/01/18 02:02 ID:???
>>219
http://perl.apache.org/docs/1.0/guide/porting.html
Terminating requests and processes, the exit() and child_terminate() functions
の項をどうぞ。


221 :nobodyさん:03/01/18 02:45 ID:???
exitは駄目でもdieはいいんだよな。おもしろいことに。

222 :nobodyさん:03/01/19 21:45 ID:???
実際インターネットを見渡せばColdFusionばっかり。

perlもやれ正規表現だなんだと言わずにColdFusionのような
簡便性を重視すればシェアも広がるのに。

223 :nobodyさん:03/01/20 01:27 ID:???


224 :nobodyさん:03/01/20 16:37 ID:???
>>218

うちのス環境でのストレステストでも、結果だけ見るとmod_perlはspeedyにまけてますた。
もちろん、サーバーのメモリ容量によっても結果は変わりそうですけど。

225 :nobodyさん:03/01/20 23:28 ID:+/2vXFio
やっぱCの方が早いって事か。
真珠はもうダメポ。

226 :nobodyさん:03/01/21 01:51 ID:???
?


227 :nobodyさん:03/01/24 02:05 ID:lHmFUyZc
もっと_Perlを使おう!

228 :nobodyさん:03/01/30 20:22 ID:X1QkLVxw
age

229 :nobodyさん:03/02/01 07:41 ID:ioiLfoAw
pc2.2ch.net
Apache/2.0.44 (Unix) mod_perl/1.99_07-dev Perl/v5.8.0 mod_ssl/2.0.43 OpenSSL/0.9.6g DAV/2 FrontPage/5.0.2.2624 PHP/4.3.0RC3 mod_gzip/2.0.26.1a
              〜〜〜〜〜〜〜〜〜〜

読み込んでいる以上使わない手はないな

230 :nobodyさん:03/02/01 15:20 ID:???
Apache::exit()
ってなによ?

231 :nobodyさん:03/02/02 21:34 ID:ZopgONhA
この板にmod_perl使ってる人いますか?

mod_perl で普通にサブルーチン定義ってできないの?
なんかサブルーチンが再定義されましたってWARNINGが
すべてのサブルーチンに出るんだけど。
動作的には問題なしです。

232 :nobodyさん:03/02/05 22:21 ID:???
>>231

>>4 じゃないの


233 :nobodyさん:03/02/05 22:26 ID:bAuNqhq0
mod_perlの日本語の文献が少ない〜と思ってたけど、
オライリーの "Apache拡張ガイド" ってかなりイイですね。

単に「CGIを高速化したい」というだけの向きには
お勧めしないが。


234 :nobodyさん:03/02/06 06:59 ID:???
自鯖持ってない人には結構敷居が高い気がするけど、
漏れもやってみたいんだな。実は。な厨房でした。
phpよりperlの方が、なんだかなぜだか好きなんだな、これが。
ま、別にどっちでもいいんだが。

235 :nobodyさん:03/02/28 07:13 ID:lH1io3Lr
Perl 5.6.1
mod_perl 1.27
Apache 1.3.27

Vine Linx 2.6r1

で mod_perl を利用したスクリプトを書いてます。
そこで問題が発生したのですが、
普段は正常に動作してくれるものの、
稀に下記のようなエラーを吐きます。

[error] Undefined subroutine &Apache::Registry::handler called.

そのエラーの後暫く時間を置くと、また正常に動作してくれます。

どのような原因が考えられるでしょうか?

236 :山崎渉:03/03/13 17:10 ID:???
(^^)

237 :山崎渉:03/04/17 12:25 ID:???
(^^)

238 :山崎渉:03/04/20 06:09 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

239 :nobodyさん:03/05/06 13:26 ID:???
きちんと use strict および my 宣言しているのですが、
前回処理のときの値が変数に残る場合があります。

原因がまったくわかりません。

240 :nobodyさん:03/05/06 15:44 ID:???
>239
とりあえず スクリプトさらせ
そしたらみてやる

241 :nobodyさん:03/05/10 20:51 ID:HZb4mCK8
>239
my $scalar="";で応急対処とか。
perl -wで起動してみるとか。

242 :nobodyさん:03/05/10 23:01 ID:???
>>239
抽象的なヒント。

ちゃんと消滅させないと再利用されてしまうぞ。

243 :山崎渉:03/05/22 02:04 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

244 :山崎渉:03/05/28 17:19 ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

245 :nobodyさん:03/05/28 19:30 ID:???
モドパ

246 :nobodyさん:03/06/28 01:43 ID:LpyzQ0Fu
Active Perlのppmじゃmo_perlは使えないんですか?

247 :nobodyさん:03/06/28 07:24 ID:???
>>246
帰れ。

248 :山崎 渉:03/07/15 11:10 ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

249 :nobodyさん:03/07/25 23:37 ID:???



250 :nobodyさん:03/07/26 13:11 ID:???
オブジェクト指向で、安全性確保できないPerl+mod_perl。
@ISAつかったら、その時点で、セキュリティ上大問題。
mod_perlの存在理由が問われるわけだが。


251 :nobodyさん:03/07/28 01:40 ID:ZmLsz+tt
PerlコミュニティーはPHPのようなサーバーサイドスクリプトの
開発には興味ないのかな?
PSP(Perl Server Pages)なるものがあったけどもっと本格的な奴
作ってほしいなぁ。

252 :nobodyさん:03/07/28 17:48 ID:???
>>251
HTML::Mason
HTML::Embperl
Apache::ASP
があるわけだが・・・


253 :nobodyさん:03/07/28 23:56 ID:???
>>251
最近はPHP自身そこから足を洗おうかという風潮だし。

254 :nobodyさん:03/07/29 00:08 ID:VHYtOhh7
>>252
よく知らないのだけど、それらの実行速度はPHPなどと比べて
速度的に遜色のないものなの?

255 :無料動画直リン:03/07/29 00:13 ID:2mrfBZ5M
http://homepage.mac.com/miku24/

256 :nobodyさん:03/07/29 00:16 ID:kW5HsU6r
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


257 :252:03/07/29 19:22 ID:wrNh0omf
>>254
252のようなもの使うならperl使わずに
PHP使った方が無難。
速度はmod_perlならそんなにかわんないじゃないの?

といっても最近はテンプレートで表示するのが普通っぽくなってきたから
PHP+smartyもしくはmod_perl+html::templateのどっちか、
っていうわけか。


258 :nobodyさん:03/07/29 19:22 ID:al0J9pjR
キキキタタタタ━━━((゜(゜∀゜)゜))━━━!!!!PART1
http://link.iclub.to/adalt/
http://link.iclub.to/amazon/
http://link.iclub.to/docomo/
http://link.iclub.to/google/

259 :nobodyさん:03/07/29 22:16 ID:VHYtOhh7
Perl/CGIを、Windowsサーバーならperl2exeで、UNIX系ならPerlccで
バイナリにしてしまえば速度は速くなる?

260 :nobodyさん:03/07/29 22:19 ID:VHYtOhh7
>>257
PHP(mod_php)に比べてmod_perlって何であんなに知名度に差があるの?
あとPHPはANHTTPDやIISなどにも対応してるけど、mod_perlは
Apacheのみだし・・・

261 :nobodyさん:03/07/29 22:22 ID:???
>>260
ただ使いにくいから。

262 :nobodyさん:03/07/29 23:33 ID:???
使えないんだろ?(プ

263 :nobodyさん:03/08/01 22:02 ID:???
>>260
mod_perlといえば、アパッチ::レジストリな訳で。

アパッチ::レジストリといえば、オブジェクト指向必須な訳で。

ところが、Perlのオブジェクト指向は痛い訳で。

そんなもの使いたくないって訳で。

ってのが、現状だろう。
専用サーバだったら、他にも良い言語、アプリ鯖いっぱいあるしね。
mod_perlはマニアックなとても逸品です。


264 :nobodyさん:03/08/02 01:05 ID:???
( ´_ゝ`)フーン。それで?

265 :山崎 渉:03/08/02 02:23 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

266 :ぼるじょあ ◆ySd1dMH5Gk :03/08/02 04:51 ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

267 :nobodyさん:03/08/02 04:53 ID:???
>>263
Apache::Registryとオブジェクト指向は
使用者にとっては何の関係もないわけだが・・・


268 :nobodyさん:03/08/02 06:22 ID:???
> ところが、Perlのオブジェクト指向は痛い訳で。

んなの、プログラミングする人間の勝手だと思うがな。

269 :nobodyさん:03/08/26 14:21 ID:???
>Apache::Registry
>Perlで作成したモジュールを実行する際に1度だけモジュールがコンパイルされ、メモリに常駐する。

となってますがどのくらいの時間常駐するのでしょうか。
永続的な常駐ならサーバのメモリ食いつぶしちゃうような…
#一人だけならともかく皆がやったりすると
気にするほどでもない?

270 :nobodyさん:03/10/08 23:31 ID:TFC4ht6F
age

271 :nobodyさん:03/10/09 06:04 ID:???
皆で使うってどういうことだ。

272 :nobodyさん:03/10/09 10:48 ID:???
共有鯖ってことでしょ
共有でmod_perlは無謀と思うのだが

273 :nobodyさん:03/10/10 05:29 ID:BH1wn/9y
RegistryじゃなくてPerlRunだったら共有鯖でも平気?

274 :nobodyさん:03/10/10 13:58 ID:???
suexec 使えなくて良いなら平気なのかも

275 :nobodyさん:03/10/10 21:04 ID:???
カレントディレクトリが移動しちゃう問題をなんとかしたいんですけど、
ソースを書き換えたら直りますか?

276 :nobodyさん:03/10/12 09:33 ID:5sejX4lf
mod_perl、mod_phpでsuexecを機能させてみたいな。
システム領域をオーバーライドするしか方法はないだろうけど。
suexecのソースを読んでみよう

277 :nobodyさん:03/10/12 09:43 ID:???
>>276
apacheをrootで動かす気かい?


278 :nobodyさん:03/10/12 09:49 ID:5sejX4lf
>>277
Apacheは例によってapacheユーザで動作。
カーネルに関わるプログラムをsetuidして子プロセスの実行権限を動的にするしかないんじゃないだろうか。
擬似的にApacheが複数のUIDで動作すると。suexecより危険度が増すけど

279 :nobodyさん:03/10/12 12:02 ID:???
1ユーザーごとに1つApacheを動かして、マルチスレッドにしておけば良さそう。

280 :nobodyさん:03/10/12 13:30 ID:5sejX4lf
メモリがいくつあても足りないと思う

281 :nobodyさん:03/10/12 13:31 ID:???
いくつ?512MBのメモリをひとつ刺しておけばいいんじゃない?

282 :nobodyさん:03/10/12 13:53 ID:5sejX4lf
そういう問題だけじゃないよ。
CPUが追いつかない。
Apache2なら可能性はあるが

283 :nobodyさん:03/10/30 15:43 ID:MsIzuyZ0
mod_perlもmod_phpのように手軽に使えるようにならん?
そうすれば普及するだろうに。

284 :nobodyさん:03/10/30 15:53 ID:???
互換性がちょっとな・・・

285 :nobodyさん:03/10/31 22:38 ID:???
>>284
CGIプログラムとの互換性のこと?
そんなに変わってくるものなの?

286 :nobodyさん:03/11/04 18:16 ID:???
>>285
・exit();関数は利用できない。代わりに、Apache::exit();を使うそうな。
・パッケージ名を明記すると500 Internal(以下略)。(例: $main::setup)
・SuExecが有効にならない
・もし何かあったら、Apache自体を再起動しなければならない
・mod_perl用に書いたPerlScriptをCGIとして動作させたら、多分動かない。

 知っている限りで。(注:正確な情報ではありません)

287 :nobodyさん:03/11/04 19:42 ID:???
>>286
互換性の問題は速度の代償として多少は仕方ないか。

>・もし何かあったら、Apache自体を再起動しなければならない

ここら辺はmod_phpでも同じなのでは?

288 : :03/11/04 20:55 ID:1kmjwkim
大規模なeコマースサイトを Apache と mod_perl で構築する
http://bulknews.net/lib/doc-ja/etoys.ja.html

289 :nobodyさん:03/11/04 22:08 ID:???
>>286
・Apache::Registry 使用時なら exit は Apache::exit でオーバーライド
 されていたような。
・main パッケージを明示するようなコーディングスタイル自体が問題。
・CGI プログラムとして組まれているスクリプトは Apache::PerlRun で
 動かす。mod_perl 前提のスクリプトを CGI プログラムとして使うのは
 おかしい。

SuEXEC が効かないのと、httpd の肥え方が激しいのがネックだと思う。
まぁ後者はサーバ分ければいいんだけど。

あと mod_perl 入れたからといって CGI プログラムが使えなくなる
わけじゃないので、Apache::PerlRun でも動かんような糞スクリプトは
割り切って CGI プログラムとして使うのも手。

290 :nobodyさん:03/11/05 00:00 ID:???
mod_perler なら、Apache::Registry使わなきゃ
Apache::PerlRunで満足すんなYO!



ところでさア、お金貸して?

291 :nobodyさん:03/11/16 07:02 ID:???
Action text/html /path/to/cgi
みたいな感じで、テキストを置換するシステム作ってたんだが
XeonMP 2.8G でさえ、30req/sがやっとこさだったのだが、
PerlRun にしたら、100req/s 程度まで向上した。

男はApache::Registryだろうということで、試してみたんだが、
案の定あちこち手を入れないとウゴカナカタよ。

それでも、バックエンドDBアクセスナシで700req/s
DB接続ありで200req/s行ける感触をつかんだので
かなり満足。

行き着く先はCでApacheモジュール化なのだが、そうすると
DBIのような統一インタフェイスが使えずDB依存になってしまうのが辛い。


上のカキコで PATH_INFO 云々の話が出てたが、ウチで試したときは
アクションハンドラとして呼ばれないときも
PATH_INFO=/
PATH_TRANSLATED=/path/to/www/ <- これファイルじゃネーし
とか出てきて少々面食らった。これはバグ? 実装上の都合?

292 :nobodyさん:03/12/28 05:05 ID:???
しかし流行りませんなぁ。

293 :nobodyさん:04/02/03 03:55 ID:6SsHdaLm
喚起あげ

294 :nobodyさん:04/02/10 21:22 ID:YkFrJUBA
素朴な疑問なのですが、
mod_perl使ってる時にも通常のCGIとしてperlプログラム走るんですか?

295 :nobodyさん:04/02/10 22:35 ID:???
ドテッ! ネタ?

296 :nobodyさん:04/02/11 14:36 ID:???
Apache::PerlRunとApache::Registryどちらでも良いんだけど
HTML::Template使えますか。


297 :nobodyさん:04/02/11 17:34 ID:8Wm4X/2a
mod_perl始めますた、ちょいと質問です。
皆さんは、

PerlSendHeader On

にしてますか?
mod_perlを使うなら Off だろ、とか、
漢なら Off にしとけ、とか、
なんかポリシーみたいなものってありますか?

298 :nobodyさん:04/02/11 19:17 ID:???
   / ̄ ̄ ̄ ̄ ̄ ミ
  /   ,――――-ミ
 /  /  /   \ |
 |  /   ,(・) (・) |
  (6       つ  |
  |      ___  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |      /__/ /  <  mod_perlを使うなら Off だろ!
/|         /\   \__________


299 :nobodyさん:04/02/13 21:16 ID:???
>>296
使える

300 :nobodyさん:04/02/14 12:13 ID:???
C:\Program Files\Apache Group\Apache2\bin>apache -t
Syntax error on line 159 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf:
Cannot load C:/Program Files/Apache Group/Apache2/modules/mod_perl.so into server: 指定さ
れたモジュールが見つかりません。

_| ̄|○ファイルあるのに…

301 :nobodyさん:04/02/14 12:46 ID:???
mod_perlが流行らないのは、
やっぱ、スクリプトの制限がキツくなるからってことでおk?

302 :nobodyさん:04/02/14 13:15 ID:???
Apache::PerlRun だとたいした制限は無いんだが

ISP屋の立場から言うと、suExecできないのが一番痛い

303 :nobodyさん:04/02/14 17:02 ID:???
WinのApache2にmod_perl!?よくもまあ・・・

304 :nobodyさん:04/02/14 21:38 ID:???
>>303
何が悪いのか教えれくらはい。


305 :nobodyさん:04/02/14 21:57 ID:???
頭とセンスg(ry

306 :nobodyさん:04/02/16 00:45 ID:???
>299
ってことはやり方が悪いという事かな……orz

>303
設計とかテストとかやるときはローカルのWin鯖でやってますが
UNIX版と違い出るんですか。


307 :nobodyさん:04/02/16 10:29 ID:???
>>306 そもそもOSレベルで違うじゃん…
Windowsネイティブapache2のモジュールって拡張子.soだっけか?

308 :nobodyさん:04/02/16 12:42 ID:???
スクリプトの書き方一緒じゃないの?

309 :nobodyさん:04/02/16 15:49 ID:???
>>307
一応、soだよ

まあ、動くかどうかのテストはWinでもいいんじゃないかな
ベンチマークや負荷のテストは意味ないけど

310 :nobodyさん:04/02/16 16:28 ID:???
apache と mod_perl って両方とも Winネイティブなんかな?
apache はwinネイティブで mod_perl が cygnus だったら 動かないとか。
もう少し詳しく書かないとなんとも言えないんじゃないかなぁ

311 :nobodyさん:04/02/16 16:37 ID:???
「指定されたモジュールが見つかりません」の場合
ファイルは見つかっても何らかの原因でメモリへのロードに失敗している
というケースが実際にはほとんど

原因はバージョン不整合とかいろいろ考えられるが
まあ地道に切り分けるしかないな

312 :nobodyさん:04/02/16 16:53 ID:1pUxS5fU
色々な所を参考にして mod_perl を組み込んで見ました。
そして以下のテストスクリプトを二種類の方法でちゃんと動作しているのですが、
CGIとして呼び出されてるのか、mod_perl として呼び出されているのかサッパリでして、、
確認する方法ってのはありますか?

## /home/user/perl/test
#!/usr/bin/perl -w
use strict;
print 'content-type: text/plain; charset=EUC-JP' . "\n";
print "\n";
print join("\n", map "$_ = $ENV{$_}", sort keys %ENV);

## httpd.conf
Alias /perl/ /home/user/perl/
Alias /cgi-bin/ /home/user/perl/
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
PerlSendHeader On
</Location>

<Location /cgi-bin>
SetHandler cgi-script
Options ExecCGI
</Location>

http://hoge.com/perl/test -> OK.
http://hoge.com/cgi-bin/test -> OK.

313 :nobodyさん:04/02/16 17:44 ID:???
思いつきだが、↓みたいなのでどうだ?

#!/usr/bin/perl -w
use strict;
print 'content-type: text/plain; charset=EUC-JP' . "\n";
print "\n";
print `ps aux | grep perl`;

314 :nobodyさん:04/02/16 17:55 ID:???
>mod_perlで実行されている場合には、環境変数の $ENV{GATEWAY_INTERFACE} に
>'CGI-Perl/1.1' が設定されます。(通常CGIは 'CGI/1.1')
>また、'MOD_PERL' 環境変数が設定されます。(mod_perlのバージョンが設定される)


315 :312:04/02/17 12:47 ID:???
>>313-314
返事ありがとう。
早速試してみようと思ったんですが、
なんか電源が入らない、、orz、、bios すら起動しねーーーー

出直してきます。。(つд`;)

316 :312:04/02/18 19:28 ID:???
>>313-314
試して見ました。

## /perl/test
GATEWAY_INTERFACE = CGI-Perl/1.1
MOD_PERL = mod_perl/1.29

## /cgi-bin/test
GATEWAY_INTERFACE = CGI/1.1

問題なく動作しているようです、有難うございました。

ところで別の疑問なのですが、
CGI経由で動作している時には suEXEC で動作して欲しいと思って
suEXEC 有効にしてみました。

/perl/test -> nobody権限
/cgi-bin/test -> user権限

今の所正常に動作していると思うのですが、これって問題ない、、ですか?
どこのサイト見ても suEXEC は無効にしとけー、
てな事しか書いてなかったので少し不安なのです。

317 :nobodyさん:04/02/18 20:04 ID:???
mod_perl で Apache::Registry、Apache:PerlRun で CGIスクリプトを実行すると、
mod_perlが組み込まれている httpd のプロセスの中で動いてしまうのでsuexecは効かない

CGI経由で別プロセスで動かすからこそsuexecが有効

318 :nobodyさん:04/02/29 04:50 ID:yMfKis4M
http://dream.lib.net/room/cgi/download.html#link で公開されている Ranking link
というCGIを自サーバーで動作させたのですが、試してみると結構な確率で真っ白な画面が
ブラウザに表示されます。
このCGIは実績があるのでこのCGIのせいではなくて、mod_perlのせいなのだと思うのですが、
解決策が全くわかりません。 助けてください・・・。
環境は、
OS: Redhat 9.0
WebServer: Apache1.3.29
mod_perl version 1.29
perl 8.5.1
です。
OS以外は全てソースからコンパイルしてインストールしました。



319 :nobodyさん:04/02/29 05:49 ID:???
mod_perlが使える鯖ってありますか?

320 :nobodyさん:04/02/29 07:26 ID:???
ありません

321 :nobodyさん:04/02/29 11:32 ID:???
>>318
助けてやりたいのはやまやまだが
318 に書かれた情報だけでは何とも手の差し伸べようがない

error_log に何が吐かれてるか確認する前に 318 を書いたのだとしたら
君の罪は麻原並に重い

322 :nobodyさん:04/02/29 11:34 ID:???
>>318
こんなコーディングじゃ mod_perl は誤動作するのが当たり前田

323 :nobodyさん:04/02/29 11:41 ID:???
>319
XREA

324 :nobodyさん:04/02/29 12:07 ID:???
>318
眺めたところそのスクリプトのせいのような気が……。


325 :318:04/02/29 15:21 ID:yMfKis4M
>322
>324

どの辺りか教えて頂ければ幸いです・・。 お願い致します。

>321
エラーは一切吐かれていませんし、ブラウザで500番エラーが
表示されることもありません。






326 :nobodyさん:04/02/29 18:41 ID:???
実績のあるプログラムだからといって、
mod_perl で動くかというとそうとは限らない。

327 :nobodyさん:04/02/29 21:39 ID:???
KやRのはmod_perlではまともに動かんぞ。

328 :nobodyさん:04/03/01 06:28 ID:???
正しくは、全Perlコードをパッケージで管理しなければ、
mod_perlでは、正しく動きません。または、高速動作できません。


329 :nobodyさん:04/03/01 10:01 ID:???
Apache::PerlRun でもそうなの? > 要パッケージ管理

330 :nobodyさん:04/03/01 22:21 ID:???
だからmod_perlは流行らない〜♪

331 :nobodyさん:04/03/02 21:16 ID:O+pQat/o
ふぅ、やっとApache::ASPが動いたよ。
これってmod_perlだけじゃなく、
全てのモジュールをstaticで構成しないと駄目だったのね。

mod_perlだけだと思って何度も何度もやり直してしまいました。。

332 :nobodyさん:04/03/03 00:58 ID:???
そういや何年か前、DSO のまま perl_ssi を作ろうとしてハマったことがあった

333 :nobodyさん:04/03/04 11:23 ID:???
WinXP+Apache1.3.29にインストールしようと
ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd
としたんですが
Error: no suitable installation target found for package mod_perl
とエラーが出ます。どうしたものでしょう

334 :nobodyさん:04/03/05 19:12 ID:GwB2WnjS
困りました。Apache-1.3.29 + mod_perl-1.29 + perl-5.6.1 の環境だったのを
perl-5.8.3 に変えて見ました。

mod_perlでスクリプトを出力すると
charset が間違っていないにも関わらず文字化けします。
どうやらutf-8で出力されているようなのですが、、

charset を utf-8 にすれば文字化けはしないのですが、
今度は CGI で実行した時に当然ですが文字化けします。

これは、、どうやって回避すればよいのでしょう。

## httpd.conf
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
PerlSendHeader On
</Location>
<Location /cgi-bin>
SetHandler cgi-script
Options ExecCGI
</Location>

## script
my $euc = 'あいうえお';
print "content-type: text/plain; charset=EUC-JP\n\n";
print "$euc\n";


335 :334:04/03/05 21:46 ID:???
申し訳ありません。大ボケ噛ましておりました。
スクリプトが utf-8 でした。。。申し訳ありません。。
以下簡単にまとめました。

## script euc-jp
my $euc = 'あいうえお';
print "content-type: text/plain; charset=EUC-JP\n\n";
print "$euc\n";

/perl(mod_perl) も /cgi-bin(CGI) も問題無し。

## script utf-8
use utf8;
binmode(STDOUT, ':encoding(euc-jp)');
my $utf8 = 'あいうえお';
print "content-type: text/plain; charset=EUC-JP\n\n";
print "$utf8\n";

/perl(mod_perl)だと文字化け、charsetを utf-8 に変更すると問題なし
/cgi-bin(CGI) だと問題無し、charsetを utf-8 に変更すると文字化け

mod_perlの標準出力(STDOUT)は binmode では設定出来ない、のかな?
だとすると mod_perl の標準出力の文字コードを設定するにはどうすればよいのでしょう。

とりあえず euc-jp でスクリプトを書けば問題ない話なんですがちょっと↑が気になりました。


336 :nobodyさん:04/03/06 10:11 ID:4ILBaJdh
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, XXX@XXX.XXX .....
という文章がcgiを通して表示される最後に挿入されます・・・。
この文章を表示しないように設定したいのですが、httpd.confで
いじる場所もなさそうですし、どこを設定すればよいのでしょうか?
ご教授お願い致します。



337 :nobodyさん:04/03/06 10:22 ID:???
スクリプト

338 :nobodyさん:04/03/07 01:19 ID:???
>336
printした後の処理で実行時エラーが出てるとかのような。


339 :nobodyさん:04/03/07 18:30 ID:???
まあまず error_log をチェックするのが正しい姿勢だろうな

340 :nobodyさん:04/03/09 05:55 ID:???
Apache::Registry で qq で囲んだ文字に
エスケープ無しで " が入ってると実行時エラーが出た。
注意って事で。


341 :nobodyさん:04/03/09 22:03 ID:???
qq"aaaaaaa"bbbbbbbb"cccccccc"

そりゃエラーになるよ

342 :nobodyさん:04/03/09 23:14 ID:???
いや print qq(nantoka"kantoka"hontoka); でエラった。


343 :nobodyさん:04/03/14 20:00 ID:???
ちょっと何が原因なのかわからなかくなったので、皆さんのお知恵を拝借したいです。

環境
Apache/2.0.40 (Red Hat Linux)
mod_perl/1.99_07-dev
perl, v5.8.0 built for i386-linux-thread-multi

A.pm------------
package A;
sub method1 {# hoge}
sub method2 {# hoge}
----------------
B.pm------------
package B;
use base qw ( A );
----------------
test.cgi----------
use B;
$o = B->new;
$o->method1;
$o->method2;
----------------
だいたいこんな感じ。

症状:
test.cgiの実行でこける。
エラーログを調べると、ModPerl::Registryさんが実行する度に「Bクラスにはmethod(1 or 2)はない」と違うことを言っている。
実際、ブラウザに状況を出力しながら動作確認をすると、確かにメソッド呼び出しのところでこけている。文法エラーでないことは途中までとは言えHTMLを吐き出していることからわかる。
なので、mod_perlさんのどこかに不具合があるのではないかと考えたのですが、そこまででした。
どんな原因が考えられますでしょうか。


344 :343:04/03/14 20:48 ID:???
間接的な原因が判明しました。
Apacheが古いバージョンのスクリプトでコンパイルした実行ファイルを、しっかり握って離していないだけでした。_| ̄|○
元ファイルを全部消しても、ブラウザでアクセスするとまだ結果が出るのです。
握りこんだ実行ファイルを手動で消す方法はないでしょうか。


345 :nobodyさん:04/03/14 21:14 ID:???
Apache::Reload を使えばできるんじゃないかと思うが
自分でやってみたことはないので割と無責任

346 :343:04/03/15 00:47 ID:???
>>345
現在は、動作がおかしくなったらApacheのrestartと言うあまりクールでない手でやってます。

ありがとうございます。Apach::Reloadのmanを見てみます。

347 :336:04/03/15 10:40 ID:heuYMXtN
エラーログには [error] Undefined subroutine ?::handler called.
と出力されています。
なんじゃこのhandlerは??? 名前が無いです・・・。

ご教授お願い致します。


348 :nobodyさん:04/03/15 14:56 ID:???
>>347
cgiがおかしいかmod_perlに対応してないものを使ってるんだろ。
作者に問い合わせるんだな。

349 :nobodyさん:04/03/15 22:07 ID:???
>>347
珍しいエラーだなあ。

ちなみに何をやろうとしてそういう状態になったんだ?
Apache::Registry? Apache::PerlRun?
それとも Movable Type だか AxKit だかを PerlHandler で組み込んだ?

350 :mod_perlはじめて君:04/03/23 13:29 ID:3jX1Q8fV
mod_perlってブラウザから起動するcgiファイルにはpackage名つけちゃまずいのでしょうか?
packageつけるとSubroutine check redefinedとゆうwarningsが沢山出ちゃうんです。
でもpackage消しても
Prototype mismatch: sub Apache::ROOT::sakura::cgi_2dbin::test::test_2ecgi::check vs ()
というwarningsが出てしまうんですが、これってmod_perlの仕様なんでしょうか?
warningsが出るのが気になるタイプの人なんです僕o(_ _)o

351 :ログ補完:04/03/29 13:16 ID:???
351 名前: nobodyさん :sage 投稿日: 04/03/25 (木) 17:44 ID:???
もしかしてApache::Registryだとopen FH, >hoge.dat でファイルを作ってくれなくなった?

352 :nobodyさん:04/03/30 14:23 ID:???
my変数はブロック抜けたらちゃんと開放されるそうですが、
my $foo = { hoge => 'hoge' };
だと$fooの値は消えても無名ハッシュ内の値は消えないとか
そう言う事は無いですか。


353 :nobodyさん:04/03/30 14:39 ID:???
>>352
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
http://pc5.2ch.net/test/read.cgi/php/1078076768/

354 :nobodyさん:04/03/30 14:59 ID:???
>353
CGI等で使うと終了時に全クリアされるようですが
mod_perl(Regstry)では値がキャッシュされると聞いたのでこちらで聞きました。

要は、リファレンスが変数に格納されていると、
変数が消えた瞬間に値の内容もきちんと消されると言う事ですね。


355 :nobodyさん:04/03/30 15:00 ID:???
>354
×値
○参照されている値
#少し語弊があるので修正


356 :nobodyさん:04/04/02 13:16 ID:???
mod_perlのmodってモッドって読めば良いのですか。


357 :nobodyさん:04/04/08 09:32 ID:???
モード・パールでは

358 :Perlさん:04/04/08 13:57 ID:???
module_perl

359 :nobodyさん:04/04/10 01:10 ID:???
おれは勝手にモドパールと呼んでる。

世間的にどうなのかは知らない。

360 :nobodyさん:04/04/10 12:24 ID:???
モゥデュパァァァッル

361 :nobodyさん:04/04/30 13:24 ID:???
$self のような mod_perl 自身のグローバル変数に値を追加するのは止めておいた方が良いですか?
一応、local $self->{'HOGE'} = 'hoge'; とかやっているのですが。


362 :nobodyさん:04/05/01 09:28 ID:???
>>361
その書き方だと $self はリファレンスだから、local する意味はない。

ってか、$self の位置づけがいまいちわからん。
mod_perl で呼び出すスクリプトで使ってるオブジェクトのリファレンス?

363 :nobodyさん:04/05/01 13:35 ID:???
すみません、そういわれて調べたところ
起動時に PerlRequire で読み込んでいる Apache2 モジュールの機能でした。
てっきり mod_perl を使うと %$self が勝手に用意されるのかと。

local は意味が無かったのですね……。


364 :362:04/05/01 20:23 ID:???
>>363
具体的にどんなことをしたいんだ?

365 :nobodyさん:04/05/02 00:24 ID:???
いえ、元々は単にファイルを置いてあるディレクトリを
$self->{'FILEDIR'} (このキーは初めは用意されていない)に入れたいと思っただけなのですが、
そこで mod_perl でこういう予め決まったキーや値が入っている変数に勝手に追加して良いのかどうか、
不安だったのです。
どこかに何か影響が出たりするのだろうかと。


366 :362:04/05/02 03:46 ID:???
>>365
現段階でそのキーが使われていなければ使える。
が、将来的にもそのキーが使われない保証はない。

スクリプトをオブジェクト指向で書いているなら、そのオブジェクトに入れるべき。
書いていなければそう書き直しましょう。

367 :nobodyさん:04/06/14 00:54 ID:UCF4wTWN
Aapche2.0.49 mod_perl_1.99_13 + perl5.8.3 + Apache::DBI + MySQL
の構成で、lock tableした後に
どこかのSQL実行に失敗してerrstrで処理するとunlockできないのだが、
何とかならないのだろうか。

識者の見解キボン。

失敗しなきゃ良いというのは無しでお願い。

368 :nobodyさん:04/06/23 16:45 ID:???
perlccでバイナイリコードにしたスクリプトをmod_perlにて実行することは出来ないでしょうか?
# perlcc -B test2.cgi.org -o test2.cgi
*インタプリタは内蔵せずスクリプトをバイトコードに変換するだけ(たぶん)

test2.cgi.orgの内容
#!/usr/bin/perl
print "Content-type:text/plain\n\n";
print "Hello world!!\n";

@ # ./test2.cgi の結果
Hello world!!

@ mod_perlを無効にしWEBからアクセスした結果
Hello world!!

@ mod_perlを有効にしWEBからアクセスした結果
Missing right curly or square bracket at /home/hoge/public_html/mod_perl/test2.cgi line 3, at end of line
syntax error at /home/hoge/public_html/mod_perl/test2.cgi line 3, at EOF

その時のerror_log

[Wed Jun 23 16:27:32 2004] [error] 6945: ModPerl::Registry:
Missing right curly or square bracket at /home/hoge/public_html/mod_perl/test2.cgi line 3, at end of line
syntax error at /home/hoge/public_html/mod_perl/test2.cgi line 3, at EOF

環境:Fedora core1、apache 2.0.48-1.2、perl 5.8.3、mod_perl 1.99_12-2
RH7.3、apache 1.3.27-4、perl 5.6.1、mod_perl 1.26-5 でも似たような結果でした

やりたいことはPerlで高速な動作をしつつ、ある程度のソースの隠蔽をしたいのですが
perlcc+mod_perlで動かす方法、もしくはそれに変わる代替手段がございましたら
ご教授くださいませオマイら。


369 :nobodyさん:04/06/23 19:49 ID:???
よ〜くかんがえよぉ〜

370 :nobodyさん:04/06/23 20:32 ID:???
世の中的には mod_perl って
「原理はわかんないがとにかく CGI が高速になる魔法の箱」
と思われているのものなのだな

371 :nobodyさん:04/06/23 20:39 ID:???
だってだってだって だって厨なんだもん

372 :nobodyさん:04/06/23 20:39 ID:???
お願いお願い 笑わせないで

373 :nobodyさん:04/06/23 22:44 ID:GOWHNOao
>>371-372
オサーンハッケソ!

374 :368:04/06/24 14:47 ID:???
Apache::Registryは高次元でPerlのエミュレートをしており、通常のCGI/Perlと同様に
mod_perlもバイトコードへの変換プロセスを踏むと私は何の根拠もなく推測しており
mod_perl側で通常のソースとバイトコードを判別し適切なステップを踏むように作られていれば
perlccでコンパイルしたスクリプトが動作しても理論上不思議ではないと
思うのですがどうでしょうか。

この場合、ごく単純なスクリプトでも動作しないので
mod_perl側でperlccを考慮した機構がないんだとは思いますが。

375 :nobodyさん:04/06/24 19:55 ID:???
mod_perl は、多くの人が勝手に想像しているイメージとは異なり、
「CGIを高速に実行する環境」ではありません。
「apache モジュールの一つで、perl インタプリタを内蔵しており、
 apache API の操作手順を perl スクリプトとして外部に切り出すことのできるもの」
などとするべきでしょう。

この違いはたいへん重要です。なぜなら mod_perl それ自体には
「CGIのプログラムファイルをロードする機構は含まれていない」からです。
mod_perl に用意されたロード機能は、apache 起動時に、
httpd.conf で指定された perl スクリプト(クラスモジュール)を読み込むこと、
だけです。CGI プログラムファイルを直接読み込むことはできません。

CGIを実行するためには当然プログラムファイルをロードしなければならず、
そのためにはローダとなる機構が別途必要です。
このために Apache::Registry という perl クラスモジュールが
mod_perl と同梱して配布されています。
httpd で Apache::Registry を指定しておくと、apache 起動時にこれが読み込まれ、
以後 CGI のローダとして動きます。

この Apache::Registry の機能は、スクリプトファイルを読み込み、
これを CGI をエミュレートした環境下で eval することです。
ところが、perlcc でコンパイルされたバイトコードは use ByteLoader されています。
この ByteLoader のようなソースフィルタが、eval と相性最悪なのです。
そのため、Apache::Registry の方法では、バイトコードを実行できません。

Apache::Registry とは異なる原理に基づくローダを自作すれば、
理論的には不可能な話でも無いと考えられます。

376 :368:04/06/26 05:51 ID:???
>>375
大変勉強になりました。
何か別の方法を模索してみようと思います。ありがとうございました。

377 :nobodyさん:04/08/02 18:48 ID:???
mod_perl って、Cで書いたCGIより速いんだね。

まぁ、メモリ上にキャッシュするから当然っちゃー当然だがね。

378 :nobodyさん:04/08/02 22:15 ID:???
いやケースバイケースで、CのCGIの方が速いケースもあるけど

しかしまあこの板の住人が使うケースの99%は mod_perl の方が速いだろうな

ちなみに、apache の module を C で書いて組み込んでしまえば
mod_perl よりさらに速い

379 :nobodyさん:04/08/17 15:02 ID:fsY5EgQV
mod_perlを初めて使います。
DBアクセスで、cgiだと動作するのですが、mod_perlだと動作しません。
ソースは以下です。いろいろなサンプルでは、cgiの場合と、mod_perlの
場合に違いが感じられないので、設定、もしくはユーザー権限のようなもの
かなと想像しているのですが。
ご教授頂けませんでしょうか。

#!/usr/local/bin/perl -w
use strict;

print("Content-Type: text/plain\r\n\r\n");

my($dbh,$sql,$sth,$res);
use DBI;
my $key = '1234';
#############
my $dbh = DBI->connect("DBI:mysql:test","test","pas");
$sql = "SELECT * from TBL where key =".$dbh->quote($key);
$sth = $dbh->prepare($sql);
$res = $sth->execute;
$sth->finish;
$dbh->disconnect;
#############
print "res=";
print $res;



380 :nobodyさん:04/08/17 15:07 ID:???
CGIだと動作するの? ふんとに?

381 :nobodyさん:04/08/17 15:17 ID:???
画像の合成とかはCの方が速いね。

382 :nobodyさん:04/08/17 15:18 ID:???
「動作しません」じゃなくて、
どういう風に動作しないのか、
エラーを吐くのか、それとも期待と違う動作なのか、
とかその辺を報告しろと

383 :DB:04/08/17 15:28 ID:fsY5EgQV
ブラウザ上では、「サーバーが見つかりません」となります。
cgi(普通のPerl)では動作します。

384 :nobodyさん:04/08/17 15:29 ID:???
( ゚д゚)ハァ?

385 :DB:04/08/17 15:50 ID:fsY5EgQV
ちなみに、 ############# から ############# をコメントアウトすると
動作します。
cgi として動作させれば、$res の値も正常に表示されます。

386 :nobodyさん:04/08/17 16:25 ID:???
DBの設定が悪い。perlをsshでログインしてサーバ上で動かしてるなら
多分あんたの環境じゃsu_execじゃないと動かない。
以上。

387 :DB:04/08/17 16:51 ID:fsY5EgQV
DBですね。何を調べてよいのか分からなかったので、助かります。
有難う御座いました。


388 :nobodyさん:04/08/17 16:54 ID:???
コメントアウトしたら、本当に動くのか?
print("Content-Type: text/plain\r\n\r\n");
のヘッダーでmod_perlって動いたっけ?
事前に200OKを吐く必要があったと記憶しているが・・・・

誰も指摘しないのはなぜだろうか・・・

389 :nobodyさん:04/08/17 16:57 ID:???
>>383
お前は誰よ?

390 :nobodyさん:04/08/17 17:57 ID:???
>>388
PerlSendHeader


391 :DB:04/08/18 19:13 ID:+YCQrBn3
>>389
379を書いた者です。
>>388
httpd.conf の中で
PerlSendHeader On
とすれば良いらしいのですか、Apache に詳しくないので・・・。

httpd.conf の中で、それらしい設定は
AddModule mod_perl.c

<IfModule mod_perl.c>
<Files *.xpl>
SetHandler perl-script
PerlHandler Apache::Registry
PerlSendHeader On
Options ExecCGI
</Files>
</IfModule>

としています。
拡張子 .cgi が通常のcgi
拡張子 .xpl がmod_perl で動く設定です。

392 :nobodyさん:04/09/30 21:13:33 ID:???
初心者的質問で悪いですが、解説サイトみても分からなかったので・・・。
Apache2でDSOとしてmod_perlを読み込む場合のhttpd.confの記述はどのように
すればよろしいでしょうか?


393 :nobodyさん:04/09/30 22:43:45 ID:???
>>392
http://perl.apache.org/docs/2.0/user/config/config.html#Enabling_mod_perl

394 :nobodyさん:04/10/01 00:12:20 ID:???
fastCGIのスレどこよ?

395 :nobodyさん:04/11/21 21:23:12 ID:???
FastCGI、SpeedyCGIどちらも専用スレ無いみたい。

396 :nobodyさん:04/11/21 21:59:13 ID:???
まあどっちも専用スレ立てたとしても伸びる気がしないよな

397 :nobodyさん:04/11/22 04:12:53 ID:???
助っ人募集中
http://qb5.2ch.net/test/read.cgi/operate/1093068260/543-

398 :nobodyさん:04/11/30 19:09:15 ID:???
保守

399 :nobodyさん:04/12/12 22:59:26 ID:???
ホッシュ

400 :nobodyさん:04/12/13 17:32:56 ID:???
mod_perl2ってどうよ?

401 :nobodyさん:05/01/14 14:57:29 ID:BN1J93Zh
mod_perl(Apache::Registry)とPostgreSQLを使ってプログラム組む事になりました。
Apache::DBIをつかってコネクションをkeepしたままにしておくと、
httpdに比べてpostmastarのプロセスがやたら増えてしまい、最終的には
コネクションエラーになっていまいます。
現在httpd.confのMaxSpareServersを32、postgresql.confのmax_connectionsを256
にして急場を凌いでいます。
解決策をご存知の方、お助け下さい。

402 :nobodyさん:05/01/17 05:35:14 ID:???
Apache::DBIが有効になっておらず毎回新しいコネクション張りなおしてるんじゃないの?
正常ならpostmasterのプロセスは32より増えないはず。postmasterとhttpdのプロセスを監視してみれ。

403 :401:05/01/19 10:18:58 ID:???
>>402
解決しました。というか原因はWebアプリではありませんでした。
裏で動かしていたデーモン(同一DBにアクセス)がバグっていました。

404 :nobodyさん:05/02/11 11:12:30 ID:???
another htmllintをmod_perlで動かした椰子いる?

405 :nobodyさん:05/02/14 10:47:25 ID:???
>>404
Apache::RegistryでもPerlRunでも
無限ループっぽくなった

406 :nobodyさん:05/02/16 01:08:49 ID:???
Apche2とmod_perl-1.99で、XML::GDOME::XSLTを動かした人いますか?
Apache1.3とmod_perl-1.29で動いていたスクリプトが、Segfaultしまくります。
XML::GDOME::XSLTは全然バージョンアップされていないようだし。
他のXSLTモジュールを使うしかないか・・・

407 :nobodyさん:05/02/16 02:44:32 ID:???
>>406
http://www.google.co.jp/search?q=expat+mod%5Fperl
これかな?

408 :406:05/02/16 10:11:27 ID:???
>>407
残念ながら違うようです。
というか、それを避けるためにXML::GDOME系を使っています。
XML::GDOME系はlibxml2とgdome2を使っており、expatは使っていません。
createDocFromStringはOKでcreateDocFromURIはダメみたいです。

409 :nobodyさん:05/02/16 10:30:18 ID:???
>>406
mpm_preforkで試してる?
http://httpd.apache.org/docs-2.0/mpm.html

410 :406:05/02/17 13:18:09 ID:???
>>409
意識はしていませんでしたが、preforkになっていました。

411 :nobodyさん:05/03/07 17:35:36 ID:???
rootにsetuidしてスクリプトの中で各ユーザーにsetuidするというプログラムを動かしたいのですが
mod_perlで動かすとsetuidされているファイルでも動作権限が
apacheの権限になってしまいますがこれは仕組み上、しょうがないでしょうか?
rootにsetuidするためにはapacheをroot権限で動かさないとやっぱ駄目なのかな

412 :nobodyさん:05/03/07 18:29:35 ID:???
BIG_SECURITYHOLE

413 :nobodyさん:05/03/07 22:28:12 ID:???
>>411
それができたらすげーいいよなとは俺も思うのだが
UNIXのプロセスと権限管理の仕組として無理
apache を root で動かすという極めて危ない橋を渡らざるを得ない

もちろん、mod_perl から別プロセスを立ち上げれば、そいつを setuid することはできる
けど、別プロセスを作りたくないからわざわざ mod_perl を使うんだよな

414 :nobodyさん:05/03/08 00:24:47 ID:???
やっぱそうですよね orz

103 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)