http.serverとは
Pythonの標準ライブラリの一つで、簡単なHTTPサーバを立てることができます。
これを用いてサービスを提供するというよりは、検証用途で使うことが多いです。
Python2.x
ではSimpleHTTPServer
でしたが、Python3.x
ではhttp.server
に移行しました。
使い方
コマンドライン上で使うことが多いかと思います。
- 作業ディレクトリを作成し、移動します。
- 作業ディレクトリにソースファイルを配置します。(今回は簡単のため、以下のような
index.html
を配置します。)1
2
3
4
5
6
7<html>
<head>
</head>
<body>
<p>Hello, World!</p>
</body>
</html> - 作業ディレクトリにて下記のコマンドを実行します。
1
python3 -m http.server 8000
Python2.x
の場合は、代わりに以下のコマンドを実行してください。1
python -m SimpleHTTPServer 8000
-m
はライブラリをスクリプトと実行するためのオプションです。
また、8000
はポート番号を指定しています。 - ブラウザでアドレスに
localhost:8000
と入力します。 Hello, World
が表示されればOK!
あとは、ソースファイルで実行してみてください。
コマンドラインに以下のように、ログが表示されるのでデバッグがしやすく便利です。
1 | Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... |
OSError: [Errno 48] Address already in use
の対処
1 | python3 -m http.server 8000 |
と実行した際に
1 | OSError: [Errno 48] Address already in use |
のようなエラーが出る場合があります。
これは、すでに別のプロセスが利用中のポートを使おうとした際に発生するエラーです。
プロセスIDを調べる
下記のようにして、指定したポートを使用しているプロセスを調べることができます。
1 | lsof -i:8000 |
1 | [MYNAME@MBA-3 sandbox]$lsof -i:8000 |
この場合、プロセスIDは35873
となります。
プロセスを終了する
1 | kill -9 35873 |
これで、プロセスを終了できたので、再度コマンドを実行してください。
1 | python3 -m http.server 8000 |
今度は、うまくサーバが立ち上がるはずです。
より複雑なアプリケーションを作るために
実際のアプリケーションは、より複雑なフレームワークで実装するのが一般的です。
有名なフレームワークには、Flask
やDjango
があります。
それぞれ、簡単な記事があるのでよろしければご覧ください。
記事情報
- 投稿日:2020年3月10日
- 最終更新日:2020年3月12日