2015.3.13
前回に引き続き、せっかくMacを持っているならPythonで遊ぼうのコーナーです。前はSimpleserverというモジュールをインポートしてWebサーバーを立ち上げてみました。今回はもっと実践的で直ぐに遊べるPythonの遊び方をご説明していきます。Pythonを初めて触る場合、PHPなどと違いWEBへの組み込み、というかHTMLにどう組み込んで動かせばいいのか分からなくなって躓くということが多いような気がします。
今回はHTMLをPythonで表示し、実際にサーバーで動作させるところまで具体的に解説していきたいと思います。その前にストアからtextwranglerをダウンロードしておいていただくとスムーズにことが運びます。
まずPythonでサーバーを立ち上げて遊ぶにあたって、フォルダを一つ作っておきましょう。私はいつも pyworks という名前でフォルダを作っていますので、今回は pyworks という名前でフォルダを作ってください。この時、注意したいのはデスクトップではなくMacのユーザー直下にフォルダを作らないと後が面倒くさいということです。以下を参考にしてみてください。
フォルダーが出来ましたか?ではこのフォルダーの中に更にフォルダを一つ作りましょう。名前は cgi-bin としてください。
こんな感じで設置出来ましたか?では前回同様Webサーバーをまずは立ち上げてみましょう。
textWranglerを開いて以下のように打ち込んで保存しましょう。今回はserver.pyという名前をつけて保存してみてください。
import SimpleHTTPServer SimpleHTTPServer.test()
この時保存する場合は必ずUTF-8で保存することを忘れないようにしましょう。 server.py と名前をつけてpyworksフォルダに保存してください。次にindex.htmlファイルを作りましょう。
<html> <body> Hello py </body> </html>
とまぁなんでも良いです。先ほど保存した server.py と同じ階層に保存します。
では、いよいよターミナルを起動してみましょう。
$ cd pyworks
上記コマンドでディレクトリを移動し、pyworksフォルダへ移動します。これを忘れると動きませんのでご注意!以下のように移動できていれば正解です。
ではシェルで以下の文字を入力してください。サーバーが立ち上がります。
$ python server.py
Serving HTTP on 0.0.0.0 port 8000 … という表示が出ていますでしょうか。ブラウザにhttp://127.0.0.1:8000/を入力してみましょう。同じフォルダに保存したindex.htmlに書かれた内容がブラウザに出力されているはずです。
静的なhtmlファイルを表示させるのはこれだけなんですが、これでは全くおもしろくもクソも無いですよね。というわけでPythonのアプリケーションを開発できる環境をささっと作ってしまいましょう。
import CGIHTTPServer CGIHTTPServer.test()
このように記述し、cgiserver.py という名前をつけてpyworksフォルダに保存してください。一旦ターミナルに移動して ctr + c でサーバーを止めておきます。普通にターミナルを終了してしまっても構いませんが、その場合はもう一度ディレクトリをpyworksまで移動しておいてください。
次は実際のPythonスクリプトをcgi-binフォルダに保存します。今回はサンプルですから非常に簡単な内容を記載していきましょう。
#!/usr/bin/env python print "Content-type: text/html\n" print "<html><body>Hello world !</body></html>"
定番のHello worldですね。このファイルを test.py としてcgi-binフォルダに保存してください。保存できましたか?
こういう配置になっているかどうかを確認して下さいね。
先ほど設置したtest.py のパーミッションを設定しなければなりません。755とは「通常のディレクトリ、コマンド、CGIスクリプトなど。誰でも読込みと実行はできるが、書き込みは自分だけ。」という権限の設定です。実際にターミナルから実行しましょう。ディレクトリを移動してcgi-binの中のtest.pyに755を与えます。
$ cd cgi-bin
$ chmod 755 test.py
$ cd pyworks
面倒ですが今はこのやり方でやってください。
ではようやく実行しましょう!
$ python cgiserver.py
ターミナルで実行したら http://127.0.0.1:8000/cgi-bin/test.py にブラウザでアクセスしてみましょう。test.pyで書いた内容が出力されているはずです。では最後に先ほどのtest.pyの中身を説明していきましょう。
#!/usr/bin/env python #おまじない print "Content-type: text/html\n" #おまじない print "<html><body>Hello world !</body></html>" #print で<html>から</html>を出力しろという命令
次回は更に発展した内容をお届けできればと思ってます。