Python ローカル サーバー

Abid Ullah 2023年6月21日
  1. Python でゼロから HTTP サーバーを作成する
  2. HTTP サーバーとは
  3. Python で 1つのコマンドで基本的な HTTP サーバーを構築する
Python ローカル サーバー

このチュートリアルでは、Python で HTTP サーバーを作成する方法を示します。 このチュートリアルを完了すると、数行のコードで簡単に HTTP サーバーをセットアップできるようになります。

HTTP サーバーを作成したら、そこからファイルの提供を開始できます。 さらに支援が必要な場合は、Python HTTP サーバーのステップバイステップ ガイドを詳しく見てみましょう。

Python でゼロから HTTP サーバーを作成する

ソフトウェア エンジニアとしてのキャリアのある時点で、ソフトウェア エンジニアに関係なく、Web サーバーを操作する必要があります。 おそらく、バックエンド サービス用の API サーバーを開発する必要があるかもしれません。

おそらく、Web サイト用に Web サーバーをセットアップするだけです。

Python では、プライマリ HTTP サーバーを使用してディレクトリからファイルを簡単に提供できます。 これは決して革新的な手法ではありませんが、必要なときに役立ちます。

HTTP サーバーとは

HTTP サーバーは、HTTP および/または HTTPS ネットワーク プロトコルのサーバー部分を実装することにより、クライアント サーバー アーキテクチャでサーバーとして機能するコンピューター プログラム (または別のプログラムのソフトウェア コンポーネント) です。

HTTP サーバーは、着信クライアント要求 (ブラウザー、Web クローラーなどのユーザー エージェントによって行われる) を監視し、要求された Web リソースを送信するか、HTTP エラー メッセージを返すことによって、各要求に応答します。

HTTP サーバーには、HTTP へのプロトコル拡張 (WebDAV など) または HTTP メッセージ (SOAP など) に含まれる他のプロトコルのメッセージを管理するためのバインディングが追加で含まれ、プログラム間の対話をサポートします。

HTTP サーバー実装の複雑さは、小さくて制御可能なコンポーネントから、バックグラウンドで 1つ以上のプロセスとして動作できる HTTP およびその他のプロトコルのフル機能のソフトウェア実装にまで及びます。

HTTP サーバーは、組み込みシステムやスーパーコンピューターなど、あらゆる種類のコンピューターに搭載されており、Web インターフェース (Web アプリケーション) を操作するためにも必要です。

この点をより正確に明らかにしましょう。

Chrome ブラウザを開いて、アドレス バーにwww.gmail.comと入力してみてください。

リンクを実行すると、Gmail ホームページが Web ブラウザのウィンドウに表示されます。 しかし、舞台裏で正確に何が起こったのでしょうか?

正直なところ、多くのことが起こったので、これがどのように実現したかの背後にある不思議な仕組みを調査することに時間を割くことができます. ただし、わかりやすく簡潔にするために、このトピックについて例を挙げて説明します。

www.gmail.com をブラウザに入力すると、ブラウザは HTTP リクエストと呼ばれるネットワーク メッセージを生成します。 このリクエストは、ウェブサーバーを運用している Gmail のマシンに送信され、処理されるまでそこにとどまります。

この Web サーバーはリクエストを検出して処理し、gmail ホームページの HTML をレスポンスとして提供します。

最終的に、Web ブラウザーはこの HTML をシステムの画面に表示します。これは、コンピューターを見るときに表示されるものです。

サーバーリクエストと処理

これは、リクエストが送信されて処理される方法です。 舞台裏のプロセスがわかったので、Python を使用して HTTP サーバーを作成するというメイン トピックに簡単に移ることができます。

Python で 1つのコマンドで基本的な HTTP サーバーを構築する

インストール

Python をまだインストールしていない場合は、ここ からインストールできます (おそらく Windows を使用)。

Python がインストールされているので、HTTP サーバーを作成するプロセスに進むことができます。 まず、ターミナルを開き、次のコマンドをターミナルに入力します。

コード例:

python -m http.server

コマンドを実行すると、コンピューターの構成に応じて、サーバー開始およびサーバー停止を通知するメッセージが表示されます。

これで、独自の Python サーバーが完成しました。 これは単純なもので、マシンのデフォルト ポート 8000 にある Web サーバーです。

この機能のみを実行します。 次に示すように、行末に新しいポート番号を含めることで、ポートを変更することもできます。

python -m http.server 8080

上記のコードは、サーバー ポートをデフォルト ポート 8000 から 8080 に変更します。

今度は http://localhost:8000/ または http://127.0.0.1:8000/ に移動して、ローカル ネットワーク上のサーバーにアクセスする必要があります。 この時点から、ローカル ストレージを構成するすべてのフォルダーとすべてのデータを確認できます。

HTML ページにアクセスすることもできます。 その際、Web ブラウザが自動的にページを再作成します。

BaseHTTPRequestHandler

BaseHTTPRequestHandlerは、サーバーに送信されるさまざまなリクエストを管理するために使用されるクラスです。 これは、実際の HTTP リクエスト自体ではなく、GetおよびPostリクエストを処理します。

HTTPServer

HTTPServer(server address, BASE HTTP REQUEST HANDLER(),) として知られるこの関数は、サーバーの名前に加えてサーバーのポート番号を保存するために使用されます。

段階的なアプローチ

  1. サーバーのリクエストを管理するクラスを作成します。
  2. 終了後、GET リクエストに使用されるクラスのメソッドを開発します。
  3. その関数の範囲内で、サーバー上で表示するために使用される HTML コードが作成されます。
  4. 最後に、サーバーの操作を担当する HTTPServer() メソッドを使用します。

ここで、Python 言語を使用して上記の手順を実装します。

# importing all the functions
# from http.server module
# * means all
from http.server import *

# creating a class for handling
# basic Get and Post Requests


class GFG(BaseHTTPRequestHandler):
    # We will create a function
    # for Get Request using the command below
    def do_GET(self):
        # Successful Response --> 200
        self.send_response(200)
        # Type of file that we are using for creating our
        # web server.
        self.send_header("content-type", "text/html")
        self.end_headers()
        # whatever we write in our function,
        # we can see it at the web-server
        self.wfile.write("<h1>AO-(AbidOrakzai)</h1>".encode())


# this object takes a report
# number and the server-Name
# for running the server
port = HTTPServer(("", 5555), GFG)
# We use this for running our
# server as long as we want, i.e., forever
port.serve_forever()

出力:

AO-(AbidOrakzai)

HTTP サーバーを起動する方法

次の端末命令を使用して、HTTP サーバーを起動できます。

コード例:

python our_file_name.py

最後のステップは、ポート 5555 でサーバーにアクセスすることです。 ブラウザ http://localhost:5555/ または http://127.0.0.1:5555/ を使用できます。

この記事が、Python を使用して HTTP サーバーをゼロから作成する方法についての知識を深めるのに役立つことを願っています。

著者: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn

関連記事 - Python Server