Python HttpServerを簡易HTTPサーバーとして使用する方法

スポンサーリンク

本日の記事では、Python HttpServerの使用について見ていきます。

このモジュールは、ネットワーク上でローカルのHttpサーバーを起動するための非常に迅速かつ簡単な方法として機能します。

以前、Python 2.7では、このモジュールは HttpServer と呼ばれていました。

しかし、Python3では、このモジュールは http.server モジュールにマージされました。

さっそく、自分自身のHttpサーバーを動かしてみましょう!

スポンサーリンク

Python httpserver モジュールのインポート

このモジュールは標準ライブラリの一部として提供されています。

このモジュールをインポートするには、以下のように記述してください。

import http.server

これで、サーバーを動かすための準備が整いました。

それでは、ファイルを提供するためのコードを書いてみましょう。

Httpサーバーの実行

単にファイルやディレクトリを他のユーザと共有したい場合は、Pythonを使用して直接サーバを実行することができます

共有したいディレクトリに移動し、そこからPythonを使用してサーバーを実行します。

python -m http.server 9000

ここでは、ポート9000でローカルのHttpサーバーを起動します。

Httpサーバーに接続する

さて、ローカルサーバに接続するためには、以下の手順が必要です。

    1. サーバマシンに行き、Windowsでは arp -a を、Linuxでは ip -a | grep inet を使ってサーバのIPアドレスを確認します。
    1. リモートクライアントから、ブラウザでhttp://IP_ADDRESS:9000/と入力し、魔法を見ます!

結果は以下の通りです。

# server.py
import http.server # Our http server handler for http requests
import socketserver # Establish the TCP Socket connections
 
PORT = 9000
 
class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        self.path = 'index.html'
        return http.server.SimpleHTTPRequestHandler.do_GET(self)
 
Handler = MyHttpRequestHandler
 
with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("Http Server Serving at port", PORT)
    httpd.serve_forever()

サーバーのファイルを見ることもできますし、クライアントマシンにダウンロードすることもできます!

出力

python server.py

カスタムな index.html ファイルを提供する Python HttpServer を実行する

デフォルトのサーバはファイルを直接共有するのに便利ですが、別のファイルを実行することで、サーバの動作をカスタマイズすることができます

例えば、TCP通信に http.serversocketserver を使用するカスタムHttpサーバを実行します。

MyHttpRequestHandlerは、do_GET()メソッドを呼び出してリクエストを処理します。

この関数をオーバーライドするには、別の値を返す別の do_GET() メソッドを定義します。

Http Server Basic
Http Server Basic

これを server.py として呼び出すと、httpサーバーを実行することができます

Python Http Server File
Python Http Server File
Custom homepage Python http server
Custom Homepage for Python http server

カスタムdo_GET()関数を定義したので、サーバーを使用してホームページのHTMLファイルを提供することができます(この例ではindex.html)。

また、サーバーが自分のシステム上で動作している場合は、IPの代わりにlocalhost:<ポート番号>を使用してサーバーに直接アクセスすることができます

まとめ

この記事では、Pythonの http.server モジュールを使って簡単なHttpサーバーをセットアップする方法を学びました。

また、サーバーにリクエストしたときにカスタムファイルを提供するために、do_GET()メソッドを定義する方法を学びました。

タイトルとURLをコピーしました