こんにちは、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を実行してみる!」でした。
最後までご覧いただき、ありがとうございました。