webサイトを作る

  • 2020.03.22
  • CGI
NO IMAGE

動的なレスポンスを返すwebサイトはPHPやPerlなどで作る事が多いですが、Pythonでも作る事ができます。

今回はXServerで動作するwebサイトに挑戦します。

サーバーの準備

まずはサーバーの設定を行います。

XServerの場合、対象のドメインの.htaccessファイルに次の行を追加しましょう。

AddHandler cgi-script .py

これで、.pyファイルがサーバー上で実行されるようになります。サーバーの準備はこれだけです。

PythonのCGIを作る

とりあえず、文字列を表示するだけのCGIを作ってみましょう。

ソースコードはこんな風になります。

#!/usr/bin/env python3.6
# -- coding: utf-8 --

import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

print("Content-type: text/html; charset=UTF-8\n")
print("<html><body>やあ、これがHTMLの出力だよ。</body></html>")

1行目と2行目は、サーバーにこれがUTF-8で書かれたPythonのコードであることを伝えています。

また、import~sys.stdoutまでの行は、Pythonの標準出力をUTF-8にするためのおまじないのようなものです。

そして最後の2行は、HTMLのレスポンスをそのままprintしています。

そのまま実行すると、このように出力されます。

Content-type: text/html; charset=UTF-8

<html><body>やあ、これがHTMLの出力だよ。</body></html>

このプログラムを、UTF-8、改行コードをCRLFにして保存しましょう。

サーバーにアップロードする

あとは作成したソースをFTPでアップロードします。この時、ファイルのパーミッションを705または755に設定するようにしましょう。

URLを開いてテスト

最後に、アップロードしたURLを開きましょう。

無事実行されました。