レンタルサーバーでPythonのHello, World

スポンサーリンク
環境構築
スポンサーリンク

 前回、conoha wingで構築したPython 3.9.7でレンタルサーバー『conoha wing』のwebページでHello, Worldを表示してみます。また、フォームを使って、Pythonにスクリプトに値を受け渡すことにも挑戦してみます。

サーバーの設定(ディレクトリ構成と.htaccessの準備)

 レンタルサーバーのwebページで「python」をディレクトリを作成し、その中でPythonのコードを使っていきます。同じドメインでWordPressのブログも管理しているので、そこにプログラミング関連のファイルを置くようにします。「python」以下のディレクトリでPythonをCGIとして使えるように、「python」のディレクトリに「.htaccess」ファイルで設定を記述します。これで、Pythonのコードを認識してもらえるようになります。

ディレクトリ構成
$HOME
 ┗ public_html/
   ┗ ドメインのディレクトリ/
     ┗ python/
       ┣ .htaccess
       ┣ index.html
       ┣ hello.py

 おそらく「ドメインのディレクトリ」直下にも「.htaccess」はあると思いますが、こちらの方は、私の場合、WordPress用のページの設定なので触らず、新しく作ったpython/の下に新しく「.htaccess」を作ります。テキストエディタで作って、ftpで送れば、OKです。

Options +ExecCGI
AddHandler cgi-script .py

HTMLファイルの準備

それではindex.htmlを作っていきます。今回はボタンを押したら、「Hello, World! xxxさん」って言ってくれるページを作ってみます。Formに名前を入れてボタンを押したら、hello.pyに処理を渡すプログラムです。

<!DOCTYPE html>
<html>
<head>
    <title>トップページ</title>
</head>
<body>
    <h1>お名前をどうぞ!</h1>
    <form action="hello.py" method="POST">
        <input type="submit" name="submit" value="送信">
    </form>
</body>
</html>

Pythonスクリプトの準備

 続いて、hello.pyを作っていきます。冒頭部分には、PythonのPATHを書きます。もし、わらかなければ、コマンドで「which python3」と打てば、教えてくれます。

 インポートするライブラリはいずれもデフォルトでPythonに入っています。ひきつづて、おまじないでエラー回避のコードを入れます。フォームからは、cgi.FieldStorageのインスタンスを通して、入力内容を受け取ります。

 最後にhtml文を記載し、入れたいところに、format文で名前を挿入します。

#!/home/cxxxxxx/local/python/bin/python3

import cgi
import cgitb
import sys
import io


# 受け渡し時の文字コードでのエラー回避
sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

# エラー対策:CGI実行時にエラーが発生したらブラウザに返してくれます
cgitb.enable() 

# フォームからの文字の受け渡し
form = cgi.FieldStorage()
name = form.getvalue('input_name')

# htmlを記載
print("Content-type: text/html; charset=utf-8\n")
htmlText = """
<!DOCTYPE html>
<html>
    <head><meta charset="shift-jis" /></head>
    <p>Hello, World!!<br/></p>
    <p>{}さん!!<br/></p>
    <hr/>
    <a href="./index.html">戻る</a>
</body>
</html>
"""

# format文で埋め込んだ{}の部分にフォームに入力した名前を差し込み
print(htmlText.format(name))

ファイルのパーミッション設定

 作ったファイルをFTPでサーバーに送ります。Pythonのスクリプトは実行形式ではないといけないので、「hello.py」のパーミッションを「700」に設定します。

結果確認

 これでOKです。早速、試してみましょう。このサーバーにも置いてあります。⇒デモページ

 こんな感じです。いかがだったでしょうか。今回は、Pythonを使って、CGIに値を渡して、Hello, Worldを返してくれるページを作りました。

コメント