LoginSignup
5
11

More than 5 years have passed since last update.

Python or Docker でローカルサーバををつくる

Last updated at Posted at 2017-10-10

はじめに

Webブラウザを使って操作するWebアプリを、標準のPythonモジュールで作成したいと思います。
標準のモジュールだけを使ってシンプルなアプリケーションを構築することで、Webアプリがどのように動作しているかを理解することを目的とします。

開発環境:
MacbookPro(Mid2012)
OSはMacOS Sierra(High Sierraはすでに出ているが自分はアップグレードしてない)

PythonでWebアプリを開発するためには、開発環境にPythonをインストールする必要があります。
MacOS Sierra には python2.7.10がはじめからインストールされていますが、今回使っているのはPython3.5.1です。

Pythonのバージョンを確認方法、Terminalを起動してから、以下のコマンドを入力します。
python または python3

スクリーンショット 2017-10-03 12.34.49.png

1. Python3でWebサーバを作る

Python3の時ではhttp.serverを使います。
ポート番号を省略すると8000が用いられます。
Terminalを起動して、以下の一行のコードを書くと簡単にSimpleHTTPServerが立ち上がることができます。

$ python3 -m http.server [ポート番号(デフォルトは8000)]

Webブラウザを起動して、「http://localhost:8000」にアクセスしてみてください。
現在いるディレクトリによって表示する内容が異なります。
私のディレクトリリストは以下のようになります。

スクリーンショット 2017-10-03 15.58.36.png

また、Terminalには、Webサーバの稼働状態が表示されています。

スクリーンショット 2017-10-03 15.58.26.png

localhostは現在使用しているシステムそのもののことを指します。Webブラウザにlocalhostと入力した場合、127.0.0.1(ループバックアドレス)が読み込まれます。
つまり、今回入力した 「http://localhost:8000」 とは、「このブラウザが開かれているPC上で起動してるWebサーバの8000番ポートにアクセスする」という意味です。

※ ちなみに、サーバを終了するには Control+C を押します。

1.2 HTMLファイルを表示する

Webサーバとして公開するからには、HTMLファイルを表示したいです。その方法はとても簡単で、表示したいHTMLを作成して、ドキュメントルートに置くだけで完了します。

まずはドキュメントルートにするディレクトリを作成しましょう。場所はどこでもかまいません。
今回は、先ほどのディレクトリリストの中のtest.htmlを使います。

test.html
<!Doctype HTML>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello Wolrd</title>
  </head>
  <body>
    <h1 style="color:red;">Hello Welcome Python's World</h1>
    <h2>Python</h2>
    <h3>Python</h3>
    <p>Python</p>
  </body>
</html>

表示すると
スクリーンショット 2017-10-03 15.58.44.png
になります。

「HTTPリクエストに対してHTMLファイルを返す」ことができましたので、これでWebサーバと呼んでいいアプリケーションが完成しました。HTMLファイルに画像を追加したり、CSSで装飾したりすることによって、より素晴らしいWebページを表示することができます。

2. Python2でWebサーバを作る

Python2ではSimpleHTTPServerを使います。
ポート番号を省略すると8000が用いられます。
Terminalを起動してPythonのインタラクティブシェルを起動し、以下の二行のコードを書くと簡単にSimpleHTTPServerが立ち上がることができます。

>>> import SimpleHTTPServer
>>> SimpleHTTPServer.test()

3. DockerでWebサーバをつくってみる

3.1 Python2の場合

$ docker run -it --rm -p 8888:8888 -v `pwd`:/app -w /app python:2-alpine python -m SimpleHTTPServer 8888

3.2 Python3の場合

$ docker run -it --rm -p 8888:8888 -v `pwd`:/app -w /app python:3-alpine python -m http.server 8888
5
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
11