Pythonを用いたCGIスクリプティング入門Beginner's Guide(1/2 ページ)

CGIスクリプティングの世界を席巻している言語がPerlなのは確かだが、Perlより優れているはずのツールも幾つか存在している。本稿ではPythonを用いたCGIスクリプティングの世界を簡単に紹介しよう。

» 2008年06月07日 05時00分 公開
[Robert-D.-Currier,Open Tech Press]
SourceForge.JP Magazine

 Web開発者にCommon Gateway Interface(CGI)スクリプティングについての質問をすると、返ってくる大多数の回答はおそらく「Perlを使っています」というものだろう。かなり以前からCGIスクリプティングの世界を席巻している言語がPerlであるのは確かだが、それ以外の選択肢がない訳でもなく、むしろPerlより優れているはずのツールも幾つか存在しているのである。よって本稿では1つのチュートリアルとして、高速かつ多機能でマルチプラットフォームに対応したPythonを用いたCGIスクリプティングの世界を簡単に紹介することにしよう。

 インタプリタ型のオブジェクト指向言語としてグイド・ヴァンロッサム氏の開発したPythonは、イギリスのテレビ番組『空飛ぶモンティ・パイソン』にちなんだ名称が冠せられているが、その初回リリースは1991年と意外に古く、今では、Google、NASA、ForecastWatch.comなど多数の企業や組織にてスクリプティング言語としての用途に供されるようになっている。

Pythonの使用を開始する前の準備

 このチュートリアルでは、Pythonについて最低限の使用経験のある読者を想定している。まったくの初心者という場合は、「Python Tutorial」「Python Reference Manual」などPythonに関する優れた参考資料が多数オンライン公開されているので、事前にそちらを一読して頂きたい。

 最初の確認事項として、開発作業に用いるシステムにPythonがインストールされている必要がある。Pythonのインストールおよびパス設定が既に済んでいれば、シェルプロンプトに続けて「python -V」というコマンドを実行することでバージョン番号(このチュートリアルで用いたものは2.5.1)が表示されるはずだ。Pythonがインストールされていない場合は、yumやapt-getなどのパッケージ管理ツールを用いて各自のリポジトリからPythonのダウンロードとインストールを行っておく必要がある。

 手元のシステムにPythonがインストールされていれば次のステップとして、各自の利用するWebサーバの設定にてCGIスクリプティングが実行可能となっているかを確認する。なおこのチュートリアルの場合は、Apache Webサーバの使用を想定している。またrootないしsudoでのアクセス権限を有していないユーザーが以下の設定変更を行う場合は、システム管理者によるサポートが必要となるはずだ。

 次のステップとして/etc/httpd/conf/httpd.confを開き、サーバスクリプトの格納ディレクトリを指定している「#ScriptAlias: This controls which directories contain server scripts.」で始まるテキストブロックを特定し、次のような設定が施されているかを確認する。

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#

# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased

# CGI directory exists, if you have that configured.

#

<Directory "/var/www/cgi-bin">

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>


 各自のhttpd.confファイルがここに引用した設定と完全に一致していないこともあるだろうが、心配することはない。現在ではCGIスクリプティングの許可を前提としたインストレーションが大部分を占めるようになっており、設定ファイルの中にはCGI関連の指定行がコメントアウトされているだけのものもあるからだ。そうした場合、ScriptAliasディレクティブの先頭が#という記号で始まっているはずなので、この記号を削除した上で httpd.confファイルを保存し、「/etc/init.d/httpd restart」によってApacheを再始動させる。

最初のサンプルスクリプト

 まずはテキストエディタを用いてexample1.pyという名称のファイルを作成し、後記のコードを入力する。

#!/usr/bin/python

print "Content-type: text/html"

print

print "<html>"

print "<center>Hello, Linux.com!</center>"

print "</html>"


 このファイルについては保存先を/var/www/cgi-binとしておき(rootないしsudoのアクセス権限が必要)、さらに「chmod 755 example1.py」による実行パーミッションを設定しておく。

 次にWebブラウザを起動し、http://yourtesthost.com/var/www/cgi-bin/example1.pyなど先のファイルにアクセスするためのURLを指定してブラウザでの読み込みを行う。ただしこの操作に関してはWebサーバ経由でファイルを転送させる必要があるので、File→Openメニューの選択によるファイルオープンをしてはいけない。以上の手順に問題がなければブラウザウインドウの中央に“Hello, Linux.com!”という文字列が表示されるはずだが、表示されない場合はexample1.pyをダブルクリックしてここでのサンプルコードと食い違いがないかを確認して頂きたい。例えばこのコードでは、3行目にある一見すると単に空行を設けているだけのprint行が重要な意味を有している。つまりWebサーバは"Content-type: text/html"というエントリの次に空行を必要とするのであり、この空行がないと内部サーバエラーが生じてしまうのだ。

 コードのシンタックスをチェックする簡便な方法は./example1.pyというコマンドによってファイルを直接実行させることである。指定したファイル中のコードに問題がなければPythonによるファイルの実行結果として、プレインテキストで対応するHTMLコードが出力されるはずだ。ただしこのテクニックはシンタックスのチェックには便利だが、より複雑なCGIスクリプトに対するデバッグまで行えるというものではない。すべてのCGIスクリプトがコマンドラインから正しく実行できるものだとは限らないし、またコマンドラインからは正常に実行できたスクリプトであっても、Webサーバが呼び出した際にはクラッシュするというケースも存在するからである。

 より高度なスクリプトを構築する場合、各自が用いているコード開発用のツールキットに若干の追加を行わなくてはならない。例えば次に解説するのも、そうした目的に基づくcgiおよびcgitbモジュールの使用法である。

       1|2 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ