ボクは普段アプリケーションの実行環境として Tomcat を使っています。
運用で使うちょっとしたCGIなんかも Python で書いて Tomcat の上で動かしちゃっています。
以下は、Tomcat で Python で書いた CGI を実行できるようにするためのメモです。
Tomcat には最初から CGI 実行環境が備わっているので、ちょっとした設定だけで実行できるようになります。
CGI を実行させるための設定は、Tomcat 上で動くすべてのアプリケーションに反映させたい場合と、特定のアプリケーションにだけ設定したい場合があると思います。
どちらも設定の方法は同じで、編集するファイルが異なるだけです。
- 全てのアプリケーションに反映させる場合
- $CATALINA_HOME/conf/web.xml
- 個別のアプリケーションに反映させる場合
- $CATALINA_HOME/webapps/アプリケーション名/WEB-INF/web.xml
レッツチャレンジ
1. web.xml を編集する
以下を追記します。( $CATALINA_HOME/conf/web.xml の場合は既に設定が書いてあってコメントになってるだけなのでコメントを外すだけでもいいです )
◆ファイルの上の方にの設定がいくつかあるのでその辺に ◆ファイルの下の方に cgi org.apache.catalina.servlets.CGIServlet clientInputTimeout 100 debug 6 cgiPathPrefix WEB-INF/cgi 5 の設定がいくつかあるのでその辺に cgi /cgi-bin/*
2. servlets-cgi.jar を使えるようにする
リネームするだけ
% cd $CATALINA_HOME/server/lib % mv servlets-cgi.renametojar servlets-cgi.jar
4. 動作確認
通常 Python スクリプトの1行目は下のように書くことが多いですが
#!/usr/bin/env python
これだと実行時の環境によって起動される Python が変わってくるので
自分で Python をインストールしている場合には明示的にそちらを使うように
絶対パスで指定しちゃった方が確実です。
後、拡張子はpyでなくcgiにしといた方が、他のサーバに持って行ったりすることを考えると安全です。
% cd $CATALINA_HOME/webapps/アプリケーション名/WEB-INF/ % mkdir cgi % cd cgi % vi hello.cgi #!/usr/local/bin/python <- ここ重要! # coding=utf-8 print 'Content-Type: text/html\n' print 'Hello Word'
ブラウザからアクセスしてみる."cgi-bin"になってるところに注意。
http://localhost/アプリケーション名/cgi-bin/hello.cgi
ではでは