- PR -

Tomcat+Apacheでバーチャルホスト設定を行った時CGIが動きません。

投稿者投稿内容
JJ
ベテラン
会議室デビュー日: 2003/02/25
投稿数: 61
投稿日時: 2004-02-03 10:02
■開発環境は下記の通りです
 RedhatLinux 8.0
 j2sdk-1_4_1_01
 tomcat-4.1.24
 apache-2.0.43
 perl v5.8.0

apacheとtomcatの連携を行い、
バーチャルホストの設定をしました。
html,jspファイルは問題なく動くことが確認できました。
しかし、cgiがでフォルトの場所以外では動きません。
(バーチャルでcgiが動きません。)
どのファイルの何を変更すればよろしいでしょうか?

■server.xmlの設定
<!-- hoge.○○.co.jp-->
<Host name="hoge.○○.ne.jp" debug="0"
unpackWARs="true" autoDeploy="true">

<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>

<!-- test Project Context -->
<Context path=""
docBase="/home/hoge/public_html"
debug="0"
reloadable="true"
crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_std_log."
suffix=".txt"
timestamp="true"/>
</Context>
</Host>


■httpd.confの設定
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl

<VirtualHost 192.168.xxx.xxx>
ServerName hoge.○○.ne.jp
DocumentRoot /home/hoge/public_html
ScriptAlias /cgi-bin/ "/home/hoge/public_html/cgi-bin/"
</VirtualHost>

■workers2.properties
[uri:hoge.○○.ne.jp/*]
info=Map http://hoge.○○.ne.jp/

よろしくお願いします
ちば
大ベテラン
会議室デビュー日: 2003/02/14
投稿数: 114
お住まい・勤務地: 都内勤務
投稿日時: 2004-02-03 10:21
JJさんはじめまして。

少し前に同じようなレスがありますが・・・

httpd.confの
<VirtualHost 192.168.xxx.xxx>
の前の行に

NameVirtualHost 192.168.xxx.xxx:80
と書かないといけないと思いますよ。
JJ
ベテラン
会議室デビュー日: 2003/02/25
投稿数: 61
投稿日時: 2004-02-03 14:01
ちば様 ご回答ありがとうございます。

「NameVirtualHost 192.168.xxx.xxx:80」
はすでに設定済みです。
「NameVirtualHost 192.168.xxx.xxx」でも試しましたが、
動作は変わらないようです。

apacheのみでのバーチャル設定の経験はあるのですが、
今回は、Tomcatとapacheが連携しています。
htmlとjspファイルは問題なく動作しますが、
バーチャルでのCGIのみ動かない。
動かないというよりも、ページが見つかりませんと出ます。
(デフォルトの場所では動きます)

よろしくお願いします
水無月 遊々
大ベテラン
会議室デビュー日: 2003/10/22
投稿数: 139
お住まい・勤務地: お星様☆彡
投稿日時: 2004-02-03 21:07
こんにちわっ! 水無月 遊々です。

引用:

■httpd.confの設定
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl

<VirtualHost 192.168.xxx.xxx>
ServerName hoge.○○.ne.jp
DocumentRoot /home/hoge/public_html
ScriptAlias /cgi-bin/ "/home/hoge/public_html/cgi-bin/"
</VirtualHost>



 CGIなのでたぶん、apache単体の問題だと思います。
気になるのは「Options None」の部分ですね。
「Options ExecCGI」だと思うのですが…。
VirtualHostの設定をコメントアウトしてCGIが動作するか
確認してみてはいかがでしょう?^^;
ueshin
会議室デビュー日: 2003/01/30
投稿数: 10
お住まい・勤務地: 東京都
投稿日時: 2004-02-03 22:05
JJさん、はじめまして。
よろしくお願いします。ドキドキ。

水無月 遊々さんの
引用:

CGIなのでたぶん、apache単体の問題だと思います。
気になるのは「Options None」の部分ですね。
「Options ExecCGI」だと思うのですが…。
VirtualHostの設定をコメントアウトしてCGIが動作するか
確認してみてはいかがでしょう?^^;


も、あると思いますが、workers2.propertiesの設定
引用:

■workers2.properties
[uri:hoge.○○.ne.jp/*]
info=Map http://hoge.○○.ne.jp/


で、このホストへのアクセスを全てtomcatに飛ばしてるのも気になります。
これでは、apacheの設定をしても、apacheが処理する前にtomcatに飛ばされて、
tomcatがCGIを処理できない、となるような気がします。

[uri:hoge.○○.ne.jp/*.jsp]

とか、tomcatが処理すべきファイルだけを飛ばすようにしたらいいのではないでしょうか?
水無月 遊々
大ベテラン
会議室デビュー日: 2003/10/22
投稿数: 139
お住まい・勤務地: お星様☆彡
投稿日時: 2004-02-03 22:26
ども、遊々です。よろしくおねがいしまふ。m(..)m

引用:

■workers2.properties
[uri:hoge.○○.ne.jp/*]
info=Map http://hoge.○○.ne.jp/
で、このホストへのアクセスを全てtomcatに飛ばしてるのも気になります。
これでは、apacheの設定をしても、apacheが処理する前にtomcatに飛ばされて、
tomcatがCGIを処理できない、となるような気がします。



 仰るとおりですね^^; 昔、workerのマッピングで「hoge.jp/servlet/*」とかやったのですが、チェックした際に「/servlet/」配下にあるテスト用htmlが丸見えになっていて青くなったことがあります(爆) その後、「hoge.jp/servlet/*.class」と変更したのはいうまでもありません(笑)

 そうそう、apacheのアクセス制限もスルーされてしまうんですよね…^^; 知らないと結構焦るかも…。
ueshin
会議室デビュー日: 2003/01/30
投稿数: 10
お住まい・勤務地: 東京都
投稿日時: 2004-02-03 22:58
遊々さん、よろしくお願いします。
引用:

昔、workerのマッピングで「hoge.jp/servlet/*」とかやったのですが、チェックした際に「/servlet/」配下にあるテスト用htmlが丸見えになっていて青くなったことがあります(爆) その後、「hoge.jp/servlet/*.class」と変更したのはいうまでもありません(笑)

そうそう、apacheのアクセス制限もスルーされてしまうんですよね…^^; 知らないと結構焦るかも…。


#servlet用のURLって、.classまでいるんでしたっけ?と思いつつ・・・(忘れちまったぃ!)
それで、僕の場合、

[uri:hoge.○○.ne.jp/*.do]

とかやって、必ずservletをマッピングするようにしています。
#.doにするのはstruts風!?余り詳しくないですが・・・。

他には、POSTを受け取るやつは、
*.post
という名前にマッピングしてました。
例えば、bbs.postとか。

#関係ないですけど、さっきのが初投稿(ドキドキ)だったんですけど、
#デビュー日が2003/01/30になってる!?それとも初投稿日というわけではない?
水無月 遊々
大ベテラン
会議室デビュー日: 2003/10/22
投稿数: 139
お住まい・勤務地: お星様☆彡
投稿日時: 2004-02-04 12:02
こんにちわっ! 遊々です(^^)
よろしくです〜♪
引用:

ueshinさんの書き込み (2004-02-03 22:58) より:
遊々さん、よろしくお願いします。
#servlet用のURLって、.classまでいるんでしたっけ?と思いつつ・・・(忘れちまったぃ!)


 …いらないです(爆)。なんか、JAVAっぽくてかっこよかったのでとりあえず、web.xmlのマッピングの際につけてみました(笑) こーんな感じで。
--------------------------web.xml------------------------------------
<servlet>
<servlet-name>HogeHoge</servlet-name>
<servlet-class>HogeHoge</servlet-class>
</servlet>

<!-- Killed Invoker
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
-->

<servlet-mapping>
<servlet-name>HogeHoge</servlet-name>
<url-pattern>/servlet/HogeHoge.class</url-pattern>
</servlet-mapping>
--------------------------web.xml------------------------------------
 …ですが、本当はclassって使わない方がいいんでしょうね。理由は「/servlet/」パスが実在したときに、マッピングされていない「*.class」がダウンロードされてしまうからなんですが^^; セキュリティー面からは使われない識別子、たとえば「*.cls」とかにして、web.xml上でマッピング…がベストなのかな? そういった意味では「*.post」って良さそうですね(^^)

引用:

#関係ないですけど、さっきのが初投稿(ドキドキ:oops:)だったんですけど、
#デビュー日が2003/01/30になってる!?それとも初投稿日というわけではない?



 登録した日じゃないかぁ…たぶん(笑)

スキルアップ/キャリアアップ(JOB@IT)