こんにちは、MSKです。
今回はPythonの標準Webサーバーを使ってcgiを実行してみます。
CGIとは
Common Gateway Interfaceの略で、クライアントの要求に応じてサーバーが外部のプログラムを起動して、その結果をHTTP通信を介してクライアントに送信する仕組みのこと。
要求の度にプログラムを起動するので処理が遅く、最近は使用されなくなってきています。
Pythonの標準Webサーバーを使ってみる
Pythonには標準でWebサーバーライブラリが存在しています。
次のコマンドを打つと、コマンドを実行したディレクトリをドキュメントルートしてローカルのサーバーが立ち上がります。
python -m http.server (port番号)
ためしに、任意の場所にフォルダを作って、次のようなhtmlファイル(例えば、index.htmlとして)を置いてみます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CGIテスト</title>
</head>
<body>
<h1>CGIテスト</h1>
</body>
</html>
python -m http.server 8000などでローカルサーバーを立ち上げ、ブラウザでlocalhost:8000にアクセスすると上のHTMLファイルが実行されると思います。

Pythonの標準Webサーバーを使ってCGIを実行する
CGIを実行するには–cgiをつけて実行します。
python -m http.server (port番号) --cgi
ドキュメントルートの下にcgi-binというフォルダを作成し、その中にpythonで作成したcgiファイルを置くと実行することができます。
まずはcgiを呼び出すhtmlファイル側を作ります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CGIテスト</title>
</head>
<body>
<h1>CGIテスト</h1>
<form action="cgi-bin/test.py" method="POST">
<input type="text" name="message" value="" size="40" />
<input type="submit" value="送信" name="submit" />
</form>
</body>
</html>
次に実行するpythonファイルを作成します。
上で書いている通り、cgi-binフォルダの中に作ります。(ここではtest.py)
import urllib.parse
def get_message():
input_message = input()
input_message = urllib.parse.unquote(input_message)
parse_message = urllib.parse.parse_qs(input_message)
return parse_message["message"][0]
if __name__ == '__main__':
mess = get_message()
print("Content-type: text/html; charset=shift-jis")
print()
print("<!DOCTYPE html>")
print('<html lang="ja">')
print("<head>")
print('<meta charset="shift-jis">')
print("<body>")
print("<h1>受信したメッセージ</h1>")
print("<p>"+mess+"</p>")
print("</body>")
print("</html>")
index.htmlのテキストフィールドに文字を入れると入力した文字が表示されると思います。
最後に
pythonを使って簡単にCGIを実行してみました。
pythonには標準のWebサーバーのライブラリが備わっていて、それを使うことでpythonで作成したCGIを実行することができました。
以上、「Pythonの標準Webサーバーを使ってCGIを実行してみる!」でした。
最後までご覧いただき、ありがとうございました。
