Pythonだけでできる!WEBサーバの構築方法

こんにちは。

はけです。

WEBエンジニア6年目に突入します。

この記事ではPythonでWEBサーバを構築する方法を解説していきます。

  • えっ、PythonでWEBサーバを構築できるの??
  • プログラムをWEB上で動かすときはApacheなどのWEBサーバが必要なのでは??

と、疑問に思った方も多いのではないでしょうか。

JavaやC#ではApacheやIISなどのWEBサーバを通して実際のプログラムが動かせるようになります。

一方、PythonはApacheやIISを使用せずにPython単独でWEBサーバを構築することができます!

(ApacheやIISを通してプログラムを表示することもできます)

ではさっそく、私が試したことをもとに、PythonでのWEBサーバ構築方法を解説していきます。

前提条件

私が動作確認した環境は以下になります。

  • Windows10
  • Python 3.7.6

Pythonをマシンにインストールするところからはじめたい!という方は、以下を参考にしてください。

PythonでのWEBサーバを構築してみる

さっそくWEBサーバを構築していきましょう。

WEBサーバを構築するために以下の4STEPを行います。

  • 対象のフォルダ作成
  • 対象のフォルダへ移動
  • WEBサーバ起動コマンド実行
  • アクセス

それぞれ解説していきます。

対象のフォルダ作成

まずはWEBサーバで表示するためのフォルダを作成します。

このフォルダ内のファイルフォルダを表示することが目的となります。

仮に、デスクトップ上にpython_testフォルダを作成し、その中にaaaフォルダ、bbbテキストを作成しました。

aaaフォルダの中にはさらに、aaaテキストを配置しました。

以下のようなフォルダ構成になります。

  • python_test
    • aaa
      • aaa.txt
    • bbb.txt

対象のフォルダへ移動

次にコマンドプロンプトを開き、対象のフォルダへ移動します。

これは、次の「コマンド実行」を実行するときに自分が存在する場所がWEB上で見れるようになるからです。

cd 作成したフォルダの場所

作成したフォルダの場所は、次の画像の赤枠部分を貼りつけてください。

次のような状態になります。

コマンド実行

では、WEBサーバを起動します。

以下のコマンドを実行してください。

python -m http.server 8000

「Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) …」というメッセージが出れば成功です。

「-m http.server」を指定することでWEBサーバを構築できます。

 http.serverの詳しい仕様を知りたい方は次の公式ドキュメントを参考にしてください。公式ドキュメントはコチラ

一番右の8000はポート番号で、WEBアクセスする際にURLで指定する番号になります。

自由に指定することができますが、番号によって使用できない番号なども存在します。詳細はここでは解説しませんので、調べてみてください。

今回は8000を指定します。

(※補足情報)WEBサーバを停止させるときは「Ctrl + C」で停止ができます。

アクセス

最後に、実際にWEBブラウザからアクセスしましょう。GoogleChromeやFireFoxなど好きなものを使用してください。

URL「http://localhost:8000/」を指定してアクセスしてみます。

※画像ではGoogleChromeを使用しました。

さきほど作成したフォルダにアクセスできていることがわかります。

テキストファイルを選択すると中身が表示されます。フォルダを選択するとフォルダの中身がさらに表示されます。

試してみてください。

実際にHTMLのページを表示してみる

次は、ホームページを表示するようなイメージでHTMLファイルを表示してみましょう。

さきほどのようにWEBサーバを構築しアクセスすると、アクセスした先にHTMLファイルがあった場合、それを自動的に読み込み表示してくれます。

HTMLファイルとは、「.html」「.htm」の拡張子のファイルがそれにあたります。

実際に試してみます。

HTMLファイル作成

先程の対象ディレクトリの中にHTMLファイルを作成してください。本当に基本的なHTMLで問題ありません。

私は以下のようなファイルを置きました。

<!DOCTYPE html>
<html>
<head>
    <title>Hello Python!</title>
</head>
<body>
    <p>Hello Python!!!</p>
</body>
</html>

ファイル名は必ず「index.html」または「index.htm」とする必要があります。

コマンド実行

さきほどと同じ用にコマンドを実行します。

python -m http.server 8000

アクセス

さきほどと同じように、URL「http://localhost:8000/」へアクセスします。

すると、画像のようにHTMLファイルの中身が自動的に表示されます。

以上が、PythonでのWEBサーバ構築方法の解説となります。

が、もう少しお付き合いください!

最後に少しだけ、実際のWEBページってどうやって作るの?と気になる方もいると思いますので、その部分を解説して終わります。

実際にWEBページってつくれるの??

このPythonでつくるWEBサーバって実際にブログとかWEBサイトをつくれるの??

と思った方もいると思います。

そんな疑問へ回答していきたいと思います。

頑張ればつくれる

頑張れば、一から自分でつくっていけます。

ただし、膨大な時間がかかります。

自分で使うためだけの簡単なツールとして使うなら、PythonのWEBサーバを使ったプログラム開発はお手軽でおすすめです。

ですが、広く世間に公開するような、ブログやWEBサイトを作る場合、考えなければならないことがたくさんあります。

セキュリティやアクセス制御など、失敗できないことも多いです。

そこで、次に紹介するような先人たちが作ってくれているフレームワークを使うと効率的に開発が進められます。

フレームワークを使うのが便利

PythonのWEBフレームワークはたくさんありますが、以下の代表的なフレームワークを紹介します。

  • Django
  • Flask

Django

最もポピュラーなPythonのWEBフレームワークです。

特徴は、大規模開発に向いており、WEBで必要な機能をすべてそろえているところです。

公式サイトはコチラになります。

詳しくは解説しませんが、最もオススメのWEBフレームワークとなります。

Flask

2番目に人気の高いPythonのWEBフレームワークです。

特徴は、最低限の機能を有しており、機能を制限している分快適に動作させることができます。

公式サイトはコチラになります。

自前で簡単にWEBサイトを作りたいという方はFlaskがオススメです。

以上。

ぜひお試しあれ。