mod_perlを使おう!
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん
01/11/07 17:42ID:+Gux2iOQ関連リンク等は>2
0254nobodyさん
03/07/29 00:08ID:VHYtOhh7よく知らないのだけど、それらの実行速度はPHPなどと比べて
速度的に遜色のないものなの?
0255無料動画直リン
03/07/29 00:13ID:2mrfBZ5M0256nobodyさん
03/07/29 00:16ID:kW5HsU6r★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安! スピード発送! 商品豊富!
★☆ http://www.get-dvd.com
☆★ 激安DVDショップ 「GETDVDドットコム」
★☆ http://www.get-dvd.com
☆★ 今すぐアクセス Let’s Go! 急げ!
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
0257252
03/07/29 19:22ID:wrNh0omf252のようなもの使うならperl使わずに
PHP使った方が無難。
速度はmod_perlならそんなにかわんないじゃないの?
といっても最近はテンプレートで表示するのが普通っぽくなってきたから
PHP+smartyもしくはmod_perl+html::templateのどっちか、
っていうわけか。
0258nobodyさん
03/07/29 19:22ID:al0J9pjRhttp://link.iclub.to/adalt/
http://link.iclub.to/amazon/
http://link.iclub.to/docomo/
http://link.iclub.to/google/
0259nobodyさん
03/07/29 22:16ID:VHYtOhh7バイナリにしてしまえば速度は速くなる?
0260nobodyさん
03/07/29 22:19ID:VHYtOhh7PHP(mod_php)に比べてmod_perlって何であんなに知名度に差があるの?
あとPHPはANHTTPDやIISなどにも対応してるけど、mod_perlは
Apacheのみだし・・・
0262nobodyさん
03/07/29 23:33ID:???0263nobodyさん
03/08/01 22:02ID:???mod_perlといえば、アパッチ::レジストリな訳で。
↓
アパッチ::レジストリといえば、オブジェクト指向必須な訳で。
↓
ところが、Perlのオブジェクト指向は痛い訳で。
↓
そんなもの使いたくないって訳で。
ってのが、現状だろう。
専用サーバだったら、他にも良い言語、アプリ鯖いっぱいあるしね。
mod_perlはマニアックなとても逸品です。
0264nobodyさん
03/08/02 01:05ID:???0265山崎 渉
03/08/02 02:23ID:???( ^^ )< ぬるぽ(^^)
0266ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:51ID:???ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
0268nobodyさん
03/08/02 06:22ID:???んなの、プログラミングする人間の勝手だと思うがな。
0269nobodyさん
03/08/26 14:21ID:???>Perlで作成したモジュールを実行する際に1度だけモジュールがコンパイルされ、メモリに常駐する。
となってますがどのくらいの時間常駐するのでしょうか。
永続的な常駐ならサーバのメモリ食いつぶしちゃうような…
#一人だけならともかく皆がやったりすると
気にするほどでもない?
0270nobodyさん
03/10/08 23:31ID:TFC4ht6F0271nobodyさん
03/10/09 06:04ID:???0272nobodyさん
03/10/09 10:48ID:???共有でmod_perlは無謀と思うのだが
0273nobodyさん
03/10/10 05:29ID:BH1wn/9y0274nobodyさん
03/10/10 13:58ID:???0275nobodyさん
03/10/10 21:04ID:???ソースを書き換えたら直りますか?
0276nobodyさん
03/10/12 09:33ID:5sejX4lfシステム領域をオーバーライドするしか方法はないだろうけど。
suexecのソースを読んでみよう
0278nobodyさん
03/10/12 09:49ID:5sejX4lfApacheは例によってapacheユーザで動作。
カーネルに関わるプログラムをsetuidして子プロセスの実行権限を動的にするしかないんじゃないだろうか。
擬似的にApacheが複数のUIDで動作すると。suexecより危険度が増すけど
0279nobodyさん
03/10/12 12:02ID:???0280nobodyさん
03/10/12 13:30ID:5sejX4lf0281nobodyさん
03/10/12 13:31ID:???0282nobodyさん
03/10/12 13:53ID:5sejX4lfCPUが追いつかない。
Apache2なら可能性はあるが
0283nobodyさん
03/10/30 15:43ID:MsIzuyZ0そうすれば普及するだろうに。
0284nobodyさん
03/10/30 15:53ID:???0286nobodyさん
03/11/04 18:16ID:???・exit();関数は利用できない。代わりに、Apache::exit();を使うそうな。
・パッケージ名を明記すると500 Internal(以下略)。(例: $main::setup)
・SuExecが有効にならない
・もし何かあったら、Apache自体を再起動しなければならない
・mod_perl用に書いたPerlScriptをCGIとして動作させたら、多分動かない。
知っている限りで。(注:正確な情報ではありません)
0287nobodyさん
03/11/04 19:42ID:???互換性の問題は速度の代償として多少は仕方ないか。
>・もし何かあったら、Apache自体を再起動しなければならない
ここら辺はmod_phpでも同じなのでは?
0288
03/11/04 20:55ID:1kmjwkimhttp://bulknews.net/lib/doc-ja/etoys.ja.html
0289nobodyさん
03/11/04 22:08ID:???・Apache::Registry 使用時なら exit は Apache::exit でオーバーライド
されていたような。
・main パッケージを明示するようなコーディングスタイル自体が問題。
・CGI プログラムとして組まれているスクリプトは Apache::PerlRun で
動かす。mod_perl 前提のスクリプトを CGI プログラムとして使うのは
おかしい。
SuEXEC が効かないのと、httpd の肥え方が激しいのがネックだと思う。
まぁ後者はサーバ分ければいいんだけど。
あと mod_perl 入れたからといって CGI プログラムが使えなくなる
わけじゃないので、Apache::PerlRun でも動かんような糞スクリプトは
割り切って CGI プログラムとして使うのも手。
0290nobodyさん
03/11/05 00:00ID:???Apache::PerlRunで満足すんなYO!
ところでさア、お金貸して?
0291nobodyさん
03/11/16 07:02ID:???みたいな感じで、テキストを置換するシステム作ってたんだが
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/ <- これファイルじゃネーし
とか出てきて少々面食らった。これはバグ? 実装上の都合?
0292nobodyさん
03/12/28 05:05ID:???0293nobodyさん
04/02/03 03:55ID:6SsHdaLm0294nobodyさん
04/02/10 21:22ID:YkFrJUBAmod_perl使ってる時にも通常のCGIとしてperlプログラム走るんですか?
0295nobodyさん
04/02/10 22:35ID:???0296nobodyさん
04/02/11 14:36ID:???HTML::Template使えますか。
0297nobodyさん
04/02/11 17:34ID:8Wm4X/2a皆さんは、
PerlSendHeader On
にしてますか?
mod_perlを使うなら Off だろ、とか、
漢なら Off にしとけ、とか、
なんかポリシーみたいなものってありますか?
0298nobodyさん
04/02/11 19:17ID:???/ ,――――-ミ
/ / / \ |
| / ,(・) (・) |
(6 つ |
| ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| /__/ / < mod_perlを使うなら Off だろ!
/| /\ \__________
0300nobodyさん
04/02/14 12:13ID:???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: 指定さ
れたモジュールが見つかりません。
_| ̄|○ファイルあるのに…
0301nobodyさん
04/02/14 12:46ID:???やっぱ、スクリプトの制限がキツくなるからってことでおk?
0302nobodyさん
04/02/14 13:15ID:???ISP屋の立場から言うと、suExecできないのが一番痛い
0303nobodyさん
04/02/14 17:02ID:???0305nobodyさん
04/02/14 21:57ID:???0306nobodyさん
04/02/16 00:45ID:???ってことはやり方が悪いという事かな……orz
>303
設計とかテストとかやるときはローカルのWin鯖でやってますが
UNIX版と違い出るんですか。
0308nobodyさん
04/02/16 12:42ID:???0310nobodyさん
04/02/16 16:28ID:???apache はwinネイティブで mod_perl が cygnus だったら 動かないとか。
もう少し詳しく書かないとなんとも言えないんじゃないかなぁ
0311nobodyさん
04/02/16 16:37ID:???ファイルは見つかっても何らかの原因でメモリへのロードに失敗している
というケースが実際にはほとんど
原因はバージョン不整合とかいろいろ考えられるが
まあ地道に切り分けるしかないな
0312nobodyさん
04/02/16 16:53ID:1pUxS5fUそして以下のテストスクリプトを二種類の方法でちゃんと動作しているのですが、
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.
0313nobodyさん
04/02/16 17:44ID:???#!/usr/bin/perl -w
use strict;
print 'content-type: text/plain; charset=EUC-JP' . "\n";
print "\n";
print `ps aux | grep perl`;
0314nobodyさん
04/02/16 17:55ID:???>'CGI-Perl/1.1' が設定されます。(通常CGIは 'CGI/1.1')
>また、'MOD_PERL' 環境変数が設定されます。(mod_perlのバージョンが設定される)
0315312
04/02/17 12:47ID:???返事ありがとう。
早速試してみようと思ったんですが、
なんか電源が入らない、、orz、、bios すら起動しねーーーー
出直してきます。。(つд`;)
0316312
04/02/18 19:28ID:???試して見ました。
## /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 は無効にしとけー、
てな事しか書いてなかったので少し不安なのです。
0317nobodyさん
04/02/18 20:04ID:???mod_perlが組み込まれている httpd のプロセスの中で動いてしまうのでsuexecは効かない
CGI経由で別プロセスで動かすからこそsuexecが有効
0318nobodyさん
04/02/29 04:50ID:yMfKis4MというCGIを自サーバーで動作させたのですが、試してみると結構な確率で真っ白な画面が
ブラウザに表示されます。
このCGIは実績があるのでこのCGIのせいではなくて、mod_perlのせいなのだと思うのですが、
解決策が全くわかりません。 助けてください・・・。
環境は、
OS: Redhat 9.0
WebServer: Apache1.3.29
mod_perl version 1.29
perl 8.5.1
です。
OS以外は全てソースからコンパイルしてインストールしました。
0319nobodyさん
04/02/29 05:49ID:???0320nobodyさん
04/02/29 07:26ID:???0321nobodyさん
04/02/29 11:32ID:???助けてやりたいのはやまやまだが
318 に書かれた情報だけでは何とも手の差し伸べようがない
error_log に何が吐かれてるか確認する前に 318 を書いたのだとしたら
君の罪は麻原並に重い
0323nobodyさん
04/02/29 11:41ID:???XREA
0324nobodyさん
04/02/29 12:07ID:???眺めたところそのスクリプトのせいのような気が……。
0325318
04/02/29 15:21ID:yMfKis4M>324
どの辺りか教えて頂ければ幸いです・・。 お願い致します。
>321
エラーは一切吐かれていませんし、ブラウザで500番エラーが
表示されることもありません。
0326nobodyさん
04/02/29 18:41ID:???mod_perl で動くかというとそうとは限らない。
0327nobodyさん
04/02/29 21:39ID:???0328nobodyさん
04/03/01 06:28ID:???mod_perlでは、正しく動きません。または、高速動作できません。
0329nobodyさん
04/03/01 10:01ID:???0330nobodyさん
04/03/01 22:21ID:???0331nobodyさん
04/03/02 21:16ID:O+pQat/oこれってmod_perlだけじゃなく、
全てのモジュールをstaticで構成しないと駄目だったのね。
mod_perlだけだと思って何度も何度もやり直してしまいました。。
0332nobodyさん
04/03/03 00:58ID:???0333nobodyさん
04/03/04 11:23ID:???ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd
としたんですが
Error: no suitable installation target found for package mod_perl
とエラーが出ます。どうしたものでしょう
0334nobodyさん
04/03/05 19:12ID:GwB2WnjSperl-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";
0335334
04/03/05 21:46ID:???スクリプトが 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 でスクリプトを書けば問題ない話なんですがちょっと↑が気になりました。
0336nobodyさん
04/03/06 10:11ID:4ILBaJdhPlease contact the server administrator, [email protected] .....
という文章がcgiを通して表示される最後に挿入されます・・・。
この文章を表示しないように設定したいのですが、httpd.confで
いじる場所もなさそうですし、どこを設定すればよいのでしょうか?
ご教授お願い致します。
0337nobodyさん
04/03/06 10:22ID:???0338nobodyさん
04/03/07 01:19ID:???printした後の処理で実行時エラーが出てるとかのような。
0339nobodyさん
04/03/07 18:30ID:???0340nobodyさん
04/03/09 05:55ID:???エスケープ無しで " が入ってると実行時エラーが出た。
注意って事で。
0341nobodyさん
04/03/09 22:03ID:???そりゃエラーになるよ
0342nobodyさん
04/03/09 23:14ID:???0343nobodyさん
04/03/14 20:00ID:???環境
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さんのどこかに不具合があるのではないかと考えたのですが、そこまででした。
どんな原因が考えられますでしょうか。
0344343
04/03/14 20:48ID:???Apacheが古いバージョンのスクリプトでコンパイルした実行ファイルを、しっかり握って離していないだけでした。_| ̄|○
元ファイルを全部消しても、ブラウザでアクセスするとまだ結果が出るのです。
握りこんだ実行ファイルを手動で消す方法はないでしょうか。
0345nobodyさん
04/03/14 21:14ID:???自分でやってみたことはないので割と無責任
0346343
04/03/15 00:47ID:???現在は、動作がおかしくなったらApacheのrestartと言うあまりクールでない手でやってます。
ありがとうございます。Apach::Reloadのmanを見てみます。
0347336
04/03/15 10:40ID:heuYMXtNと出力されています。
なんじゃこのhandlerは??? 名前が無いです・・・。
ご教授お願い致します。
0349nobodyさん
04/03/15 22:07ID:???珍しいエラーだなあ。
ちなみに何をやろうとしてそういう状態になったんだ?
Apache::Registry? Apache::PerlRun?
それとも Movable Type だか AxKit だかを PerlHandler で組み込んだ?
0350mod_perlはじめて君
04/03/23 13:29ID:3jX1Q8fVpackageつけるとSubroutine check redefinedとゆうwarningsが沢山出ちゃうんです。
でもpackage消しても
Prototype mismatch: sub Apache::ROOT::sakura::cgi_2dbin::test::test_2ecgi::check vs ()
というwarningsが出てしまうんですが、これってmod_perlの仕様なんでしょうか?
warningsが出るのが気になるタイプの人なんです僕o(_ _)o
0351ログ補完
04/03/29 13:16ID:???もしかしてApache::Registryだとopen FH, >hoge.dat でファイルを作ってくれなくなった?
0352nobodyさん
04/03/30 14:23ID:???my $foo = { hoge => 'hoge' };
だと$fooの値は消えても無名ハッシュ内の値は消えないとか
そう言う事は無いですか。
■ このスレッドは過去ログ倉庫に格納されています