最終更新: 05.12/23
以下はPerlやRubyで書かれたCGIをTomcat 5.5で動かすためのTipsです。Java JDK/SDK と Tomcat は導入済みで,既に何かwebサーヴィスが動いているところにCGIを追加する想定です。ここでもShift_JISを前提にしています。
Perl・RubyをWindows上で利用するためにActivePerl・ActiveScriptRubyを使用します。
x:
├Java
│├jdk1.5.0_06
│└jre1.5.0_06
│ └lib
│ └ext
│ └mysql-connector-java-3.1.12-bin.jar
│
├MySQL
│└MySQL Server 4.1
│ ├bin
│ │├libmySQL.dll
│ │└MySQLInstanceConfig.exe
│ ├data
│ │└webアプリ
│ │ └*.frm
│ └my.ini
│
├Perl
│└bin
│ └perl.exe
│
├Ruby
│└bin
│ └ruby.exe
│
└Tomcat
├conf
│└server.xml
├server
│└lib
│ └servlets-cgi.jar
├webapps
│├cgiアプリ
││└WEB-INF
││ ├cgi
││ │├cgiアプリ.cgi
││ │├cgiアプリ.pl
││ │└cgiアプリ.rb
││ ├classes
││ │└filters
││ │ └SetCharacterEncodingFilter.class
││ └web.xml
│├jsp-examples
││└WEB-INF
││ └classes
││ └filters
││ └SetCharacterEncodingFilter.class
│└webアプリ
│ ├logs
│ ├WEB-INF
│ │└classes
│ │ └webアプリ.properties
│ ├*.css
│ ├*.js
│ ├*.jsp
│ └*.xml
└work
└catalina
└localhost
└webアプリ
└org
└apache
└jsp
├*.class
└*.java
ActiveStateのサイトからActivePerlをダウンロードする。レジストはSkipして良い。
Download ActivePerl
- Windows MSI
ダウンロードしたexeをつついてインストール開始。
ここで環境変数を設定する。[コントロールパネル][システム][詳細]を辿って[環境変数]を開け,以下を設定。
Windowsを再起動してコマンドプロンプトを開け,いきなり以下を打ってversion番号が表示されればOK。
perl -v
COM Meets RubyのサイトからActiveScriptRubyをダウンロードする。
- ActiveScriptRuby 1.8.2.5
ダウンロードしたexeをつついてインストール開始。
ここで環境変数を設定する。[コントロールパネル][システム][詳細]を辿って[環境変数]を開け,以下を設定。
Windowsを再起動して[スタート][Ruby 1.8][ruby console]を選択し,以下をいきなり打ってヴァージョンが表示されればOK。
ruby -version
%TOMCAT_HOME%/webapps/ 下に cgiアプリ/WEB-INF/cgi/ ディレクトリを作成する。ここにCGIの本体を置くことになる。異なる言語のCGIは同居させないほうが良さげ。
%TOMCAT_HOME%/server/lib/servlets-cgi.renametojar を servlets-cgi.jar にリネイムする。
%TOMCAT_HOME%/webapps/cgiアプリ/WEB-INF/ に以下のような web.xml を設置する。
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> <!-- Shift_JIS Filter --> <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Invoker Servlet --> <servlet> <servlet-name>invoker</servlet-name> <servlet-class> org.apache.catalina.servlets.InvokerServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <!-- JSP Servlet --> <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <!-- CGI Servlet --> <servlet> <servlet-name>cgi</servlet-name> <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>6</param-value> </init-param> <init-param> <param-name>cgiPathPrefix</param-name> <param-value>WEB-INF/cgi</param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet> <!-- Invoker Servlet-Mapping --> <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> <!-- JSP Servlet-Mapping --> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jspx</url-pattern> </servlet-mapping> <!-- CGI Servlet-Mapping --> <servlet-mapping> <servlet-name>cgi</servlet-name> <url-pattern>/cgi-bin/*</url-pattern> </servlet-mapping> </web-app>
CGIだけならInvokerやJSPに関する記述は不要。
Ruby(Perl以外)の場合は CGIの<servlet>内に ruby.exe の場所を指定する。TomcatはPerlがデフォルトらしい。
<!-- CGI Servlet --> <servlet> <servlet-name>cgi</servlet-name> <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>6</param-value> </init-param> <init-param> <param-name>cgiPathPrefix</param-name> <param-value>WEB-INF/cgi</param-value> </init-param> <init-param> <param-name>executable</param-name> <param-value>x:/Ruby/bin/ruby.exe</param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet>
ここで Windowsサービスの Apache Tomcat を再起動する。
%TOMCAT_HOME%/webapps/cgiアプリ/WEB-INF/cgi/ にCGIの実行ファイルを設置する。CGI中のCharacter-setはShift_JISに調整する。
ブラウザを立ちあげて CGI を起動してみる。
http://localhost/cgiアプリ/cgi-bin/cgiアプリ.pl
http://localhost/cgiアプリ/cgi-bin/cgiアプリ.rb
http://localhost/cgiアプリ/cgi-bin/cgiアプリ.cgi
以上でインストールとセットアップはおしまい。