Webサーバーの主なタスクは、クライアントからのHTTPリクエストを処理することです。特定のIPアドレスとポート番号からのHTTPリクエストを待機し、リクエストを処理して、クライアントの応答を送り返します。 Pythonは SimpleHTTPServer サーバーからファイルのコンテンツを即座に簡単に提供するWebサーバーを作成するモジュール。ファイル共有にも使用できます。このためには、共有可能なファイルの場所でこのモジュールを有効にする必要があります。このモジュールには、Pythonインタープリターが付属しています。インストールする必要はありません。このモジュールはとマージされているので http.server python3のモジュールなので、実行する必要があります http.server python3でWebサーバーを実行します。このチュートリアルでは、Webサーバーを使用してHTTPリクエストを処理し、ファイルを共有する方法を示しました。
ターミナルからWebサーバーを実行します
次のコマンドを実行して、ターミナルからWebサーバーを実行します。コマンドでポート番号が定義されていない場合、Webサーバーはデフォルトで8000ポートで起動します。
$ python3 -mhttp。サーバ
Webサーバーが正しく起動されると、次の出力が表示されます。 CTRL + Cを押してサーバーを停止します。
次のコマンドを実行して、8080ポートでWebサーバーを起動します。
$ python3 -mhttp。サーバ 8080
Webサーバーが8080ポートで起動されている場合、次の出力が表示されます。
Pythonスクリプトを使用してWebサーバーを実行する
次のコマンドを実行して、という名前のフォルダーを作成します ウェブ フォルダーに移動します。このチュートリアルのすべてのスクリプトファイルとHTMLファイルは、このフォルダー内に作成されます。
$ mkdir web$CDウェブ
名前の付いたHTMLファイルを作成します testHTML.html の中に ウェブ 次のスクリプトを含むフォルダ。このファイルは、後でWebサーバーから提供されます。
testHTML.html
< html >>< 頭 >>
< 題名 >>
PythonWebサーバーをテストする
</ 題名 >>
</ 頭 >>
< 体 >>
< 中心 >>
< img src='logo.jpeg' すべての=「画像が見つかりません」/>>
< h2 スタイル='color:green'>>おめでとうございます! Webサーバーは正常に実行されています。</ h2 >>
< NS >>訪問< に href=「www.linuxhint.com」>>LinuxHint.com</ に >>Pythonのその他のチュートリアルについては</ NS >>
</ 中心 >>
</ 体 >>
</ html >>
例-1:特定のポート番号でWebサーバーを実行する
次のスクリプトを使用してPythonファイルを作成し、8008ポートでWebサーバーを実行します。 http.server モジュールはWebサーバーを実行するためにインポートされており、 SocketServer モジュールは、8080ポートからのHTTPリクエストを処理するためにインポートされました。名前の付いたオブジェクト ハンドラ HTTPリクエストを処理するために作成されました。 永遠に() 関数は、Webサーバーを実行するために呼び出されます。スクリプトに終了条件は追加されていません。そのため、ユーザーがサーバーを停止しようとすると、スクリプトはエラーを生成します。
#サーバーモジュールをインポートする輸入http。サーバ
#SocketServerモジュールをインポートする
輸入ソケットサーバー
#ポート番号を設定する
港= 8080
#HTTPリクエストを処理するためのオブジェクトを作成します
ハンドラ=http。サーバ。SimpleHTTPRequestHandler
#サーバーを永久に実行してHTTPリクエストを処理する
とソケットサーバー。TCPServer((((''、港)。、ハンドラ)。 なのでhttpd:
印刷((「Webサーバーはhttp:// localhost:%sで実行されています」%港)。
httpd。serve_forever(()。
出力
上記のスクリプトを実行すると、次の出力が表示されます。
ブラウザから以下のURLを実行すると、スクリプトの場所のファイルとフォルダの一覧が表示されます。
ユーザーが端末からCTRL + Cを押すか、PyCharmエディターから停止ボタンを押すと、次のエラーメッセージが表示されます。この問題は、このチュートリアルの次の例で解決されました。
例-2:コマンドラインで定義されたポート番号でWebサーバーを実行します
コマンドライン引数でポート番号が指定されている場合は、次のスクリプトを使用してPythonファイルを作成し、特定のポートでWebサーバーを実行します。それ以外の場合は、5000がデフォルトのポートとして使用されます。 sys モジュールは、コマンドライン引数値を読み取るためにスクリプトにインポートされています。 試してみてください ユーザーがサーバーを停止しようとしたときのエラーを処理するために、スクリプトにブロックが追加されました。サーバーの実行後にKeyboardInterrupt例外が発生した場合は、 選ぶ() 関数が呼び出され、Webサーバーが停止します。
#サーバーモジュールをインポートする輸入http。サーバ
#SocketServerモジュールをインポートする
輸入ソケットサーバー
#sysモジュールをインポートする
輸入 sys
試す:
#ポート番号を設定する
もしも sys。argv[1:]:
港= int((sys。argv[1])。
そうしないと:
港= 5000
#IPアドレスを設定する
サーバーアドレス= (('127.0.0.1'、港)。
#HTTPリクエストを処理するためのオブジェクトを作成します
ハンドラ=http。サーバ。SimpleHTTPRequestHandler
#HTTPリクエストを処理するためにWebサーバーを永久に実行します
とソケットサーバー。TCPServer((((''、港)。、ハンドラ)。 なのでhttpd:
印刷((「Webサーバーはhttp:// localhost:%sで実行されています」%港)。
httpd。serve_forever(()。
#サーバーを停止しました
それ外 KeyboardInterrupt:
httpd。server_close(()。
印刷((「サーバーは停止しています。」)。
出力
コマンドライン引数値なしで上記のスクリプトを実行すると、次の出力が表示されます。
前の手順で作成したHTMLファイルをWebサーバーから実行すると、次の出力が表示されます。
PyCharmエディターの[実行]メニューから構成ダイアログボックスを開き、コマンドライン引数の値を設定します。パラメータフィールドはコマンドライン引数を設定するために使用され、3000は引数値としてここに設定されます。
引数値を設定した後、再度スクリプトを実行すると、次の出力が表示されます。
例-3:HTMLファイルを使用してWebサーバーを実行する
次のスクリプトを使用してPythonファイルを作成し、ベースURLのHTMLファイルを定義してWebサーバーを実行します。ホスト名とポート番号は、スクリプトの冒頭で定義されています。 PythonServer クラスは、Webサーバーの実行開始時にブラウザーにHTMLファイルを表示するようにスクリプトで定義されています。
#サーバーモジュールをインポートする輸入http。サーバ
#ホスト名を設定します
ホスト= 'localhost'
#ポート番号を設定する
港= 4000
#Webサーバーのインデックスページを表示するクラスを定義します
クラスPythonServer((http。サーバ。SimpleHTTPRequestHandler)。:
defdo_GET((自己)。:
もしも 自己。道 == '/':
自己。道 = 'testHTML.html'
戻るhttp。サーバ。SimpleHTTPRequestHandler。do_GET((自己)。
#クラスのオブジェクトを宣言する
webServer=http。サーバ。HTTPServer((((ホスト、港)。、PythonServer)。
#WebサーバーのURLを出力します
印刷((「サーバーがhttp://%s:%sを開始しました」%((ホスト、港)。)。
試す:
#Webサーバーを実行します
webServer。serve_forever(()。
それ外 KeyboardInterrupt:
#Webサーバーを停止します
webServer。server_close(()。
印刷((「サーバーは停止しています。」)。
出力
上記のスクリプトを実行すると、次の出力が表示されます。
ブラウザのウェブサーバーのベースURLが実行されると、次のページがブラウザに表示されます。
結論
を使用してWebサーバーを実装するさまざまな方法 http。サーバ このチュートリアルでは、PythonユーザーがPythonで簡単なWebサーバーを作成するのに役立つモジュールを示しています。