[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 09:19 / Filesize : 249 KB / Number-of Response : 786
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【激速】mod_perl SpeedyCGI FastCGI【激速】



1 名前:nobodyさん [2006/06/05(月) 20:01:09 ID:+YcYjDiD]
mod_perl
perl.apache.org/

SpeedyCGI
perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod

前スレ
mod_perlを使おう!
pc8.2ch.net/test/read.cgi/php/1005122528/

ー二三ヘ( ゚∀゚)ノ

644 名前:nobodyさん mailto:sage [2007/07/30(月) 22:09:00 ID:???]
>>643
ありがとうございます。やってみたら、そのようなグループ、ユーザーは
いません、rootを使います〜と言うのが出て、その後、パッケージごとに
すでにインストールされているファイルと競合するので終了するような
メッセージがでて完了出来ませんでした。
 rpmの、競合するファイルを無視してインストールするオプションというの
があればと思うのですがスイッチがわからないのでまだ試して無いです。

645 名前:nobodyさん mailto:sage [2007/08/01(水) 23:29:07 ID:???]
>>642
FC6では試してないが、CentOS5では、

rt.cpan.org/Public/Dist/Display.html?Name=CGI-SpeedyCGI

にあるpatchを一通り当てたら問題なくcompile出来た。


646 名前:nobodyさん mailto:sage [2007/09/13(木) 01:31:18 ID:???]
>>639さんじゃないんですが、mod_perl2でカレントディレクトリの
設定を変更後、DBI::SQliteのdbnameだけは絶対パスを
入れなきゃ動きません…そういうもんなんでしょうか?

Apache 2.2.4+ActivePerl 5.8.8+mod_perl2

647 名前:nobodyさん mailto:sage [2007/09/13(木) 04:52:15 ID:???]
mod_perl2はカレントディレクトリがスクリプトのあるディレクトリにならないから

preforkならchdirしたりCGIのエミュ代わりならModPerl::RegistryPreforkやModPerl::PerlRunPreforkを
使うとカレントディレクトリがそのスクリプトのディレクトリになるから相対パスで書けない事もない

workerの場合chdirが使えないというか使えるけど他のスレッドにも影響がでてしまうので危険

というわけでどちらにしても絶対パスで書いておくのが無難

648 名前:nobodyさん mailto:sage [2007/09/14(金) 13:55:09 ID:???]
>>642 >>645
FCやCent使ってるなら

RPMforgeを入れて
yum -y perl-CGI-SpeedyCGI
で入れたほうが簡単じゃない?


649 名前:nobodyさん mailto:sage [2007/09/14(金) 14:03:52 ID:???]
>>648
yum -y install perl-CGI-SpeedyCGI
^^^^^^
でした。

650 名前:nobodyさん mailto:sage [2007/09/14(金) 18:42:10 ID:???]
やあみんな、FastでSpeedyでmodなperlライフをおくってるかい?

ところで、最近UpdateしたApache2.2.6と2.0.61でちゃんとmod_perl動いてる?

651 名前:nobodyさん mailto:sage [2007/09/14(金) 20:17:24 ID:???]
>>650
試して報告してくれよん

652 名前:650 mailto:sage [2007/09/15(土) 03:58:09 ID:???]
やあやあ、
実は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した時にlocalhost/叩いた時と同じ表示)

ちなみにこの時、他のmod_perlでないページは正常に表示される。



653 名前:650 mailto:sage [2007/09/15(土) 03:58:47 ID:???]
つづき

この時の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 mailto:sage [2007/09/15(土) 03:59:18 ID:???]
つづき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 mailto:sage [2007/09/15(土) 03:59:51 ID:???]
つづき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さん mailto:sage [2007/09/15(土) 11:11:36 ID:???]
colinux + CentOS で静的に入れてみたけど
ログ見ても今のところは問題ないように見える

657 名前:650 mailto:sage [2007/09/15(土) 17:59:20 ID:???]
>>656
そうですか。

実はうちも本番環境はFC or CentOSで組もうかと思ってる。
(今それ用のマシンを自作中。パーツがまだ揃ってない。今稼働中のマシンは2.2.4で動いてるけど止められない。)

で、とりあえずWinでテスト環境作ろうと思ってやってみた訳なんだが、つまずいてしまった。

for Unixだと問題ないのかな?
とりあえずもう一台組みあがったらfor Unixのソースでもう一回試してみる。

658 名前:nobodyさん mailto:sage [2007/09/15(土) 21:00:36 ID:???]
開発やテスト環境ならvmwareなりcolinux入れておけばいいじゃない

659 名前:nobodyさん mailto:sage [2007/09/19(水) 11:10:07 ID:???]
どうもmod_perlのプログラミングについて今一わからないんですが、
要は、while(1){}の中でコーディングしてlastで終了するような
プログラム書けばOKってことでしょうか?


660 名前:nobodyさん mailto:sage [2007/09/19(水) 16:11:40 ID:???]
でんでんちがう

661 名前:nobodyさん [2007/10/10(水) 15:18:22 ID:/zGydDSw]
mod_perlの弱点つーか いまいちperlがphpより普及しない理由として
常駐することがあると思うんだけど、
mod_phpみたいに常駐しないバージョンを開発するつもりないのかねー
てかmod_phpっぽい動作にする方法あったら教えて えろい人

662 名前:nobodyさん mailto:sage [2007/10/10(水) 15:30:16 ID:???]
>>661
>>660



663 名前:nobodyさん mailto:sage [2007/10/10(水) 19:03:11 ID:???]
日本語でおk

664 名前:nobodyさん mailto:sage [2007/10/11(木) 03:09:21 ID:???]
で常駐しない方法ってあるん?

665 名前:nobodyさん mailto:sage [2007/10/11(木) 03:43:39 ID:???]
mod_の意味わかってる?mod_だよ。
逆にmod_でない(常駐しない)phpなんか・・・・。

666 名前:nobodyさん mailto:sage [2007/10/11(木) 03:59:24 ID:???]
mod_の意味ってわからないけど、プロセス常駐とApacheのモジュールとは関係ないと思うけど。fastcgiなんかだと外部プロセスに出来るわけだし。
ま、ウェブアプリと言ってもさまざまだけど、mod_phpで十分というかちょうどいいという感じはする。
リクエストごとに消えてくれるからメモリリークを心配せずによく、運用が簡単。
もっともPHP(mod_php)もバージョンが上がる度にリソース消費が激しくなってるけど。
何でPHP4をディスコンティニューするのか。PHPの開発者のすることは分からんね。

667 名前:nobodyさん mailto:sage [2007/10/11(木) 05:11:31 ID:???]
う〜ん君が言ってるのは、常駐うんぬんのことではなくて、要はメモリ消費のことでしょ?
mod_phpだってapacheプロセスとして常駐してるんだが・・・。

確かにmod_perlはそれに比べてメモリ消費が激しいのと、並列度を高めるとパフォーマンスダウンが著しい(特にpreforkなんかは)
それはここの上のほうでも散々言われてることだから、Fastやspeedyなんかが話題になってるわけだし。

でもそれは>>661で言ってるみたいにプロセスに常駐するかどうかが問題なわけではなくて、
そのリソース消費とパフォーマンスとの兼ね合いであって、まるでmod_phpが常駐しないみたいな言い方してるから
>>660だって言われてるんでしょ。

668 名前:nobodyさん mailto:sage [2007/10/11(木) 15:19:36 ID:???]
>>667 >>666
いや常駐ってmod_なら常駐するってのはわかってるってよ
スクリプトとかライブラリの常駐の話
mod_phpは実行してもスクリプトは常駐されないでしょ
perlrunでもuseとかrequireされたライブラリは常駐するよね? その辺の話
自分専用サーバで使う分にはいいけど、mod_phpみたいにレンサバでも利用できるようにならないと
実質レンサバとかだとphpはperl(cgi)より速いって事になってるんじゃねって事


669 名前:nobodyさん mailto:sage [2007/10/11(木) 15:33:05 ID:???]
常駐ってか永続化 persistentだな すまん
言いたいことは >>666のリクエスト以降の話でっす


670 名前:nobodyさん mailto:sage [2007/10/11(木) 17:38:08 ID:???]
persisitence ではなくて cache だから、
単にキャッシュでいいんじゃなかろうか。

671 名前:nobodyさん mailto:sage [2007/10/11(木) 18:19:21 ID:???]
mod_phpみたいにインタープリタのオーバヘッドだけ解消できるモードがあれば
Perlもそこそこシェア守ってたかもね。権限なんかは利便性の二の次なのかな。

672 名前:nobodyさん mailto:sage [2007/10/11(木) 18:46:42 ID:???]
とりあえずPerlを馬鹿にしとけば自尊心が保たれるみたいな



673 名前:nobodyさん mailto:sage [2007/10/11(木) 20:21:51 ID:???]
>>668
> スクリプトとかライブラリの常駐の話
> mod_phpは実行してもスクリプトは常駐されないでしょ
> perlrunでもuseとかrequireされたライブラリは常駐するよね? その辺の話

そういう方面の話か。だったら常駐とかプロセスとか紛らわしい言い方するなよ…

で、mod_perl が使いにくいのはその通りで、
だから FastCGI や SpeedyCGI が話題になってるんだろ

> てかmod_phpっぽい動作にする方法あったら教えて えろい人

SpeedyCGI 使え SpeedyCGI

674 名前:nobodyさん mailto:sage [2007/10/12(金) 00:42:05 ID:???]
みんなどうもです
結局FastCGIかSpeedyCGIって事か…
Catalystが動くかしらべてみっかな


675 名前:nobodyさん mailto:sage [2007/10/13(土) 16:39:43 ID:???]
mod_perlならデフォで付けられる程安定/サポ有りモジュールだから間違いはない。
ビジネスするとこならまず選ぶ選択股であるのは当たり前。
amazon, mixi, hatena, livedoor, accessup ...
2chの話よりまず事例に従った方がミスはないと思うけどね。



676 名前:nobodyさん mailto:sage [2007/10/13(土) 19:36:24 ID:???]
mod_perlは重い。HTMLやCSS,画像用に別にウェブサーバを用意しないといけない。一部の巨大なウェブサイトならリソースがふんだんにあるだろうけど、多くはそうじゃない。

677 名前:nobodyさん mailto:sage [2007/10/13(土) 20:51:37 ID:???]
なんでそこまでして大規模サイトに
スクリプト言語を使いたくなるのだろうねえ

678 名前:nobodyさん mailto:sage [2007/10/13(土) 21:03:55 ID:???]
mod_perlって高負荷時に安定はしないんじゃね?
mixiはDBの方がネックだったらしいから大丈夫だったっぽいけど。

679 名前:nobodyさん mailto:sage [2007/10/14(日) 14:39:13 ID:???]
別にサーバー用意しなきゃいけないは伝説。
超余裕環境が最高効率を目指すだけの技。
立ち上がるhttpdを3つ位までにしてworkerで動かせばメモリーの消費は抑えられて十分だよ。
preforkで立ち上げるからメモリーを馬鹿みたいに使って高負荷時にメモリーが無いと騒ぐことになる。

そもそもそこにボトルネックは
・プログラムをいかにhtmlにするか
・ファイルをいかにメモリーにおくか
・そしてmixiのようにdbをどうするか
のようなCPU/IO/ネットワークまわりの基本レベルの選択が問題。

スクリプト言語といっても実行している時にはスクリプトの状態ではないのだから、
開発効率を考えればスクリプトを選ぶのは当たり前。
速度が必要な時にApache Moduleの世界に一部入る(greeとか)という選択肢があれば良い。


680 名前:nobodyさん mailto:sage [2007/10/14(日) 14:42:58 ID:???]
x: そもそもそこにボトルネックは
o: そもそもそこよりボトルネックは


681 名前:nobodyさん mailto:sage [2007/10/14(日) 19:32:01 ID:???]
事例多い → mod_perl
mod_perl より速い → FastCGI
さらに速い → mod_speedycgi
root いらずで手軽 → SpeedyCGI
要は使い分けじゃね?

俺は手軽さが魅力だったので SpeedyCGI を選んだ。

682 名前:nobodyさん mailto:sage [2007/10/14(日) 21:00:07 ID:???]
root権限、Apache 管理者権限なしでSpeedyCGIを導入する方法がわからん。
助けてえろい人。



683 名前:nobodyさん mailto:sage [2007/10/14(日) 21:05:14 ID:???]
>>682
Apache管理者権限って何?
つ、普通に入れられないのか?

684 名前:nobodyさん mailto:sage [2007/10/15(月) 12:38:49 ID:???]
サーバにシェルログインする。
SpeedyCGI をユーザホームディレクトリ配下にインスコする。
以上

685 名前:nobodyさん mailto:sage [2007/10/15(月) 15:54:12 ID:???]
>>681
mod_perl で効果的に ithread 使うのが一番速い。
FastCGI だとスレッドの恩恵が少ない。

レンタルサーバだと一定時間を越えて動作するプロセス
情け容赦なく kill されるので
SpeedyCGI は利用できないと思った方が無難。
(SpeedyCGI に限らないが。)

686 名前:nobodyさん mailto:sage [2007/10/15(月) 16:30:46 ID:???]
use threadは使い物にならなかったけどuse ithreadは使いものになるのか。
今度試してみよう。
この板見て初めての収穫。


687 名前:nobodyさん mailto:sage [2007/10/15(月) 16:32:14 ID:???]
x: use thread / o:use threads

688 名前:nobodyさん mailto:sage [2007/10/15(月) 16:51:46 ID:???]
せめて試してから収穫かどうか判断しろよ

689 名前:nobodyさん mailto:sage [2007/10/15(月) 18:07:12 ID:???]
Apache が worker 動作してるなら試してみる価値はある。
一方で lighttpd + fastcgi で十分じゃないかと言う話も。

690 名前:nobodyさん mailto:sage [2007/10/15(月) 22:42:23 ID:???]
>>684

>SpeedyCGI をユーザホームディレクトリ配下にインスコする。

わからん。。。。。。。
普通にmakeしてもダメだろ?

691 名前:nobodyさん mailto:sage [2007/10/16(火) 00:58:26 ID:???]
>>686
Perl で ithread を使うための宣言が use threads だろ。
同じ物だよ。

>>690
「CPAN ホームディレクトリ」でググれ。
cpan コマンド使わずに手動でインスコするなら perl Makefile.PL PREFIX=$HOME とか

692 名前:nobodyさん mailto:sage [2007/10/16(火) 10:52:05 ID:???]
まじ?
それだったら期待できないな。
過去の経験からいえばperlのthreadsはメモリーの扱い下手過ぎ(過消費)。
スワップまでの寿命がかなり短くなる。




693 名前:nobodyさん mailto:sage [2007/10/16(火) 12:36:40 ID:???]
スクリプト言語は開発効率が高いって本当なの?
企業としては開発効率以外にも見るべき所があるでしょ

694 名前:nobodyさん mailto:sage [2007/10/16(火) 12:47:07 ID:???]
>>692
5.005 の thread (use Thread;) と 5.6 以降の ithreads (use threads;) は違う。
後者の場合も注意して作らないとメモリをジャブジャブ使うのは変わらないが。

>>683
場合によりけりだろう。
一般的には規模が大きくなればかえって効率下がることになってる。
個人的には規模が小さくても型付けの弱い言語は開発効率が低いと感じる。

695 名前:nobodyさん mailto:sage [2007/10/16(火) 16:20:31 ID:???]
そういう意味だったら試したのは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さん mailto:sage [2007/10/16(火) 16:50:51 ID:???]
ごめん。685 の文からしておかしかった。

mod_perl (2.x) は ithread を内部的に使ってる、だった。
で、プロセス毎に上限の設定されたスレッドプールで使いまわしてる。

697 名前:nobodyさん mailto:sage [2007/10/17(水) 16:52:12 ID:???]
mod_perl重いって話けっこうあるし、画像用の別サーバとか
普通ってかあたりまえな気はする。
別サーバといっても同じマシンに別のApache立ち上げるだけでいいわけだし
mod_phpにしてもメモリ食いだし、静的ファイル用に別サーバ用意するのは当たり前だとおもってたけどな・・
それで重いといわれても〜

698 名前:nobodyさん mailto:sage [2007/10/17(水) 16:54:27 ID:???]
あと開発効率はめちゃ高いと思うぞ
大規模なサイトでも機能ごとにちゃんと分けてあげたり普通につくれば普通に便利。
てか体が慣れてるので俺の中ではウェブ系はPerl以外ありえない


699 名前:nobodyさん mailto:sage [2007/10/17(水) 16:56:24 ID:???]
あとまったくすれ違いだけどphpってphp.iniで文字コード制御とかありえねーなといつも思う
と独り言


700 名前:nobodyさん mailto:sage [2007/10/17(水) 17:16:43 ID:???]
静的ファイルの話するには100番くらいレス戻さないとダメだが。

静的ファイルで速度出したいなら lighttpd も良い選択だと思われ。

701 名前:nobodyさん mailto:sage [2007/10/17(水) 19:51:25 ID:???]
それをいったら、実行はじめたスクリプト中で ini_set('mbstring.internal_encoding', 'EUC-JP'); とか

702 名前:nobodyさん [2007/10/22(月) 16:25:52 ID:YWIr8Jbq]
専用ならHTTP::Daemonで
まるごと組んじゃうとか、どうなの?



703 名前:nobodyさん mailto:sage [2007/10/23(火) 13:31:51 ID:???]
細かい処理考えるのめんどいからmod_jk + Net::AJP13に期待


704 名前:nobodyさん mailto:sage [2007/10/29(月) 01:19:53 ID:???]
ねえねえ、ひょっとして 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さん mailto:sage [2007/10/29(月) 08:39:55 ID:???]
上のレスでさんざん既出のこれじゃないかな

rt.cpan.org/Public/Bug/Display.html?id=23920

706 名前:nobodyさん mailto:sage [2007/10/29(月) 22:49:20 ID:???]
>>705
やった〜。makeできたよママン。
ありがトン。

707 名前:nobodyさん [2007/10/30(火) 04:25:29 ID: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さん [2007/11/14(水) 00:27:32 ID: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さん [2007/11/14(水) 06:43:19 ID: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さん mailto:sage [2007/11/17(土) 13:53:14 ID:???]
ねえねえ、ひょっとして 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さん mailto:sage [2007/11/17(土) 18:28:52 ID:???]
いい加減うぜえよwww

712 名前:nobodyさん mailto:sage [2007/11/24(土) 02:37:09 ID:???]
ちょっと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さん mailto:sage [2007/11/24(土) 09:23:53 ID:???]
Blog (笑

どんなエラーかも書いてないし…これは酷い。

714 名前:712 mailto:sage [2007/11/25(日) 19:11:55 ID:???]
こりゃあきまへん。これこの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 名前:つづき mailto:sage [2007/11/25(日) 19:12:31 ID:???]

で、ちょっと長くなるけど、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 mailto:sage [2007/11/25(日) 19:13:06 ID:???]
この 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 名前:たぶん終わり mailto:sage [2007/11/25(日) 19:13:42 ID:???]
激しく無理やりな解決方法としては、
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 が追加されるんで、「お、出来たか」と思ったけど、
だめなんだよ。

718 名前:ほんとに終わり mailto:sage [2007/11/25(日) 19:14:17 ID:???]
ウチの環境(Cent4、Cent5共に)だと、$LD_LIBRARY_PATH変数が、環境変数ではなくて、SHELL変数扱いになる。
前もって、exportしといても、引き継いでくれない。
上の例みたいにワンライナーなり、直接perlを呼べば変数が生きたままになるんだけど、
対象がmakeだと、makeのなかで、何段にもbashを呼び出す(子プロセス扱い)もんで、この$LD_LIBRARY_PATHを継承してくれないようだ。
Fedoraでもこうなるみたい。(Fedora.jpにLD_LIBRARY_PATHがらみのスレにあった。)

ここらへん、自分もあんまり理解がないのと、WebProg板っぽくないので、ム板の方にちょっと出張してきたんだけど、
まだよくわからない。(コレ関係はこれから調べるつもり)

LIBPATHを制御できたら、make test する時にちょこっとコマンド足せばいけそうだけど、出来ないとなったら、
Makefileなり、TESP.PLがらみを書き換えないといけない。(ちょっとで済みそうにない。)
あるいは、/etc/ld.so.confとかあたりかな?

ぶっちゃけ一番簡単な方法は、testしないか、
本末転倒になっちゃうけど、/usr/libなりにso一式をコピー(インストール)してから、testかけるかのどっちかだね。

でも、みんな躓かなかったのか?
2.07以前は試してないからわからんけど、2.08,2.09両方とも、いきなりやって一発目でうまくいかんだろこれじゃあ。
(ってか、make test する以上、絶対コケるようにしか思えないんだが・・・)

719 名前:nobodyさん mailto:sage [2007/11/25(日) 20:48:10 ID:???]
今日吉野家行ったんだけどさ
まで読んだ

720 名前:nobodyさん mailto:sage [2007/11/26(月) 12:58:45 ID:???]
このスレってみんなが libapreq2 を試すようなスレじゃないと思うよ

721 名前:nobodyさん mailto:sage [2007/11/26(月) 13:24:06 ID:???]
さあ検証内容とpatchをbugリポートに送ってみんなを幸せにするんだ

722 名前:nobodyさん [2007/12/02(日) 08:44:17 ID:1DkmgRhY]
今北産業



723 名前:nobodyさん mailto:sage [2007/12/10(月) 11:46:51 ID:???]
これについてわかる方いますか?
pc11.2ch.net/test/read.cgi/php/1018333172/580-581

環境は、
OS:centos5
httpd-2.2.3-11.el5.centos
mod_perl-2.0.2-6.3.el5
になります。

724 名前:nobodyさん mailto:sage [2007/12/10(月) 20:27:41 ID:??? BE:284169964-2BP(1520)]
add-handler あたりかな?

725 名前:723 mailto:sage [2007/12/10(月) 21:05:41 ID:???]
>>724
ありがとうございます。
早速試してみたところ、無事解決しました!うおおお!

■変更前
<DirectoryMatch "/home/aaa/cgi-bin/(.*.cgi)">
  SetHandler perl-script
  PerlResponseHandler ModPerl::Registry
  PerlOptions +ParseHeaders
  Options ExecCGI +MultiViews
</DirectoryMatch>

■変更後
<Directory "/home/aaa/cgi-bin/">
  AddHandler perl-script .cgi
  PerlResponseHandler ModPerl::Registry
  PerlOptions +ParseHeaders
  Options ExecCGI +MultiViews
</Directory>

■設定3で追記した通常のCGIで動作させるDirecitoryディレクティブは削除

726 名前:nobodyさん [2008/02/18(月) 21:32:41 ID:aEv1JCZt]
Apache2.2.8、PHP5.2.5、mod_fastcgi2.4.6使用。
100MBとかの大きなファイルをPHPにアップロードしている最中、
startDelayごとに新しいプロセスが起動されてしまう。
maxClassProcessesかmaxProcessesに到達するまで続く。
どうにかならないでしょうか?

727 名前:726 [2008/02/19(火) 18:33:58 ID:3qklWUbG]
mod_fastcgiのソース見たら納得。
WebサーバーからFastCGIサーバーへの、CGIでいうところの標準入力は
すぐ完了するという仮定でコードが書かれてて、
時間がかかる⇒FastCGiサーバーがハング という想定なのね。
ちょこっとパッチ当てるだけじゃ解決できないっぽい…?
参ったなあ

728 名前:nobodyさん mailto:sage [2008/02/19(火) 21:41:50 ID:???]
あー、俺も FastCGI 経由で応答に5秒以上かかる検索クエリ動かしたら異常終了したことがあったんだが、原因は>>727と同じか?


729 名前:726 mailto:sage [2008/02/19(火) 22:41:08 ID:???]
mod_fcgidはリクエストを全部いったんモジュール内でバッファリングしやがる。
おかげでhttpdが150MBメモリ使ってしまった。
メーリングリストを見ると、MaxRequestInMemディレクティブを使えとのことだが、
症状は変わらない。例え動くとしても、
fastcgi.coremail.cn/download.htm
>If the length of http request longer than "MaxRequestInMem", it will store in tmp file.
結局ファイルにバッファリングするだけみたいだし。

Apacheが異常終了したのか、それともFastCGIサーバーが異常終了したのか

730 名前:726 mailto:sage [2008/02/19(火) 22:41:27 ID:???]
最後の1行は>>728当て

731 名前:728 mailto:sage [2008/02/19(火) 23:57:15 ID:???]
>>730
もう1年以上前の話なんでうろ覚えだが、
Internal Server Error か似たような状態になった希ガス

732 名前:nobodyさん mailto:sage [2008/02/22(金) 07:02:49 ID:???]
mod_perlなんすけど、sudoで動かないのはなぜに?

ちゃんとApache権限で呼び出してるんだけど、CGIとして動いてる。
他のも一緒?



733 名前:732 [2008/02/24(日) 01:02:41 ID:9eLfTMt1]
うう;;
誰か教えておくれ。

あと、mod_perlって標準出力も違う?
Image::Magickで標準出力しようとして、
$image->Write('jpeg:-');
の部分でエラー。ファイル場所がおかしいって。

指定方法を変えれば標準出力できる?

734 名前:nobodyさん mailto:sage [2008/02/24(日) 02:11:15 ID:???]
とりあえずもちついて状況を説明汁

735 名前:nobodyさん mailto:sage [2008/02/24(日) 02:43:34 ID:???]
Perlのアクセラレーター
rintaro.dip.jp/program/apbench/index.html

このページ繋がらなくなっちゃってるなー
このスレの人のベンチがあったからたまに見てたんだが
自宅鯖だったんだろな

736 名前:nobodyさん mailto:sage [2008/02/24(日) 16:59:49 ID:???]
>>733
mod_perlだとforkするわけじゃなくevalされるからsudoの入り込む余地は無いんじゃないか。

>ファイル場所がおかしいって。
標準出力はSTDOUTで同じ。カレントディレクトリがルートになってるよ多分。
print `pwd`;とかで調べて絶対パスで指定するか始めにchdir。

737 名前:nobodyさん mailto:sage [2008/02/24(日) 17:06:50 ID:???]
回答がちょっとずれてたごめん。
STDOUTに出力してるのに「ファイル場所がおかしいって」ってエラーが出るのか
私もわからんです。

738 名前:732 [2008/02/24(日) 18:56:01 ID:9eLfTMt1]
>>734
sudo -u apache /var/www/hoge.cgi
で動かしたいんだけど、permissionエラーになるの。
当然って言えば当然なんだけど、mod_perlならパーミッション関係なく動くよね?
これはapacheが予めコンパイルしてるからだろうけど、そのコンパイル済みのperlとして呼び出したいんだけどなぁ。

つまり、cronをはじめ、外部から呼び出す時にはmod_perlで動かす事は不可能って事でよいのかな?
url叩けばmod_perlとして動くのかな?
それと他のspeedyとかでも挙動は同じなのかなって質問です。


標準出力についての質問は、
普通"-"で標準出力を指すよね?mod_perlではこれを標準出力として認識しないようなんですが。


739 名前:732 [2008/02/24(日) 19:12:29 ID:9eLfTMt1]
>>736
あ。ありがとうございます。

標準出力についてですが、そもそも標準出力ってオンメモリーみたいなものだと思ってたのですが、
俺の勘違いでしょうか?
フルパスでどこを指定すればよいのでしょうか?

740 名前:736 mailto:sage [2008/02/24(日) 19:43:44 ID:???]
>sudo -u apache /var/www/hoge.cgi
>で動かしたいんだけど、permissionエラーになるの。
>当然って言えば当然なんだけど、mod_perlならパーミッション関係なく動くよね?
mod_perlは独自にapache権限で実行権限があるか調べています。

>これはapacheが予めコンパイルしてるからだろうけど、そのコンパイル済みのperlとして呼び出したいんだけどなぁ。
>つまり、cronをはじめ、外部から呼び出す時にはmod_perlで動かす事は不可能って事でよいのかな?
>url叩けばmod_perlとして動くのかな?
mod_perlは初回プログラム実行時に実行状態のままapacheプロセスの中で待機します。
なのでcronやコンソールから呼び出すときには必ずapacheを通さなければいけません。

>それと他のspeedyとかでも挙動は同じなのかなって質問です。
speedycgiではお望みの動作をします。独自にプロセスを立ち上げるのでapacheには依存しません。
cronやコンソールからの実行でも高速に動作することが可能です。面倒なsocketの管理も勝手にやってくれます。

>普通"-"で標準出力を指すよね?mod_perlではこれを標準出力として認識しないようなんですが。
エラーの原因は標準出力部分ではないと推測します。
出力以前に
$Image->Read('./hoge.jpg');
等をしていませんか?
mod_perl2から標準ではカレントディレクトリの位置がスクリプトを置いたディレクトリ
にならないためno such〜エラーが発生していると思われます。

741 名前:732 [2008/02/24(日) 21:05:56 ID:9eLfTMt1]
>>740
詳しい説明ありがとうございました。
なるほど。やはりmod_perlですとcronからはURLとして叩く(Apacheを通す)しかないのですね。
speedycgiは挙動が違うというのも非常に知りたい情報でした。ありがとうございます。

標準出力についてですが、
$image->Read('フルパス');
としています。その時点ではエラーは吐いておらず、
$image->Write('フルパス');
としてファイルに書き込む場合は同じく問題ないのですが、

$image->Write('jpeg:-');
と標準出力に出力しようとした場合にエラーとなります。

742 名前:732 [2008/02/24(日) 21:10:29 ID:9eLfTMt1]
>>740
お詳しいようなのでもう一点質問して良いですか?
mod_perlだとDBとの接続も維持したままになると思いますが、それはspeedyCGIでも同じでしょうか?

なぜcronでmod_perlとして動かしたいかというと、そこにあるので。




743 名前:nobodyさん mailto:sage [2008/02/24(日) 21:59:41 ID:???]
> $image->Write('jpeg:-');
> と標準出力に出力しようとした場合にエラーとなります。
それはWrite時に初めてリード時のエラーを指摘されているだけだと思います。
$image->Read('フルパス') or die $!;
とすればRead時にエラーが発生しているのが分かるかと思います。

>mod_perlだとDBとの接続も維持したままになると思いますが、それはspeedyCGIでも同じでしょうか?
speedyCGIでもコネクションプーリングする事は可能です。
但しmod_perlのApache::DBIのようにトランスペアレントではありませんから
自分でDBハンドルを再利用するようにロジックを組む必要があります。
もしかするとspeedyCGIからでもApache::DBIが利用できるかもしれませんが試したことが無いので分かりません。

744 名前:732 [2008/02/24(日) 22:49:11 ID:9eLfTMt1]
>>743

ありがとうございます。
ご指摘の通り、Readの時点でこけます。
フルパスで指定しているのに、なぜNo suchが出るのでしょうか?
それとファイルに書き込む時は(or dieをつけなければ)そのままエラー無く処理が完了します。

試しに標準出力ではなくファイル書き込み時ではReadの時点でInappropriate ioctl for deviceというエラーになります。
なぜエラー内容が変わってくるのでしょうか?

pwdの結果は/でしたのでフルパスの指定は間違いないと思うのですが。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef