PythonでWebサイト構築1

Pythonを使ったWebサイトの触りをやってみようと思います。

Pythonのバージョンを確認する

[xxx]$ python -V
Python 2.7.5

Pythonのパスを確認する

[xxx]$ which python
/usr/local/bin/python

.htaccessを設置する

.htaccessの内容です。

## Designate a page when users access to URL ending with "/"
DirectoryIndex index.py

## Make files with extension ".py" CGI execution files
AddHandler cgi-script .py

Teratermを使ってファイルをクリドラすると、下図のようにファイル転送ができます。下図の「SCP」配下の「dest:」にパスを入力しないと、ホームディレクトリに行ってしまうので注意です。操作中にディレクトリを移動していても、そこには転送できず、ホームディレクトリに行ってしまいます。

index.pyを用意する

Pythonファイルを用意します。中身は以下の通りです。

#!/usr/local/bin/python 

import sys 

sys.stdout.write('Content-type: text/html; charset=UTF-8')
sys.stdout.write('\r\n\r\n')

print "This is my first try to develop a web server with Python!"

一行目は、Python(exe)の場所を指定しています。

#!/usr/local/bin/python

これはShebangと言うらしいです。こちら(https://techacademy.jp/magazine/22254)を参考にしました。

時々「# coding: utf-8」という記載がありますが、UTF-8はPythonのデフォルトなので、UTF-8の場合は書くことがむしろ非推奨となっています。

以下の2行は「標準出力にデータを書き込む」という意味らしいです。おそらくですが、stdがstandard(標準)でout(出力)、書き出しなのでwriteといったところだろうと想像します。

sys.stdout.write('Content-type: text/html; charset=UTF-8')
sys.stdout.write('\r\n\r\n')

ブラウザでアクセスすれば、ブラウザへの出力となるので、ちゃんと表示されるのかな・・・と想像してます(やったことないもので)

index.pyを配置

結果を確認します。

[xxx]$ ls -a1 
. 
.. 
.htaccess index.py

ブラウザでアクセスしてみる

index.pyを配置したパスにブラウザでアクセスしてみました。

アクセスできませんでした。

権限を変更する

権限の変更が必要なことを忘れていました。

chmodコマンドで755を設定するようです。こちら(https://qiita.com/shisama/items/5f4c4fa768642aad9e06)を参考にしましたが、「755」の「5」とは「読み取り」と「実行」の権限をあたえ、「書き込み」の権限を与えないことになります。いまいち理由は分かっていませんが、少なくとも「書き込み」の権限を誰彼構わず与えてしまうと改ざんし放題なので、そこは理解できます。

[xxx]$ ls -l
total 1 
-rw-r--r-- 1 stickyglue hpusers 196 Apr 15 15:24 index.py 
[xxx]$ chmod 755 index.py 
[xxx]$ ls -l
total 1 -rwxr-xr-x 1 stickyglue hpusers 196 Apr 15 15:24 index.py

再度ブラウザでアクセスしてみる

同様です。。。何か設定が足りていないのでしょう。

次は…

おそらく何か設定が足りていないような気がします。ユーザがインターネットを通じてアクセスして、コンテンツを表示させる前提条件のようなものが必要な気がしますので、調べてみます。

よっさん
  • よっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後某日系IT企業でグローバル案件に携わる。マレーシアに1.5年赴任した経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。

コメントする

メールアドレスが公開されることはありません。