TomcatでのCGIの実行方法

このQ&Aのポイント
  • TomcatでCGIを動かすための手順について紹介します。
  • Tomcatでcgiを動かすためには、servlets-cgi.jarの名前変更とweb.xmlの修正が必要です。
  • また、Tomcatのみで動かす場合は、Apacheとの連携が必要です。
回答を見る
  • ベストアンサー

TomcatでのCGI

Tomcatでcgiを動かすため、以下のことをしました。 servlets-cgi.renametojar を servlets-cgi.jar に名前変更 web.xmlを修正 (<servlet>と<servlet-mapping>のコメントアウト) cgiのファイル作成 #!/usr/bin/perl print "Test"; アクセスすると、真っ白な画面しか表示されず、ブラウザでソースの表示をすると、以下のソースしかありません。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD> <BODY></BODY></HTML> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=12&topic=11945 ここの方は、Apacheと連携することで解決しています。 しかし、Tomcatのみで動かそうと思っているので、ご指導よろしくお願いいたします。

  • weird
  • お礼率37% (3/8)

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

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

@ITのスレだと↓を見るように促されてますね。 http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=Tomcat%A4%C7CGI%A4%F2%BB%C8%A4%A6 最後のweb.xmlに追加の部分は無視して、設定します。 (とりあえず、CGIを動かす。文字化けはあとで対応) んで、<TOMCAT_HOME>\webappsの下に「cgitest」でも何でも良いですが、フォルダを掘りましょう。 ※<TOMCAT_HOME>より<CATALINA_HOME>の方が良いと思うが・・・ さらに、その直下に「WEB-INF」フォルダを作り、さらにその下に「cgi」フォルダを作ります。 <TOMCAT_HOME>\cgitest\WEB-INF\cgi となりますね。 とりあえず、このフォルダ直下に「test.cgi」などというテスト用CGIでも作りましょう。 内容は、よくあるパターンの「HolloWorld」で。 ----------------------------------- #! c:/perl/bin/perl.exe print "Content-type: text/html\n\n"; print "<HTML><BODY><STRONG>Hello World!</STRONG></BODY></HTML>\n"; ----------------------------------- これで下準備は終わりです。 http://localhost:8080/cgitest/cgi-bin/test.cgi で表示されるはず、です。 それから、 #! c:/perl/bin/perl.exe の部分ですが、ちゃんとperl.exeのあるパスを指定しないとダメです。 気をつけましょう。 一応検証済みです。 動かなかったら、パスが間違ってるとか、置き場所を間違えてるとか、設定ミスとか、単純な理由だと思いますよ。

weird
質問者

お礼

I_am_aliveさんのご指摘どおりに設定したら、 無事、Hello World!が表示されました。 私は、test.cgiの書き方が間違っていたようです。 「#! c:/perl/bin/perl.exe」 のあとすぐに、 「print "Test";」としていたため、エラーとなっていました。 本当に助かりました。 どうもありがとうございました!

関連するQ&A

  • Tomcat で CGI の実行結果が表示されません

    Tomcat 6.0.24 を使って、perl または python で記述された cgi を実行したいのですが 実行されているのかされていないのか?がよくわからない状態で困っています。 ※環境は Windows XP Pro SP3 上です。 具体的には、cgi 側で単純な HTML を print し、その結果をブラウザで確認したいだけなのですが その print 結果が何も出力されません。 (ブラウザでアクセスすると、特にエラーは出ず、真っ白な画面) ◆試している cgi ソース(Perl) -------------------------------------------- test.cgi -------------------------------------------- #! c:/perl/bin/perl print "Content-Type: text/html\n\n" print "<html><body>Hello, World</body></html>" -------------------------------------------- ◆この test.cgi を配置している場所  インストールディレクトリ/webapps/ROOT/WEB-INF/cgi/test.cgi ◆ブラウザでアクセスしている場所  http://localhost:8080/cgi-bin/test.cgi ◆検証用 HTML の配置  インストールディレクトリ/webapps/ROOT/WEB-INF/cgi/test.html  →普通の HTML を確認のために配置。しかし、同様のアクセスで表示できず(画面真っ白) ちなみに、Tomcat インストール後にやったことは以下です。  1.インストールディレクトリ/conf/context.xml の 以下の部分に    「privileged="true"」という記述を追加    <Context>     /*中略*/    </Context>    ↓    <Context privileged="true">     /*中略*/    </Context>     2.インストールディレクトリ/conf/web.xml の以下の部分のコメント化を解除    <servlet>     <servlet-name>cgi</servlet-name>    /*中略*/    </servlet>    <servlet-mapping>     <servlet-name>cgi</servlet-name>     <url-pattern>/cgi-bin/*</url-pattern>    </servlet-mapping>  3.上の1、2では perl を実行してくれないので、    インストールディレクトリ/conf/web.xml に以下を追加    <init-param>     <param-name>executable</param-name>     <param-value>C:\Perl\bin\perl.exe</param-value>    </init-param>     ↓結果的に    <servlet>     <servlet-name>cgi</servlet-name>    /*中略*/     <init-param>      <param-name>executable</param-name>      <param-value>C:\Perl\bin\perl.exe</param-value>     </init-param>    </servlet> 以上ですが、何かヒントになるようなことでもよいので、識者の方、アドバイスをお願いいたします。

    • 締切済み
    • CGI
  • tomcatでCGIが動きません

    tomcatをwebサーバーにしてCGI(Perl)を動かそうとしています。 非常に単純なCGIを適切な場所に配備して動作させようとしていますが、 ネスケにて「ドキュメントにデータが含まれていません。」のエラーが 発生してしまいます。tomcatのlogsディレクトリーのログを見ると、 . . 2003-11-14 11:28:12 cgi: findCGI: FOUND cgi at C:\Program Files\...\webapps\test\WEB-INF\cgi\test.cgi . 2003-xx-xx 11:28:12 cgi: runCGI (stderr):Can't open perl script "C:\Program": No such file or directory 2003-xx-xx 11:28:12 cgi: runCGI: 1 lines received on stderr と出ているので、CGIは見つけているみたいですが、runCGIにてc:\programを探そうとして失敗している様です。 tomcatのインストール先はc:\program files\apache group.....なのですが、 結局のところ、tomcatのインストール先ディレクトリーにブランクがあると×という事なのでしょうか? 勿論、tomcatでCGIを使用する場合の各種設定(servlets-cgi.renametojarのりネームや、web.xml内の マップのコメントはずし等)は行っています。CGIは以下です。 #!C:/usr/local/bin/perl.exe print "<HTML><BODY>Helloworld</BODY></HTML>"; 環境は os:win2000 web server:tomcat4.1.27 active perl5.8 駄目ならば、apacheをwebサーバーにして再挑戦しようと思います。お願いします。

    • ベストアンサー
    • CGI
  • CGIでのPC内でのテストで画面が真っ白に・・・

    はじめまして、初めてこちらに質問をさせていただきます。 早速なのですが現在AnHttpdとactive perlを使ってCGIをテストしているのですがCGIにアクセスすると画面が真っ白になりソースも <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD> <BODY></BODY></HTML> このようになってしまいます。 パソコンの設定かと思いリカバリーなど行ってみたのですが状況がまったく変わりません。 ウェブサーバー上ではまったく問題なくCGIは動くのですが・・・ 初めてでして質問の場所など違ってましたら申し訳ございません。 どなたかわかられる方いらっしゃいましたらぜひご教授お願いいたします。

    • 締切済み
    • CGI
  • jsp実行時にダウンロードダイアログが表示される

    こんにちは 昨日に引き続き質問させてください。 以下のコードのJSPを実行すると ファイルのダウンロードダイアログが 表示されてしまいます。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25429&forum=12&8 に似たような質問があったのですが 解決していないようです。 ここにいらっしゃる方ならご存知かと思い質問しました。 ご回答よろしくお願いします。 ===================================================== <%@page contentType="text/html ; charset=Windows-31J"%> <HTML> <HEAD> </HEAD> <BODY> <% String test="test"; %> <%=test%> </BODY> </HTML>

  • 1つのhtmlページにたくさんのCGIを表示したい

    1つのhtmlページにたくさんのCGIを表示したいのですができますか? "Content-type: text1/html\n\n" /* ** CGI版のhello.c(HTML仕様) */ #include <stdio.h> main(){ printf("Content-type:1/html\n\n"); /* ここから HTML でお馴染みのタグ */ <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> /* あいうえお */ "Hello C World!<BR>\n" "</BODY>" "</HTML>" } みたいなCGIを入れたいのですが。

    • 締切済み
    • CGI
  • Hyper Estraierのcgiが結果表示をしてくれません。

    Windows2000サーバー・Apache2.0で動作しているHyper Estraierのcgiを、設定ファイルやインデクスともどもWindows Server2003のIISのサーバに移動したところ、cgiにアクセスしても、結果表示に何も表示されません。 (真っ白で、ソースを見ると <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD> <BODY></BODY></HTML> とのみ出力。) 試しにテスト用のcgiを同じところにおいてみたら、そちらは動作するのですが・・・ 考えられる原因は何でしょうか?

    • 締切済み
    • CGI
  • Tomcat Servletが動きません

    『Javaへの道:Tomcat』のページを参考に同じようにやってるのですが、 JSPはうまくいくのですがServletがうまくいきません。 (長文になります) 参考ページと私の環境で違う点 Windows XP Home → XP Pro Tomcat 6 → Tomcat 7 JDK6.0 → JDK6.23 ポート8080 → 8081 以下のファイル、フォルダを作りました(参考ページそのままです)。 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\jspdir\HelloJsp.jsp C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\classes\HelloServlet.class C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\web.xml C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost\javaroad.xml --↓↓HelloJsp.jspここから↓↓-- <HTML> <BODY> from JSP source<br> <%= new java.util.Date() %> </BODY> </HTML> --↑↑HelloJsp.jspここまで↑↑-- --↓↓web.xmlここから↓↓-- <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> </web-app> --↑↑web.xmlここまで↑↑-- --↓↓javaroad.xmlここから↓↓-- <Context path="/javaroad" reloadable="false"/> --↑↑javaroad.xmlここまで↑↑-- JSPを起動 http://localhost:8081/javaroad/jspdir/HelloJsp.jsp → 正しく表示される Servletを起動 http://localhost:8081/javaroad/Hello → ステータス404 The requested resource (/javaroad/Hello) is not available. <気になる点> 1.Tomcatを起動するためStratボタン押しても1回では起動せず、2~3回で起動する。  1回目のときcommons-daemon.2011-01-15.logにこんなログが出る。  [2011-01-15 23:01:16] [error] Pid file 'C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\tomcat7.pid' exists  [2011-01-15 23:01:16] [error] ServiceStart returned 1 2.servletクラスは正しくコンパイルできているのか 状況を詳しく説明しようとして長々と書いてしましたが Servletを表示するにはどうしたらいいでしょう? 足りない情報があれば追加します。

    • ベストアンサー
    • Java
  • TOMCAT

    何度もすみません。あれから、何度か試したり、 他の方法で試したのですが、tomcatが動作出来ません。 起動させると以下の分が出ます。 Unable to locate servlet.jar, check the value of TOM_CAT どうすればいいか教えてください。お願いします

  • tomcatについて

    ■やりたいこと■ Windows98に、tomcatを導入しようと考えています。 ■設定内容■ JBuilder4をインストールした際に、インストールされる「jdk1.3」と「tomcat」をコピー。Dドライブんの直下にペーストしました。 そして、「autoexec.bat」に「JAVA_HOME」と「TOMCAT_HOME」を設定しました。 ●autoexec.batの内容 @ECHO OFF rem LH C:\WINDOWS\AU30DOS.COM rem SET BLASTER=A220 I5 D3 T4 loadhigh c:\windows\COMMAND\nlsfunc.exe c:\windows\country.sys set JAVA_HOME=D:\jdk1.3 set TOMCAT_HOME=D:\tomcat ■症状■ 「startup.bat」ファイルを動かしても、tomcatの起動に失敗します。 「http://localhost:8080/」でtomcatのページが表示できません。 ●startup.bat起動後のDosプロンプトには、以下のメッセージが表示されています。 D:\tomcat\bin> Starting tomcat in new window Using classpath: D:\tomcat\classes;D:\tomcat\lib\webserver.jar;D:\tomcat\lib\jas per.jar;D:\tomcat\lib\xml.jar;D:\tomcat\lib\servlet.jar;D:\jdk1.3\lib\tools.jar D:\tomcat\bin> ●また、「shutdown.bat」を動かすと、以下のメッセージが表示されています。 D:\tomcat\bin> Using classpath: D:\tomcat\classes;D:\tomcat\lib\webserver.jar;D:\tomcat\lib\jas per.jar;D:\tomcat\lib\xml.jar;D:\tomcat\lib\servlet.jar;D:\jdk1.3\lib\tools.jar コマンドまたはファイル名が違います. D:\tomcat\bin> ■質問■ 上記、設定にて、何かおかしな所(不足)は、ありませでしょうか? WindowsNT4.0では、上記内容にて設定できました。(環境変数の設定の仕方には違いがありますが。) また、tomcatの起動の失敗について、どこを調べたら良いかなど、アドバイスがあれば、よろしくお願い致します。

    • ベストアンサー
    • Java
  • TOMCATの設定に関して

    TOMCATの設定に関しての質問です。 OSはWinMeです。 Cの直下にあるautoexec.batファイルに 以下の3行を追加しました。 SET JAVA_HOME=C:\j2sdk1.4.0_01 SET TOMCAT_HOME=C:\jakarta-tomcat-3.2.4 SET CLASSPATH=C:\jakarta-tomcat-3.2.4\lib\servlet.jar *結果* -------------------------------------------------------------------------- C:\jakarta-tomcat-3.2.4\bin>startup Unable to set CLASSPATH dynamically. Note: To set the CLASSPATH dynamically on Win9x systems only DOS 8.3 names may be used in TOMCAT_HOME! Setting your CLASSPATH statically. Using CLASSPATH: C:\jakarta-tomcat-3.2.4\classes;C:\jakarta-tomcat-3.2.4\lib\ant .jar;C:\jakarta-tomcat-3.2.4\lib\jasper.jar;C:\jakarta-tomcat-3.2.4\lib\jaxp.jar ;C:\jakarta-tomcat-3.2.4\lib\servlet.jar;C:\jakarta-tomcat-3.2.4\lib\webserver.j ar;C:\jakarta-tomcat-3.2.4\lib\servlet.jar;C:\j2sdk1.4.0_01\lib\tools.jar 環境変数のための領域が足りません. Starting Tomcat in new window -------------------------------------------------------------------------- 原因が良く分かりません。本に書いてある通りにやったのですが、このエラーの 意味を教えていただけないでしょうか?

    • ベストアンサー
    • Java