【激速】mod_perl Spe ..
549:400
06/08/20 16:50:49
データを整理してグラフにしました。
(一部データ追加)
興味があればのぞいてください。
URLリンク(rintaro.dip.jp)
550:nobodyさん
06/08/20 17:59:01
>>548
・CGI起動だと正常に動作するのか。
・use strictしているか。
・フロントでpackage ???;と指定していないか。
・他にHTTP::***系のモジュールを読み込んでいないか。
551:gan
06/08/21 01:42:09 ZgHdKmUM
>>550
ご回答ありがとうございます。
>・CGI起動だと正常に動作するのか。
動作します。
>・use strictしているか。
しています。・・厳密に他の外部読み込みのライブラリ
(escape.plみたいなやつ)はやっていないものもあるかも。
これ全部やるべき?
>・フロントでpackage ???;と指定していないか。
・・これどういう意味でしょうか。。よろしければ詳しくお願いします。
>・他にHTTP::***系のモジュールを読み込んでいないか。
読み込んでいないと思いますが、、現在使用しているモジュールが
依存関係にあるモジュールを勝手に読み込んでいる可能性は否定
できません。チェック方法をご存知でしたら教えてくださいませ。
552:245
06/08/21 06:54:11
>>549
乙です。グラフにすると分かりやすいですね。FastCGIの優秀さに
改めて驚きました。
553:nobodyさん
06/08/22 18:30:01
>>551
おつです。
もっぱらmod_perl使ってたけど考え直してみようかな。
554:nobodyさん
06/08/22 23:01:06
初心者がベンチして、初心者に移行を促すスレはここですか?
555:nobodyさん
06/08/22 23:07:44
誤解を招きやすい数値を元に決定を行い、誤った方向にすすんでしまう良い見本でしょう。
2ch だし。
556:nobodyさん
06/08/22 23:58:25
> 2ch だし。
2ch だと何かまずいのかな?
557:nobodyさん
06/08/23 00:01:58
2ch は玉石混淆であることを言いたかっただけです。
558:nobodyさん
06/08/23 01:13:42
ならそう言えばいいのに。
誤解を招きやすい表現を使い、謝った方向にすすんでしまう良い見本ですね。
559:nobodyさん
06/08/23 01:25:57
誤った方向にすすんでしまうのは玉石混交でいうところの"石"なわけだが
(そうじゃないと意味が通じない)、それを分かった上でかきこんでいるのかなぁ。
A. 分かった上で書き込んでいる → 自ら石であることを認めている
B. 気づかずに書き込んでいる → やっぱり石
いえ、玉石混淆なのは分かってますからあえてこれ以上追求しませんが。
560:gan
06/08/23 07:26:53 1++KeXhR
551からその後です。
某サイトで、グローバル変数をすべてあぶりだす
方法を発見(%:: というハッシュに変数名が格納されている)
そこでspeedyCGIの下記のように
use CGI::SpeedyCGI;
my $sp = CGI::SpeedyCGI->new;
$sp->register_cleanup(\&clean_up);
---------
sub clean_up{
map { $$_=undef; } keys %::;}
とすると、2度目のアクセスもエラーが出なくなりました!!
・・が、書き出されるはずのHTMLが途中で終わってしまうという
現象が発生・・無差別にグローバル変数(300項目くらいでる)を
削除するとやはりまずいのか、、しかし影響のあるものがどれか
現在特定できず、、。どなたかアドバイスいただけたら。。
561:nobodyさん
06/08/23 23:56:02
> 現象が発生・・無差別にグローバル変数(300項目くらいでる)を
> 削除するとやはりまずいのか、、しかし影響のあるものがどれか
> 現在特定できず、、。どなたかアドバイスいただけたら。。
Perl 3 時代の糞スクリプトなら、ISP からもらえるチルダつきの
環境で動かしてりゃいいじゃん。
562:gan
06/08/24 00:04:53 p5O8tkz+
>Perl 3 時代の糞スクリプトなら、ISP からもらえるチルダつきの
>環境で動かしてりゃいいじゃん。
?
563:nobodyさん
06/08/24 03:29:54
ずっとここで乞食してないでまずuse strictしてそれでも駄目だったら質問しろよ。
564:nobodyさん
06/08/24 09:58:19
>>549
> データを整理してグラフにしました。
> (一部データ追加)
> 興味があればのぞいてください。
> URLリンク(rintaro.dip.jp)
なんでworkerよりpreforkの方が速いの?誰か解説キボン
565:245
06/08/24 13:10:59
>>560
グローバル変数を削除する必要はありません。
566:gan
06/08/24 19:16:32 p5O8tkz+
>>565
そ、そうなんですか?
245さんはどうされてますか?
567:nobodyさん
06/08/24 21:21:23
> 245さんはどうされてますか?
腹を切るなり、首にひもをかけるなり、、、
568:gan
06/08/24 21:40:44 p5O8tkz+
>>567
?
569:245
06/08/25 15:29:41
いやまあ、気にせんでくれ。次行こう。
570:nobodyさん
06/09/11 06:35:42
mod_python 最強ということでよろしいか?
571:nobodyさん
06/09/22 16:52:21
つまりHTMLが最強ってことだろ?>>385
572:nobodyさん
06/10/05 22:11:58
>>497
ワロスw
スレリンク(php板)
スピード△
メモリ消費大
ApacheAPIをPerlで使えるのが長所
573:572
06/10/05 22:12:58
激しく誤爆
574:nobodyさん
06/10/06 00:49:48
どのスレと間違えたんだよ
575:nobodyさん
06/10/06 01:19:18
こんな糞スレ参考にすらならないのに。w
576:nobodyさん
06/10/06 01:35:11
検索であっさり見付かったw
スレリンク(hp板:493-番)
こんなところにまで乗り込まなくていいのに・・・
577:nobodyさん
06/10/06 03:14:53
そのスレでも似たような事が書いてあるけどmod_perl使うとメモリ数G載せないと駄目と
違う人から何回か聞いたんだけどどっかでそういうアホな情報載せてるページがあるの?
578:nobodyさん
06/10/06 04:04:05
mod_perlかFastCGIかなんてあんまり有意な差はないよ
それより、プレコンパイルになって起動に時間がかからなくなるってことは
中身の速さ=実際の速さに近くなるってことなんだよ?
つまり、DBで扱うテーブルやインデックスの設計とか効率的なSQL発行してるかとか
DBのネックは殆どディスクIOかメモリ不足だからRAIDにするとかメモリ増やすとか
(mod_perlで食うメモリなんてDBに食わせるメモリに比べたらささやかなんだよねorz)
HTMLのレンダリングとか処理自体が遅いなら
スクリプトのコーディングや使ってるCMS見直したほうが余程結果出せる・・・・
ちなみに576のリンク先のサイトもレスポンスヘッダ見ると
静的コンテンツはApache2、動的コンテンツはApache1.3+mod_perlだね
mod_perlだけで数Gとかリバースプロキシも知らない奴が言ってるとしか思えないっ
579:578
06/10/06 04:14:08
576のURLさかのぼって行ったらサーバーステータス見つけたよ
一日の転送量は6.6Gで平時のロードアベレージは0.5程度、メモリは2Gちょいでした
こういう事例を見れるのはおもしろい、もっとないかな
580:nobodyさん
06/10/06 20:50:14
>>578
> (mod_perlで食うメモリなんてDBに食わせるメモリに比べたらささやかなんだよねorz)
熱く語っているところに悪いが、
workerかそれ以外かでメモリ消費は激しく変わるんだが・・・
DBの種類もテーブルもレコード数もわからないのにメモリ消費はわかるんだな
581:nobodyさん
06/10/06 21:16:14
>>580
>DBの種類もテーブルもレコード数もわからないのにメモリ消費はわかるんだな
今やってる仕事のが300万件2G以上のテーブルあって
全然後のこと考えてない構成なのをまかされてしまって
ちょっと愚痴気味に言ってしまったんだ、すまそ
そこでもmod_perl使ってるんだけどそういうケースだと
DBのチューニングの方が余程メモリに影響するんだよね
ちなみにメイン鯖のメモリは8Gあって殆どDBに割いてるな・・・
582:nobodyさん
06/10/06 22:33:48
サイトの性格、アクセス数も関係するし、サーバ(群)のスペックも関係する。
リソースが貧弱な場合にmod_perlは躊躇するよなあ。
案件ごとにmod_perlだ、fastcgiだと使い分けるのも、今度は人的なリソースが不足しがちになるし。
まあ規模が小さければ、PHPが一番いいのかな。みんなPHPだし。
583:nobodyさん
06/10/07 04:42:23
> まあ規模が小さければ、PHPが一番いいのかな。みんなPHPだし。
みんな Java だし、Java がいいんじゃね?
584:nobodyさん
06/10/08 01:55:11
8Gメモリ積んでる奴にmod_perlのメモリ消費は大したことはないといわれてもちょっと説得力がなぁ
585:nobodyさん
06/10/08 02:32:04
規模が小さければPHPだよ。Javaはコストがかかる。
586:nobodyさん
06/10/08 06:26:02
規模が小さい案件なんかやってるやつはばかです
587:nobodyさん
06/10/08 16:54:31
自分で会社作って、小中規模の仕事をこなすのが一番儲かる。
大きな会社の社員PG、SEじゃたかが知れてる。
588:nobodyさん
06/10/13 05:29:50
勢いを失ったPHPには、もう先がありません。
589:nobodyさん
06/10/13 06:48:53
RORの隆盛はPerlにとっても追い風だよな。
590:nobodyさん
06/11/05 04:44:56
URLリンク(jp.rubyist.net)
やっとPerlもJITコンパイラになるんだな
アクセラレータよ、さようなら
PHPやPythonと共通のバイトコードになるのもいい
って、まだまだ先の話か
591:nobodyさん
06/11/05 17:44:07
むしろperl等もJVMのバイトコードを出力するようにしてしまった方が
後々メリットが得られるような気もするが
そうでもないのかね。
592:nobodyさん
06/11/05 19:17:48
そのためにはPerl6が必要になるんじゃないの?
593:nobodyさん
06/11/05 19:55:56
>>591
とりあえず、JVMのコードが変換できるようになればそれでいいやん
.NETも変換できるようだし
>>592
Perl5もコンパイルできるようにするようだよ
でも、肝心のParrotが未だに開発中
594:nobodyさん
06/11/05 21:02:17
でもこれって結果的にスクリプト言語を勢いづかせるんじゃね
595:nobodyさん
06/11/05 22:44:36 tB4jjHhC
いつになったら完成するんだ!!
596:nobodyさん
06/11/06 01:45:05
明日仕上げます!
597:nobodyさん
06/11/06 22:24:47 wVlTk8ia
明日キタ━━(゚∀゚)━━!!
598:nobodyさん
06/11/06 22:58:07
完成しないとPerl6でないんだから、よほどのことがない限りでることはでるんじゃないの?
でもおそい
599:nobodyさん
06/11/06 23:00:44
スレリンク(php板)
動き無さ杉
600:nobodyさん
06/11/06 23:18:17
おいmod_parrotって...
アセンブラ言語で書けってか?
JITコンパイラ有るなら速度面でも価値は低いし
601:nobodyさん
06/11/07 01:17:26
3getさえないのにワロタwwwwwwwwwwwwwwwwww
602:nobodyさん
06/11/08 03:15:19
>>600
URLリンク(72.14.253.104)
603:nobodyさん
06/11/08 21:21:02
>>602
mod_parrotってmod_perlから呼び出されるバックエンドという理解でおk?
それならmod_parrotだから変わるっていう部分は少なくないか?
一定の速度向上以外は全く思いつかね
604:nobodyさん
06/11/10 00:45:33
> 現在開発中のPerl6インタプリタエンジンParrot。
> ParrotはCLR(Common Language Runtime)であり、
> ParrotアセンブラにコンパイルできればPerl6のみならず、
> Python、Ruby、PHPをはじめ、JavaもC#も、Basic、Scheme、
> その他の言語なんでもいける・・・ようになるかも!?
> mod_parrotができれば速度面でも問題無し!
> そんな夢のような言語/VMであるPerl6/Parrotについて語りましょう。
万能インタプリタみたいなこと書いておいて、mod_parrotはないだろ
CGI以外でもmod_parrot使うのかね
605:nobodyさん
06/11/10 00:53:48
Javaが挫折したネイティブCPU(補助機能としてのネイティブコードサポートならある)
これParrotでできないかな
本物のCPUを模倣したモデルを使っているので、易しいと思うんだが
問題はParrotの普及...
...というかまずスタートorz
606:nobodyさん
06/11/10 00:56:59
>>604
> CGI以外でもmod_parrot使うのかね
SpeedyCGIはCGI以外のPerlも代用できる
607:nobodyさん
06/11/27 18:16:52
modなんちゃら〜は速度改善の為のみに存在してると思ってないか?
608:603
06/11/27 19:25:05
>>607
> modなんちゃら〜は速度改善の為のみに存在してると思ってないか?
ApacheAPIへのインターフェイス兼アクセラレータだと思っていますが?
がmod_parrotの場合はインターフェースの役目は持ってないでしょう
609:nobodyさん
06/12/02 18:58:11
FastCGIでのMoinMoinを
URLリンク(ssk.jugem.jp)
を参考に動かそうとしているのですがInternal Server Errorで動きませんorz。
Apacheのログを漁ると
(13)Permission denied: FastCGI: can't create (dynamic) server "/home/wiki/public_html/moin.fcg": bind() failed [/etc/httpd/logs/fastcgi/dynamic/dce2b2d6779742810fd0c7f812ee16e5]
とあるのですが、いまいち意味が分かりません。
環境はCentOS4.4です。
他に質問スレが無かったので、こちらで質問させて頂きました。
どなたかご教授お願いします。
610:nobodyさん
06/12/02 22:58:31
背伸びする必要ないんじゃない?
611:nobodyさん
06/12/03 00:04:12
おまいら久々に新しいの出てますよ
mod_perl 2.0: Version 2.0.3 - November 28, 2006
URLリンク(perl.apache.org)
612:nobodyさん
06/12/03 00:23:05
ところでメモリ,メモリとほざいている奴は,これを試したのか?
URLリンク(search.cpan.org)
613:nobodyさん
06/12/03 02:18:17
>>612
試したの?
614:nobodyさん
06/12/03 15:23:04
>>613
見ただけじゃねえ?
>>612
で、どれくらい良くなった?
615:nobodyさん
06/12/03 15:28:26
>>609
/etc/httpd/logs/fastcgi/dynamic/が無いか、パーミッションが無いんじゃねえ?
616:615
06/12/03 16:04:25
もし/etc/httpd/logs/fastcgi/dynamic/があり所有者がApacheになっているなら、FastCGIの実行者がwikiだから書き込めないんじゃねえ?
/home/*/public_html/じゃない場合FastCGIは動くの?
617:nobodyさん
06/12/24 00:03:00 5VuL7TZS
質問なのですが、解れば教えてください。
apache2 + mod_perl2.0.2 + catalyst5.7006
にて、
仮想ディレクトリ上だけCatalyst環境で構築したいのですが、
下記のように書くとDocumentRoot以下にある
SpeedyCGI向けに書かれたソースの動きが変になってしまいました。
どのように設定すれば解決できますか?
httpd.conf--------------------------------------
PerlSwitches -I/var/www/Hello/lib
PerlLoadModule Hello
PerlTransHandler Hello
<Location /Hello>
PerlSetEnv Hello_DEBUG 0
SetHandler modperl
PerlResponseHandler Hello
</Location>
618:nobodyさん
06/12/24 02:17:10
>>617
URLリンク(d.hatena.ne.jp)
?
619:nobodyさん
06/12/24 12:56:06 5VuL7TZS
>>618
PerlLoadModule Hello
PerlTransHandler Hello
を外したらうまく行きました。ありがとうございます。
動いたけど全くもって理由がわかりませんw
620:nobodyさん
06/12/24 14:51:36
サブテカがいるすれはここですか?
621:nobodyさん
06/12/27 11:30:45
,,_yyrl|_._.
. ,ー,,エ(フ个 ¨゙.巛r.r
_)()|「リlll|,エ,, _,,,,,,,,,〔
ilァ.爻)ll(''ト'リ》ll!h/′ ''゙¨¨¨゙冖''_,._
_yr!'゙》||/||》ミ|||W'〕u彡 .ノ‐ .′,z厂′
_,彡l|'l《》「⌒Wl|リi|i{ノ巛r, .^.゙' 、ミ|》
.ー¨7リフミ.|Mllyii'|yl!.干zz| (z、u..彡゙「゙.┘
._yil|ミ)《l!|》!|il》lリli|||zz|¨;;ll《《リ}l|.┘ v.|ト
.ー″,,iトリ「|レ「〕:|/リlll!|z|ト厶|,.厶 冖 r y
ll|゙.ll|ili|トz||:iト /|《;li《z|》リ||,}゙ _yrl|レr .
.__y-トミ「゙川lyl)彡《i.ノ》|レ「)「「ll||゙)ミ)rl! ¨/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,z厂 .^.「゙》!「 `.r厂|′ 《》リ,||}″<
¨′ ,l.フ|′ .r! .「|ll|フ^、 | どうでもいい
`,〕 i!.,, .‐!ll,. .' .,i!||リ \____________
″y .″ _,r;yミ,|″
622:nobodyさん
07/02/15 01:20:19
SpeedyCGIを使うときに、グローバル変数を初期化する
必要があるということですが、どういうことでしょうか。
i=0; i++; i++; i++; i++; i++; print("i");
グローバル変数iを一つずつ増やしているだけです。
i=0;で初期化しているので大丈夫でしょうか?
普通5がprintされると思いますが、初期化しないで
何回も実行すると、どんどん加算されて5以上の数字が表示されますか?
623:622
07/02/15 02:33:34
622です。
SpeedyCGI入れて自分でも試してみたいと思います。
また、なにかありましたらよろしくお願いします。
624:nobodyさん
07/03/02 14:17:29
実際にやってみればいいじゃん
625:nobodyさん
07/03/03 22:18:22
FastCGIでディスパッチする際、リクエスト毎にスレッドを作成してばらばらの順番に応答を返す
ということはFastCGIの仕様的には可能なんでしょうか?
626:nobodyさん
07/03/03 22:49:26
FastCGI なアプリは常駐するわけだが。
627:nobodyさん
07/03/03 23:05:20
>>626
?それは分かってます。
常駐するプロセスにリクエストが(Unixドメインソケットあるいはソケットを介して)飛んでくるのが
FastCGIの仕様だと理解してますが、そのリクエストへの応答は、必ずリクエストが飛んできた
順番に応答しないといけないのかどうかが知りたいのです。
一応ドキュメントにはマルチスレッドでも可能的なことが書いてありましたが…
628:nobodyさん
07/03/04 04:51:01
>>627
>>1 のマニュアルFAQに書いてある事じゃなくて?
629:nobodyさん
07/03/04 12:19:12
>>628
FAQに目を通しましたが該当する記事は見当たりませんでした。
で、報告なんですが、Pythonにはマルチスレッドで動作するFastCGIアダプタが存在する
事から、ディスパッチャのマルチスレッド化は可能なようです。
ですがアダブタが存在するのくだりから推測できるように、アダプタが対応していないと
マルチスレッド化できません。(当方Rubyを使用する予定ですので、Rubyのアダプタで試して
みましたが、ムリでした)
アダプタをハックするにはFastCGIの仕様の理解が必要なこともあり、断念することにしました。
どうもありがとうございました。
630:nobodyさん
07/03/05 13:38:09
こちらこそ参考情報ありがとう
631:nobodyさん
07/05/26 20:01:40 7SKqsTBy
Perl6でもSpeedyCGIは使えたらなぁ
632:nobodyさん
07/05/28 22:48:45 A9llIuWJ
SpeedyCGIの -r オプションて、
回数に達したら、全backgroundが再起動するんかな?
それとも一backgroundごと?
633:nobodyさん
07/05/29 06:59:20
1background毎だと思っていたが…違うのか?
634:nobodyさん
07/06/01 20:02:10
すみませんがが、お知恵を拝借。
Apache2+mod_perl2 で、
my %List;
$List{$key} = { a=>1,b=>2,c=>1}
...
なんて連想配列作って、
sub listsort {
my $r = $List{$a}{a} <=> $List{$a}{b};
if ($r == 0) {
$r = $a cmp $b;
}
return $r;
}
foreach my $k (sort listsort keys(%List)) {
# codes
}
のようにソート関数かませて、配列の中身でソートする様にしたんだけど、
ソースを変更して、1回目の実行ではリファレンスが正しくソート関数に届くのに、
2回目以降は届かなくなります。
これって、使い方が間違ってるんでしょうか? Reload の設定ミス?
RHEL ES4 + Apache2.0.52 + mod_perl 2.0.3(tar install)
openSUSE 10.0 + Apache 2.0.54 + mod_perl 2.0.1(rpm)
どちらも同じ現象なので、プログラムじゃないかと思うんだけど、改善できなくって。
635:nobodyさん
07/06/04 12:03:46
listsort() がどの名前空間に宣言されているのか不明だし
それが原因かどうかは分からんけど…
その程度のソート内容なら
for my $k (sort { $List{$a}{'a'} <=> $List{$b}{'b'} || $a cmp $b } keys %List) {
でよくね?
636:634
07/06/05 05:13:19
>635
listsort の中には、3段位の比較を入れる予定。
listsortの宣言は、関数内です。
sub func {
sub listsort {
}
}
ちょっと長いけどインラインにしてみるっす。
637:nobodyさん
07/06/28 02:38:24
通常のPerlとSpeedyCGIを箱庭諸島R.A JSを使って比べてみた
(島の数は0)
トップページの表示しか載せないが
普通のPerlだとCPU時間が0.09〜
SpeedyだとCPU時間が最短0.01(大体0.03以上)
になってワロタ
638:nobodyさん
07/07/06 23:07:39
>>637
普通普通
639:nobodyさん
07/07/12 06:21:48
mod_perlを導入したのですがカレントディレクトリがApacheのディレクトリになってしまい
スクリプトのあるディレクトリがカレントディレクトリであると想定して書かれてるプログラムが動かなくなりました。
カレントディレクトリをスクリプトのディレクトリに変更する方法はありませんか?
環境はWindowsXP+Apache2.2.4です。
640:nobodyさん
07/07/12 10:31:57
>>639
URLリンク(adiary.blog.abk.nu)
641:nobodyさん
07/07/12 19:02:43
>>640
どもども
やってみます
642:nobodyさん
07/07/29 22:25:25
FC6でSpeedyCGI-2.22をソースインストールしようとしたら
mod_speedycgi2などでエラーがでて失敗しました。
FC1ではうまくいったんですが・・・。FC6で何か足りないものが
あるのでしょうか?
643:nobodyさん
07/07/30 17:48:02
>>642
URLリンク(dries.ulyssis.org)
これはどう?
644:nobodyさん
07/07/30 22:09:00
>>643
ありがとうございます。やってみたら、そのようなグループ、ユーザーは
いません、rootを使います〜と言うのが出て、その後、パッケージごとに
すでにインストールされているファイルと競合するので終了するような
メッセージがでて完了出来ませんでした。
rpmの、競合するファイルを無視してインストールするオプションというの
があればと思うのですがスイッチがわからないのでまだ試して無いです。
645:nobodyさん
07/08/01 23:29:07
>>642
FC6では試してないが、CentOS5では、
URLリンク(rt.cpan.org)
にあるpatchを一通り当てたら問題なくcompile出来た。
646:nobodyさん
07/09/13 01:31:18
>>639さんじゃないんですが、mod_perl2でカレントディレクトリの
設定を変更後、DBI::SQliteのdbnameだけは絶対パスを
入れなきゃ動きません…そういうもんなんでしょうか?
Apache 2.2.4+ActivePerl 5.8.8+mod_perl2
647:nobodyさん
07/09/13 04:52:15
mod_perl2はカレントディレクトリがスクリプトのあるディレクトリにならないから
preforkならchdirしたりCGIのエミュ代わりならModPerl::RegistryPreforkやModPerl::PerlRunPreforkを
使うとカレントディレクトリがそのスクリプトのディレクトリになるから相対パスで書けない事もない
workerの場合chdirが使えないというか使えるけど他のスレッドにも影響がでてしまうので危険
というわけでどちらにしても絶対パスで書いておくのが無難
648:nobodyさん
07/09/14 13:55:09
>>642 >>645
FCやCent使ってるなら
RPMforgeを入れて
yum -y perl-CGI-SpeedyCGI
で入れたほうが簡単じゃない?
649:nobodyさん
07/09/14 14:03:52
>>648
yum -y install perl-CGI-SpeedyCGI
^^^^^^
でした。
650:nobodyさん
07/09/14 18:42:10
やあみんな、FastでSpeedyでmodなperlライフをおくってるかい?
ところで、最近UpdateしたApache2.2.6と2.0.61でちゃんとmod_perl動いてる?
651:nobodyさん
07/09/14 20:17:24
>>650
試して報告してくれよん
652:650
07/09/15 03:58:09
やあやあ、
実はWin32環境で2.2.6、2.0.61ともに自前でビルドしたやつに、
これまたCPANよりGetsして来た2.0.3tarボールから自前コンパイルしてみたんだが、
ちゃんと動かねえんだよ。
具体的にゆうと、Loadmodlueでmod_perl.soしてやったとき、通常にStartUpした様に見える。
で、普通のHTMLとCGIPerlとPHPはちゃんと動くんだけど、Locationでmod_perlってるディレクトリの
ファイルをリクエストしたら、急にApacheがハングしてしまう。
ブラウザの画面に
「Internet Explorer ではこのページは表示できません
可能性のある原因:
インターネットに接続されていない。
Web サイトに問題が発生している。
アドレスに入力の間違いがある可能性がある。」
が表示される。(Apacheをkillした時にURLリンク(localhost)叩いた時と同じ表示)
ちなみにこの時、他のmod_perlでないページは正常に表示される。
653:650
07/09/15 03:58:47
つづき
この時のerror_logの表示は
Error in my_thread_global_end(): 252 threads didn't exit
[Sat Sep 15 02:47:35 2007] [notice] Parent: child process exited with status 9 -- Restarting.
[Sat Sep 15 02:47:35 2007] [notice] Apache/2.0.61 (Win32) PHP/5.2.1 mod_perl/2.0.3 Perl/v5.8.8 configured -- resuming normal operations
こんな感じ。
これみると、どおやらmod_perlなファイルにリクエストした時、なぜかApacheが再起動掛かってる模様。
ちなみにこの状態のままでも他のファイル(staticHTML,PHP,PerlCGI)は通常どおり表示される。
(access_logに記録もされてる。mod_perlなリクエストだけが欠落。)
あと、標準module(mod_auth,mod_alias,mod_rewrite等)の機能もちゃんと動作する。
さらにこの状態の時にStop(コンソールからCtrl+C)かけると,一旦通常に終了処理が終わったように見えるけど、
タスクマネージャ見ると、Apacheのプロセスが起動したままの状態。
この時のerror_logの内容は
Error in my_thread_global_end(): 1 threads didn't exit
ocess is running
上のエラーと同じ内容だけど、thread1なとこを見ると親プロセスか??
その下に多分"Process"だとおもわれるメッセージの断片が・・・。
654:650
07/09/15 03:59:18
つづき2
そんなこんなで何回か起動、再起動等を繰り返してると
Winの強制終了のポップアップが出て終了。
そのときのerror_logには、
[Sat Sep 15 02:54:21 2007] [notice] Apache/2.0.61 (Win32) PHP/5.2.1 mod_perl/2.0.3 Perl/v5.8.8 configured -- resuming normal operations
[Sat Sep 15 02:54:21 2007] [notice] Server built: Sep 15 2007 02:27:44
[Sat Sep 15 02:54:21 2007] [notice] Parent: Created child process 3412
[Sat Sep 15 02:54:23 2007] [crit] master_main: create child process failed. Exiting.
[Sat Sep 15 02:54:23 2007] [error] (OS 6)ハンドルが無効です。 : Parent: SetEvent for child process 0 failed
これ。
今までで[crit]なんかはじめて拝んだ。
前のレスのエラーは100%再現する。こっちのエラーはいまいち再現性がない(5回〜10回に一回くらい)
ちなみに上のは、2.0.61だけど、2.2.6でも全く同じエラーが出る。(当然そのときは、mod_perlを2.2用にrebuild)
theory58Sのコンパイル済みppmでも、エラー内容同じ。(2.0,2.2両方)
逆に、2.2.6と2.0.61のincludeとLibsでコンパイルしたmod_perl.soとライブラリ一式は、
2.2.4、2.0.59で両方正常に動く。(公式msiバイナリと自前ビルド両方とも試した。どっちも問題なし。)
655:650
07/09/15 03:59:51
つづき3
公式とかによると、APRとAPR-utilのバージョンがあがってるようなんで、
これのせいかとかも思うけど、公式のML等ではこの話題でず。
(なんか違うバグ出たみたいで、早くも2.2.7かって話も出てる)
perl.apache.orgのほうもこれに関する話題なし。
ちなみに”Loadmodule mod_perl.so”をコメントアウトすると何事もなかったかのように動いてる。
環境は
WinNT 5.1
VC2005 sp1 + nmake (Ver 8.00.50727.762)
Active perl 5.8.8-build822
あと、コンパイルオプションは無し(Makefile.winそのまま)
上にも書いたけど、全く同じコマンドで2.2.4と2.0.59は特に問題なくビルド出来た。
そのときの警告とかは、2.2.6or2.0.61のときと全く同じ(型変換うんぬんと、無効なオプションです。無視しますってやつ)
何度コンパイルし直してもこんな状況なんで、ここの猛者どもはどうなんかいの〜?って思って聞いてみた。
656:nobodyさん
07/09/15 11:11:36
colinux + CentOS で静的に入れてみたけど
ログ見ても今のところは問題ないように見える
657:650
07/09/15 17:59:20
>>656
そうですか。
実はうちも本番環境はFC or CentOSで組もうかと思ってる。
(今それ用のマシンを自作中。パーツがまだ揃ってない。今稼働中のマシンは2.2.4で動いてるけど止められない。)
で、とりあえずWinでテスト環境作ろうと思ってやってみた訳なんだが、つまずいてしまった。
for Unixだと問題ないのかな?
とりあえずもう一台組みあがったらfor Unixのソースでもう一回試してみる。
658:nobodyさん
07/09/15 21:00:36
開発やテスト環境ならvmwareなりcolinux入れておけばいいじゃない
659:nobodyさん
07/09/19 11:10:07
どうもmod_perlのプログラミングについて今一わからないんですが、
要は、while(1){}の中でコーディングしてlastで終了するような
プログラム書けばOKってことでしょうか?
660:nobodyさん
07/09/19 16:11:40
でんでんちがう
661:nobodyさん
07/10/10 15:18:22 /zGydDSw
mod_perlの弱点つーか いまいちperlがphpより普及しない理由として
常駐することがあると思うんだけど、
mod_phpみたいに常駐しないバージョンを開発するつもりないのかねー
てかmod_phpっぽい動作にする方法あったら教えて えろい人
662:nobodyさん
07/10/10 15:30:16
>>661
>>660
663:nobodyさん
07/10/10 19:03:11
日本語でおk
664:nobodyさん
07/10/11 03:09:21
で常駐しない方法ってあるん?
665:nobodyさん
07/10/11 03:43:39
mod_の意味わかってる?mod_だよ。
逆にmod_でない(常駐しない)phpなんか・・・・。
666:nobodyさん
07/10/11 03:59:24
mod_の意味ってわからないけど、プロセス常駐とApacheのモジュールとは関係ないと思うけど。fastcgiなんかだと外部プロセスに出来るわけだし。
ま、ウェブアプリと言ってもさまざまだけど、mod_phpで十分というかちょうどいいという感じはする。
リクエストごとに消えてくれるからメモリリークを心配せずによく、運用が簡単。
もっともPHP(mod_php)もバージョンが上がる度にリソース消費が激しくなってるけど。
何でPHP4をディスコンティニューするのか。PHPの開発者のすることは分からんね。
667:nobodyさん
07/10/11 05:11:31
う〜ん君が言ってるのは、常駐うんぬんのことではなくて、要はメモリ消費のことでしょ?
mod_phpだってapacheプロセスとして常駐してるんだが・・・。
確かにmod_perlはそれに比べてメモリ消費が激しいのと、並列度を高めるとパフォーマンスダウンが著しい(特にpreforkなんかは)
それはここの上のほうでも散々言われてることだから、Fastやspeedyなんかが話題になってるわけだし。
でもそれは>>661で言ってるみたいにプロセスに常駐するかどうかが問題なわけではなくて、
そのリソース消費とパフォーマンスとの兼ね合いであって、まるでmod_phpが常駐しないみたいな言い方してるから
>>660だって言われてるんでしょ。
668:nobodyさん
07/10/11 15:19:36
>>667 >>666
いや常駐ってmod_なら常駐するってのはわかってるってよ
スクリプトとかライブラリの常駐の話
mod_phpは実行してもスクリプトは常駐されないでしょ
perlrunでもuseとかrequireされたライブラリは常駐するよね? その辺の話
自分専用サーバで使う分にはいいけど、mod_phpみたいにレンサバでも利用できるようにならないと
実質レンサバとかだとphpはperl(cgi)より速いって事になってるんじゃねって事
669:nobodyさん
07/10/11 15:33:05
常駐ってか永続化 persistentだな すまん
言いたいことは >>666のリクエスト以降の話でっす
670:nobodyさん
07/10/11 17:38:08
persisitence ではなくて cache だから、
単にキャッシュでいいんじゃなかろうか。
671:nobodyさん
07/10/11 18:19:21
mod_phpみたいにインタープリタのオーバヘッドだけ解消できるモードがあれば
Perlもそこそこシェア守ってたかもね。権限なんかは利便性の二の次なのかな。
672:nobodyさん
07/10/11 18:46:42
とりあえずPerlを馬鹿にしとけば自尊心が保たれるみたいな
673:nobodyさん
07/10/11 20:21:51
>>668
> スクリプトとかライブラリの常駐の話
> mod_phpは実行してもスクリプトは常駐されないでしょ
> perlrunでもuseとかrequireされたライブラリは常駐するよね? その辺の話
そういう方面の話か。だったら常駐とかプロセスとか紛らわしい言い方するなよ…
で、mod_perl が使いにくいのはその通りで、
だから FastCGI や SpeedyCGI が話題になってるんだろ
> てかmod_phpっぽい動作にする方法あったら教えて えろい人
SpeedyCGI 使え SpeedyCGI
674:nobodyさん
07/10/12 00:42:05
みんなどうもです
結局FastCGIかSpeedyCGIって事か…
Catalystが動くかしらべてみっかな
675:nobodyさん
07/10/13 16:39:43
mod_perlならデフォで付けられる程安定/サポ有りモジュールだから間違いはない。
ビジネスするとこならまず選ぶ選択股であるのは当たり前。
amazon, mixi, hatena, livedoor, accessup ...
2chの話よりまず事例に従った方がミスはないと思うけどね。
676:nobodyさん
07/10/13 19:36:24
mod_perlは重い。HTMLやCSS,画像用に別にウェブサーバを用意しないといけない。一部の巨大なウェブサイトならリソースがふんだんにあるだろうけど、多くはそうじゃない。
677:nobodyさん
07/10/13 20:51:37
なんでそこまでして大規模サイトに
スクリプト言語を使いたくなるのだろうねえ
678:nobodyさん
07/10/13 21:03:55
mod_perlって高負荷時に安定はしないんじゃね?
mixiはDBの方がネックだったらしいから大丈夫だったっぽいけど。
679:nobodyさん
07/10/14 14:39:13
別にサーバー用意しなきゃいけないは伝説。
超余裕環境が最高効率を目指すだけの技。
立ち上がるhttpdを3つ位までにしてworkerで動かせばメモリーの消費は抑えられて十分だよ。
preforkで立ち上げるからメモリーを馬鹿みたいに使って高負荷時にメモリーが無いと騒ぐことになる。
そもそもそこにボトルネックは
・プログラムをいかにhtmlにするか
・ファイルをいかにメモリーにおくか
・そしてmixiのようにdbをどうするか
のようなCPU/IO/ネットワークまわりの基本レベルの選択が問題。
スクリプト言語といっても実行している時にはスクリプトの状態ではないのだから、
開発効率を考えればスクリプトを選ぶのは当たり前。
速度が必要な時にApache Moduleの世界に一部入る(greeとか)という選択肢があれば良い。
680:nobodyさん
07/10/14 14:42:58
x: そもそもそこにボトルネックは
o: そもそもそこよりボトルネックは
681:nobodyさん
07/10/14 19:32:01
事例多い → mod_perl
mod_perl より速い → FastCGI
さらに速い → mod_speedycgi
root いらずで手軽 → SpeedyCGI
要は使い分けじゃね?
俺は手軽さが魅力だったので SpeedyCGI を選んだ。
682:nobodyさん
07/10/14 21:00:07
root権限、Apache 管理者権限なしでSpeedyCGIを導入する方法がわからん。
助けてえろい人。
683:nobodyさん
07/10/14 21:05:14
>>682
Apache管理者権限って何?
つ、普通に入れられないのか?
684:nobodyさん
07/10/15 12:38:49
サーバにシェルログインする。
SpeedyCGI をユーザホームディレクトリ配下にインスコする。
以上
685:nobodyさん
07/10/15 15:54:12
>>681
mod_perl で効果的に ithread 使うのが一番速い。
FastCGI だとスレッドの恩恵が少ない。
レンタルサーバだと一定時間を越えて動作するプロセス
情け容赦なく kill されるので
SpeedyCGI は利用できないと思った方が無難。
(SpeedyCGI に限らないが。)
686:nobodyさん
07/10/15 16:30:46
use threadは使い物にならなかったけどuse ithreadは使いものになるのか。
今度試してみよう。
この板見て初めての収穫。
687:nobodyさん
07/10/15 16:32:14
x: use thread / o:use threads
688:nobodyさん
07/10/15 16:51:46
せめて試してから収穫かどうか判断しろよ
689:nobodyさん
07/10/15 18:07:12
Apache が worker 動作してるなら試してみる価値はある。
一方で lighttpd + fastcgi で十分じゃないかと言う話も。
690:nobodyさん
07/10/15 22:42:23
>>684
>SpeedyCGI をユーザホームディレクトリ配下にインスコする。
わからん。。。。。。。
普通にmakeしてもダメだろ?
691:nobodyさん
07/10/16 00:58:26
>>686
Perl で ithread を使うための宣言が use threads だろ。
同じ物だよ。
>>690
「CPAN ホームディレクトリ」でググれ。
cpan コマンド使わずに手動でインスコするなら perl Makefile.PL PREFIX=$HOME とか
692:nobodyさん
07/10/16 10:52:05
まじ?
それだったら期待できないな。
過去の経験からいえばperlのthreadsはメモリーの扱い下手過ぎ(過消費)。
スワップまでの寿命がかなり短くなる。
693:nobodyさん
07/10/16 12:36:40
スクリプト言語は開発効率が高いって本当なの?
企業としては開発効率以外にも見るべき所があるでしょ
694:nobodyさん
07/10/16 12:47:07
>>692
5.005 の thread (use Thread;) と 5.6 以降の ithreads (use threads;) は違う。
後者の場合も注意して作らないとメモリをジャブジャブ使うのは変わらないが。
>>683
場合によりけりだろう。
一般的には規模が大きくなればかえって効率下がることになってる。
個人的には規模が小さくても型付けの弱い言語は開発効率が低いと感じる。
695:nobodyさん
07/10/16 16:20:31
そういう意味だったら試したのはithreadの方だったと思う。
でも、多分
Interpreter threads are different from "5005threads"
(the thread model of Perl 5.005)
by creating a new perl interpreter per thread and not sharing any data or state between threads by default.
とあるとおり、スレッド毎にinterpreter分のメモリーをガンって増やすから、凄いことになっちゃったのかな。
mod_perlだともしかしてこのinterpreter分が節約できるのか?
自分はコマンド用途で試してたから増え方にビックリしたんだけど。
696:nobodyさん
07/10/16 16:50:51
ごめん。685 の文からしておかしかった。
mod_perl (2.x) は ithread を内部的に使ってる、だった。
で、プロセス毎に上限の設定されたスレッドプールで使いまわしてる。
697:nobodyさん
07/10/17 16:52:12
mod_perl重いって話けっこうあるし、画像用の別サーバとか
普通ってかあたりまえな気はする。
別サーバといっても同じマシンに別のApache立ち上げるだけでいいわけだし
mod_phpにしてもメモリ食いだし、静的ファイル用に別サーバ用意するのは当たり前だとおもってたけどな・・
それで重いといわれても〜
698:nobodyさん
07/10/17 16:54:27
あと開発効率はめちゃ高いと思うぞ
大規模なサイトでも機能ごとにちゃんと分けてあげたり普通につくれば普通に便利。
てか体が慣れてるので俺の中ではウェブ系はPerl以外ありえない
699:nobodyさん
07/10/17 16:56:24
あとまったくすれ違いだけどphpってphp.iniで文字コード制御とかありえねーなといつも思う
と独り言
700:nobodyさん
07/10/17 17:16:43
静的ファイルの話するには100番くらいレス戻さないとダメだが。
静的ファイルで速度出したいなら lighttpd も良い選択だと思われ。
701:nobodyさん
07/10/17 19:51:25
それをいったら、実行はじめたスクリプト中で ini_set('mbstring.internal_encoding', 'EUC-JP'); とか
702:nobodyさん
07/10/22 16:25:52 YWIr8Jbq
専用ならHTTP::Daemonで
まるごと組んじゃうとか、どうなの?
703:nobodyさん
07/10/23 13:31:51
細かい処理考えるのめんどいからmod_jk + Net::AJP13に期待
704:nobodyさん
07/10/29 01:19:53
ねえねえ、ひょっとして mod_speedycgi2 ってアパッチョ2.2系じゃコンパイル不可?
うち、Cent4で、自前makeしたAp2.2.6を/usr/local/apache2/にインスコして、
そのapxsを読み込ませるようにしてmakeしてみたんだけど、mod_speedycgi2.cでエラー100個くらい出て止まってしまう。
内容はなんかsyntaxErrorだとか、previous definition(定義済みの再定義?)がでまくるんだけど・・・。
ちなみにrpmからの2.0.59では一応makeは通る(でもtestでmod_系は全スキップしてしまう)。
どなたか2.2系で動かしてる人いませんか?
705:nobodyさん
07/10/29 08:39:55
上のレスでさんざん既出のこれじゃないかな
URLリンク(rt.cpan.org)
706:nobodyさん
07/10/29 22:49:20
>>705
やった〜。makeできたよママン。
ありがトン。
707:nobodyさん
07/10/30 04:25:29 OsAJPMJ7
ねえねえ、ひょっとして mod_speedycgi2 ってアパッチョ2.2系じゃコンパイル不可?
うち、Cent4で、自前makeしたAp2.2.6を/usr/local/apache2/にインスコして、
そのapxsを読み込ませるようにしてmakeしてみたんだけど、mod_speedycgi2.cでエラー100個くらい出て止まってしまう。
内容はなんかsyntaxErrorだとか、previous definition(定義済みの再定義?)がでまくるんだけど・・・。
ちなみにrpmからの2.0.59では一応makeは通る(でもtestでmod_系は全スキップしてしまう)。
どなたか2.2系で動かしてる人いませんか?
708:nobodyさん
07/11/14 00:27:32 MPH8wi6G
ねえねえ、ひょっとして mod_speedycgi2 ってアパッチョ2.2系じゃコンパイル不可?
うち、Cent4で、自前makeしたAp2.2.6を/usr/local/apache2/にインスコして、
そのapxsを読み込ませるようにしてmakeしてみたんだけど、mod_speedycgi2.cでエラー100個くらい出て止まってしまう。
内容はなんかsyntaxErrorだとか、previous definition(定義済みの再定義?)がでまくるんだけど・・・。
ちなみにrpmからの2.0.59では一応makeは通る(でもtestでmod_系は全スキップしてしまう)。
どなたか2.2系で動かしてる人いませんか?
709:nobodyさん
07/11/14 06:43:19 vnJkUfbw
ねえねえ、ひょっとして mod_speedycgi2 ってアパッチョ2.2系じゃコンパイル不可?
うち、Cent4で、自前makeしたAp2.2.6を/usr/local/apache2/にインスコして、
そのapxsを読み込ませるようにしてmakeしてみたんだけど、mod_speedycgi2.cでエラー100個くらい出て止まってしまう。
内容はなんかsyntaxErrorだとか、previous definition(定義済みの再定義?)がでまくるんだけど・・・。
ちなみにrpmからの2.0.59では一応makeは通る(でもtestでmod_系は全スキップしてしまう)。
どなたか2.2系で動かしてる人いませんか?
710:nobodyさん
07/11/17 13:53:14
ねえねえ、ひょっとして mod_speedycgi2 ってアパッチョ2.2系じゃコンパイル不可?
うち、Cent4で、自前makeしたAp2.2.6を/usr/local/apache2/にインスコして、
そのapxsを読み込ませるようにしてmakeしてみたんだけど、mod_speedycgi2.cでエラー100個くらい出て止まってしまう。
内容はなんかsyntaxErrorだとか、previous definition(定義済みの再定義?)がでまくるんだけど・・・。
ちなみにrpmからの2.0.59では一応makeは通る(でもtestでmod_系は全スキップしてしまう)。
どなたか2.2系で動かしてる人いませんか?
711:nobodyさん
07/11/17 18:28:52
いい加減うぜえよwww
712:nobodyさん
07/11/24 02:37:09
ちょっとlibapreq2について質問なんだけど、
make test した時の、
t/apreq/cgi テストは失敗するもん?
CPANから取って来た2.08と、FedoraのRepoから引っ張ってきた2.09-rcのsrc.rpm
からやってみたんだけど、両方これがエラーになる。
ググってみても、いくつかのBlogとかで
「make test いくつか失敗するけど無視する」
みたいなこと書いてあるし、ほんとにこれでいいんかい??
CentOS4.5,Apache2.2,mod_perl2.0.3
713:nobodyさん
07/11/24 09:23:53
Blog (笑
どんなエラーかも書いてないし…これは酷い。
714:712
07/11/25 19:11:55
こりゃあきまへん。これこのTestでコケるようになってるわ、packageの構造的に。
>>713
エラーの内容ってこれ?
t/apreq/big_input....ok
t/apreq/cgi..........# Failed test 1 in t/apreq/cgi.t at line 62
t/apreq/cgi..........NOK 1# Failed test 2 in t/apreq/cgi.t at line 62 fail #2
t/apreq/cgi..........NOK 2# Failed test 3 in t/apreq/cgi.t at line 62 fail #3
t/apreq/cgi..........NOK 3# Failed test 4 in t/apreq/cgi.t at line 62 fail #4
・
・
こんなのが40行ほど続いて、
t/apreq/cgi..........FAILED tests 1-41
Failed 41/41 tests, 0.00% okay
t/apreq/cookie.......ok
これ。つまりt/apreq2/cgi_tファイル全滅。全てのテストが失敗してる。これ以外は全てOKとなる。
このエラー見たところでline**で、コケてるのはわかるんだが、どうゆうエラーかは分からないと思った。
確かに上のスレでは内容書かなかった。すまん。
でも、当然だけどCPANやらで一通りBugReportは斜め読みしてみて、似たようなErrorの報告があったけど明確な解決になってなかったし、
patchも出てなかったから、「libapreq2」とか「libapreq2 インストール」でググってみて、上位のほうにあったいくつかの
インストール手順を紹介したサイト(Blog)の内容に、「make test 通らない」とか、「make test 飛ばす」みたいなこと書いてあったし、
Fedora6,7,8のSRPMの.specも make セクションの後に、test せずに install セクションに入ってたから、
test通らないのがデフォかなって思って、書き込みしたわけなんだが・・・。笑うところか?
まあいいわ。原因はつかんだ。
715:つづき
07/11/25 19:12:31
で、ちょっと長くなるけど、specに従い
./buildconf
CC=gcc CFLAGS="-O2 -g" ./configure --with-apache2=/usr/local/apache2 --enable-perl-glue
とやるわけなんだが、最後の”--enable-perl-glue”がくせもの。
このオプションは、通常libapreq2のコンパイル、Library(libapreq2.so)とmodule(mod_libapreq2.so)に加えて、
perl-libapreq2モジュール郡のコンパイルも同時に行う。でまあ、
make
make test
と進むわけだが、この全滅する glue/perl/t/apreq/cgi_t は、三つ目(perl-module)のビルドセクション
(Lib、mod、perlとテスト郡が3ステップある。実際makeしてみたらわかる。)に含まれるテストなんだけど、
Library、moduleはなんなくPass(じつはこれも落とし穴あり)して、このperlのテストセクションに入ってから、
問題のerrorが発生する。
で、Test中の動作を追っかけていたんだが、この t/apreq/cgi テストの時は、一時的に
t/の下位dirにcgi-bin/test_cgi.plってファイルが生成されて、それが実際に走ってる(httpd上で)。
で、このファイルはt/apreq/cgiテスト中にしか生存しなくて、次のテストに移ったら消えてしまう。(その間約2秒、その隙に捕獲する)
このtest_cgi.plファイル自体が諸悪の根源。以下中身(の上位行)
use strict;
use File::Basename;
use warnings FATAL => 'all';
use blib;
use APR;
use APR::Pool;
use APR::Request::Param;
use APR::Request::Cookie;
use APR::Request::CGI;
716:つづき2
07/11/25 19:13:06
この use 郡で、APR関係のmoduleをロードできずに失敗していた。
特に自分の環境では、Apache2.2系(mod_perlも)を/usr/local/apache2/にインストールしてたんで、
コンソールで、perl -e ’use APR’ とかしただけで、
Can't load ・・・・ libaprutil-1.so.0がロードできません。そんなファイルはありません DynaLoader.pm line230 みたいなErrorになる。
確かlibaprな.soファイル一式は、/usr/local/apache2/lib以下に格納されていて、どうやらここはperlのLIBPATHには含まれていない。
ちなみにperlのLIBPATHは、
perl -e 'use DynaLoader; print join("\n",@di_library_path) . "\n";' で確認できるんだけど、これの結果は
/usr/lib
/lib
/usr/local/lib
となっていて、(perl-5.8.8-4.el4si.i386.rpm)、/usr/local/apache2/等は読み込んでくれない。
仕方がないので、一時的に/usr/local/apache2/lib/以下を、/usr/lib/にコピーして、コンソールで再度 perl -e 'use APR'とやってエラー無し。
しかししかし、これで問題解決にはならないんだこれが・・。
この状態で再び make test としても、やっぱりt/apreq/cgiで全コケは変わらない。
今度は、
use APR::Request::Param;
use APR::Request::Cookie;
use APR::Request::CGI;
この三つ、実は今ビルドしようとしてるlibapreq2-perlに含まれるmodule郡で、しかも内部でlibapreq2.so.3にリンクしてる。で、こいつらが、
Can't load ...APR/Request/Request.so' for module APR::Request: libapreq2.so.3: cannot open shared object file: No such file or directory
なエラーを吐いて、正常に走ってくれないってわけ。
(このlibapreq2.so.file郡は、今まさにビルドしたばっかりのファイルで、libapreq2-2.09/library/.lib/にいて、当然perlのLIBPATH下にはいない)
717:たぶん終わり
07/11/25 19:13:42
激しく無理やりな解決方法としては、
make test せずに
make install してしまい、LIBPATH(/usr/lib/以下)に、いったんlibapreq2.soファイル郡を掘り込んでしまい、
(ApacheがRPMなら、ここに入るはず。でなければ、INSTDIRからここにコピー)その上でもっかい、libapreq2をmakeしたDirにcdして、
make test とすれば、みごと全てのテストに合格する。
(Cent4.5 Apache2.2を/usr/local/apache2/にinstall と、CentOS5.0 Apache2.2-rpmの両環境で確認)
でも、これじゃあなんだか手順が逆じゃない??
testでCompileコケてないの確認してからinstallじゃん、普通は・・・。
で、なんとかならないかと色々調べてみてんだが、
一時的にperl の DynaLoaderが検索するLIBPATHは、スクリプトの中からなら操作できるようなんだが、
外からやる方法が見つからない。(オプションとかスイッチとかで・・・。)
例えば、
LD_LIBRARRY_PATH=/usr/local/apache2/lib perl -e 'use DynaLoader; print join("\n",@dl_library_path) . "\n";'
とかやれば、@dl_library_pathに /usr/local/apache2/lib が追加されるんで、「お、出来たか」と思ったけど、
だめなんだよ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5370日前に更新/249 KB
担当:undef