• ベストアンサー

perlとmod_perlの併用について

同一Webサーバ上で通常のperlとmod_perlを併用することは 可能でしょうか? バーチャルホストを使用してWebページ用のディレクトリは 通常のperl仕様のWebページとmod_perl仕様のWebページと分けて 構わないのですが・・・ よろしくお願いします。

  • Perl
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#227796
noname#227796
回答No.2

Perlが必須かmod_perlが必須か、ということではなく、mod_perlを使うか使わないか、という差になるはずです。 いずれにしても、Perlは必須なので。 2つのWebページの片方は、Perlで出力するWebページ(拡張子 .cgi)で、もう片方はmod_perl仕様で出力するWebページ(拡張子 .mcgi)とすれば、先の設定でいけるんですけど。 ※.mgciを利用するなら mime.types の設定も必要か 設定については、検索するか本を購入。 っていうか、自分で調べたり、実際に試したりしてないのかな?

cosmon
質問者

お礼

実は、サーバ構築、Web関連などの作業をはじめてから まだ日が浅く(今まで汎用機専門だったもので) 毎日いろんなことでつまづいております。 mod_perlについては、一応、持っている本で調べてはいたの ですが、特別急いでいたもので、投稿させていただきました。 ご回答非常に助かりました。ありがとうございます。

その他の回答 (1)

noname#227796
noname#227796
回答No.1

可能です。 最も単純な方法としては、Apacheの設定で(httpd.confで)、特定の拡張子のファイルだけに mod_perl を適用するよう、設定することが考えられます。(他にもいくつか方法はありますが) 例えばこんな感じ、 <Files *.mcgi> SetHandler perl-script PerlHandler Apache::Registry PerlSendHeader On </Files> 検索エンジンで「mod_perl」とでも検索すれば、設定方法についてはいくらでも見つかると思います。

cosmon
質問者

補足

早速のご回答ありがとうございます。 申し訳ありませんが補足させてください。 こういった条件付きの場合ではどうでしょうか? 例えば、2つのWebページを設置して 一方のWebページは通常のperlが必須で もう一方のWebページはmod_perlが必須であるといった 仕様での切り分けはできるでしょうか? よろしくお願いします。

関連するQ&A

  • Mod_Perlについて

    こんばんは。Perlのほうとどちらに書き込むべきか迷ったのですが、こちらに・・・。 PerlでのCGIでシステム屋さんにあるシステムを作ってもらい運営を開始しました。 サーバー会社は海外のものを使っているのですが、メールやチャットでカスタマー・サービスとやり取りしているとMod_PerlとFast_CGIを使えば負荷が軽くなるから、必要なら無料でインストールしてあげるよ、と言ってくれています。 私はプログラマーでなく、あくまでビジネス側の人間なので、Mod_Perl、Fast_CGIと言われてもピンと来ないので調べて見ると Mod_Perlは CGIの負荷を減らし、スピードを速めるとありました。 また、その他の色々な説明を以下のページで 読みました。 http://d.hatena.ne.jp/keyword/mod_perl が、私にはあまりピンと来ません。 色々書かれていますが、サーバー会社が言うように、 Mod_Perlをサーバーにインストールして今用いているPerlで書かれたCGIプログラムをそのままMod_Perlに乗せたらいいだけなのでしょうか? それともシステム屋さんにもう一度連絡を取り、プログラム自体をいじらないといけない事もあるのでしょうか? またFast_CGIって何でしょうか? (こちらは検索してもいまひとつ分かりやすい説明が見つかりませんでした) 答えられる範囲だけでよいので回答頂けますと助かります。 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • mod_perlが早いと良く言いますが…

    mod_perlが早いと良く言いますが、 (1)「mod_perlを使用して動いているか、否か」を自分のホームサーバーで確認する方法。 (2)同じく、レンタルサーバーで確認する方法。 (3)mod_perlが早く動作する仕組みが、「phpがcgiモードではなくSSIみたいに動作する仕組み」とおおむね同じなのかどうか?といった点についてわかりやすく教えて下さい。 素朴な疑問です。

    • ベストアンサー
    • Perl
  • mod_perlのキャッシングに関して

    現在RedhatLinuxでapache+mod_perlを動かしています。 自作のモジュールXXXX.pmを使用した(useにて)CGIを動かしているのですが、XXXX.pmに変更を加えても、それが反映されません。 Apache::Registoryを設定しているのですが、.cgiはうまく再コンパイルされているようなのですが、.pmを使用するとうまくいきません。ディレクトリは同一です。 mod_perlのキャッシングのせいだと思うのですが、回避の方法がご存知の方がいましたら教えて下さい。

  • mod_perlとディレクトリ

    以下のhttpd.confでAliasをコメントアウトして、 http://localhost/a/にアクセスすると、 Perlの【$ENV{MOD_PERL}】の部分が【mod_perl/2.0.2】と表示されますが Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/ を有効にして、 http://localhost/にアクセスすると、 Perlの【$ENV{MOD_PERL}】の部分が【】となり、どうもmod_perlで動作していないです。 そうかといって、 <Location /a>を<Location />として全体をmod_perlすると sample.htmlなど cgi以外が正しく動作しないので、困っています。 mod_perlで動作するのは特定のディレクトリ(例えば /cgi-bin)の下限定として、 アクセス時に http://localhost/のようにあたかもpublic_htmlの下にあるように動作したいです。 #Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/ #=== conf/httpd.conf ( mod_perl 2.x ) <IfModule mod_perl.c> LoadFile "C:/usr/local/bin/perl58.dll" PerlRequire "C:/usr/Apache2/conf/startup.pl" <Location /a> PerlSendHeader On SetHandler perl-script PerlResponseHandler ModPerl::PerlRun #PerlHandler Apache::Registry Options +ExecCGI PerlOptions +ParseHeaders Allow from all </Location> </IfModule>

    • ベストアンサー
    • Perl
  • MOD_PERL2.0の起動の仕方について

    以下のキーワードをDOS窓で入力して ppm install http://theoryx5.uwinnipeg.ca/ppms/mod_perl.ppd mod_perl.so(Mod_perlモジュール)をインストールしました。 そして、httpd.confに以下のコマンドを追加して、extra.plをhttpd.confと同じフォルダに置き ##Mod_perl## LoadFile "C:/usr/local/bin/perl58.dll" LoadModule perl_module modules/mod_perl.so PerlRequire "C:/Program Files/Apache2/conf/extra.pl" #Alias /perl/ "/Apache2/perl/" <Location /perl> SetHandler perl-script PerlResponseHandler ModPerl::Registry Options +ExecCGI PerlOptions +ParseHeaders </Location> ##Mod_perl## Apacheを起動してもDOS窓は、画面に何もコメントを表示しないまま閉じてしまいます。 Mod_perlモジュールをインストールしてから、Apacheを起動するには一体どの様にすれば 宜しいかどうか教えて下さい。 ちなみに私は以下URLを参照しました。 ホームサーバの構成 http://eazyfox.homelinux.org/etc/serverspec.htm Mod_perl2.0のWin32の説明 http://perl.apache.org/docs/2.0/os/win32/config.html extra.plの内容も上の両ページに書かれている内容を埋め込んでやってみましたがどちらも結果は同様です。 どうかご教授宜しくお願いします。

    • ベストアンサー
    • Perl
  • mod_perlのキャッシュについて

    はじめまして、isi0033と言います。 下記のご回答宜しくお願い致します。 現在、レンタルサーバを借りてapache,mod_perlでシステムを構築しているのですが、潜在的なバグをもったプログラムにアクセスし、一度でも、ブラウザに『Internal Server Error』を表示されると、それがキャッシュとして残ってしまい、プログラムのバグを修正しても、『Internal Server Error』が表示されたりします。 何度かリロードすると正しく表示されるのですが、 とても安心して公開できません。 レンタルサーバでは、Apache::Registryが使われているようで、mod_perlについて色々調べると、Perlプログラムを読込んでコンパイルしたものをメモリにキャッシュするとありました。 このメモリをいったんクリアする設定or方法等、ご存知の人がいましたら、教えてください。

    • ベストアンサー
    • Perl
  • apache/mod_perlの実行エラーについて

    apacheについて質問です。分かる方、どうぞご教授下さい。 httpd.confにmod_perlの設定を記述しない場合、通常どおりapacheが起動するのですが、以下のようにmod_perlの設定を追記するとapacheがエラーで起動しません。 【mod_perlの設定】 PerlModule ModPerl::Registry PerlRequire /usr/lib/perl5/site_perl/5.8.8/startup.pl <Location /cgi-bin> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlSendHeader On Options ExecCGI </Location> 【apacheのエラー内容】 /usr/local/apache2/bin/httpd: symbol lookup error: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Apache2/ServerUtil/ServerUtil.so: undefined symbol: ap_get_server_banner httpd.confのmod_perlの設定については、他のサーバーでは問題なく起動していますので、mod_perlのconfigure時の共有ライブラリの設定に不備があるのではと思っているのですがどう設定すればいいのか分かりません。mod_perlのconfigure時のオプションは以下のようになっています。 【mod_perlのconfigure】 perl Makefile.PL \ > MP_USE_STATIC=1 \ > MP_AP_PREFIX=../httpd-2.0.63 \ > MP_AP_CONFIGURE="--prefix=/usr/local/apache2 --with-mpm=prefork" 以下、grep の実行結果です。 [root@colinux mod_perl-2.0.3]# grep -r ap_get_server_banner /usr/lib/* バイナリー・ファイル/usr/lib/httpd/modules/mod_rewrite.soは一致しました バイナリー・ファイル/usr/lib/httpd/modules/mod_proxy_connect.soは一致しました バイナリー・ファイル/usr/lib/httpd/modules/mod_proxy_ftp.soは一致しました どんな些細なことでも結構ですので、どうかご教授のほど宜しくお願い致します。 【環境】 fedora6 apache2.0.63 mod_perl2.0.4

  • mod_perlで動作しましたが、画面上に<html>が2度出現します。

    mod_perlについて、 Windowsで mod_perl 2.0.2をつかっています。 画面上に OK The server encountered an internal error or misconfiguration and was unable to complete your request. と表示されるのですが、これを表示させないようにするには、どうしたら良いのでしょうか?

    • ベストアンサー
    • Perl
  • Apacheのmod_rewriteに関してお

    Apacheのmod_rewriteに関してお教えください。 お世話になります。 色々なサイトを参考に試していますが、思う様にいかず困っています。 知恵をお借り頂けたらと存じます。 ・「mod_rewrite」を利用したメンテナンス画面の表示。 ・「F5」等で更新した際、本来の画面が表示される様、内部的な置き換えのみとしたい。 ・使用しているWebサーバは(Apache2.2系) ・「mod_proxy_ajp」を利用したコネクタ連携を行っている。 ・ホスト名によるバーチャルホスト ・configファイルに記載する方法で試し中 ・メンテ用html メンテナンス用htmlは、別途指定した「DocumentRoot」に配備しており、 同ディレクトリにイメージファイル格納用フォルダがある。 そのフォルダ内にimgファイルが配備されている。(pngファイル等) DocumentRoot Lhtmlファイル L格納フォルダ\イメージファイル 現在、Apacheの機能に関して勉強中です。 メンテナンス用画面表示用として、例えば色々なサイトに有るような、以下記載をしたとします。 --------- RewriteCond %{REQUEST_FILENAME} !(/メンテナンス画面.html|.*\.(gif|jpe?g|png|js|css|ico))$ RewriteRule ^(.*)$ /メンテナンス画面.html [R=503,P,L] --------- 「http://ホストIP/」等でアクセスした場合、ドキュメントルートを参照、意図した動きとなるのですが、 「http://ホストIP/^ユーザディレクトリ/」や、「http://ホストIP/Aliasディレクトリ/」等 一階層深いURLだった場合、メンテ用htmlは、表示されるのですが、参照イメージファイルがパス違いにより 参照出来なくなり、意図した動きとなりません。 ※ 「http://ホストIP%{REQUEST_URI}」配下を参照しようとしている。(RewriteLogより) 「RewriteRule ^(.*)$」だと全てになってしまう為、ルールを分け設定してみましたが 第3引数の指定が悪いのか設定した「RewriteRule」を全て参照し「RewriteCond」が動いてしまう。 引数や正規表現の問題だとは考えておりますが、なかなか正解に辿り着けません。 よろしくお願いします。

  • mod_perlインストール時のエラー

    mod_perl インストール中に行き詰まりました。 どこから調べて行けばよいかどなたかアドバイスお願いします。 $ make ・ ・ ld: 重大なエラー: シンボル参照エラー。libperl.so に書き込まれる出力はありません。 collect2: ld はステータス 1 で終了しました *** Error code 1 make: Fatal error: Command failed for target `libperl.so' Current working directory /export/home/Apache/mod_perl-1.29/apaci *** Error code 1 make: Fatal error: Command failed for target `apxs_libperl' ちなみに、エラーメッセージが出る前のメッセージですが以下のような感じです。 よろしくお願いします。 ・ ・ gcc -L/usr/local/lib -o libperl.so mod_perl.lo perlxsi.lo perl_config.lo perl_util.lo perlio.lo mod_perl_opmask.l o Apache.lo Constants.lo ModuleConfig.lo Log.lo URI.lo Util.lo Connection.lo Server.lo File.lo Table.lo -R /usr/ perl5/5.6.1/lib/sun4-solaris-64int/CORE /usr/perl5/5.6.1/lib/sun4-solaris-64int/auto/DynaLoader/DynaLoader.a -L/ usr/perl5/5.6.1/lib/sun4-solaris-64int/CORE -lperl -lsocket -lnsl -ldl -lm -lc 未定義の 最初に参照している シンボル ファイル main /usr/local/lib/gcc/sparc-sun-solaris2.9/3.4.6/crt1.o ap_os_dso_unload mod_perl.lo ap_null_cleanup mod_perl.lo ap_index_of_response Apache.lo ・ ・ ap_table_get mod_perl.lo ap_table_add perl_config.lo ld: 重大なエラー: シンボル参照エラー。libperl.so に書き込まれる出力はありません。 collect2: ld はステータス 1 で終了しました ・ ・

専門家に質問してみよう