Pythonのhttp.serverでローカルサーバーを起動・終了

Posted: | Tags: Python

Pythonのhttp.serverモジュールを使うと、ローカルでHTTPサーバーを簡単に立ち上げられる。Webサイトの開発・確認用に便利。

以下のコマンドで起動できる。終了はCtrl + c

$ python -m http.server

なお、あくまでも簡易的な開発・確認用で、本番環境での使用は推奨されていないので注意。

警告: http.serverは、本番環境では推奨されません。これは、基本的なセキュリティチェックのみを実装します。 http.server --- HTTP サーバー — Python 3.13.3 ドキュメント

python -m http.serverでサーバーを起動

python(またはpython3)コマンドに-mオプションを付けると、モジュールをスクリプトとして実行できる。

http.serverモジュールを実行すると、カレントディレクトリをルートディレクトリとしてHTTPサーバーが起動する。

$ python -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ..

デフォルトのポート番号は8000で、ブラウザで以下のURIにアクセスできる。

カレントディレクトリにindex.htmlが置いてあればそれが開かれる。

Ctrl + cでサーバーを終了

python -m http.serverを実行したターミナルやコマンドプロンプトでCtrl + cを押下するとサーバーは終了する。

同一ローカルネットワークの他のデバイスからアクセス

python -m http.serverを実行したマシンのプライベートIPアドレス(ローカルIPアドレス)を使うと、起動したサーバーに同一ローカルネットワークの他のデバイスからアクセスできる。

スマートフォンからアクセスして表示を確認したりするのに便利。

macOSおよびWindowsでのプライベートIPアドレスの確認方法は以下の記事を参照。

例えばプライベートIPアドレスが192.168.11.1だった場合、http://192.168.11.1:8000で他のデバイスからアクセスできる。

他のデバイスからのアクセスを禁止するには後述の-bオプションを使う。

ポート番号の変更

引数に任意のポート番号を指定できる。例えば9000にしたい場合は以下のようにする。

$ python -m http.server 9000

ルートディレクトリの変更

デフォルトではカレントディレクトリがルートディレクトリとなる。

-dまたは--directoryオプションでルートディレクトリのパスを指定できる。

$ python -m http.server --directory path/to/dir/

他のデバイスからのアクセスを禁止

デフォルトでは、起動したマシンのプライベートIPアドレスを使って同一ローカルネットワークの他のデバイスからアクセスできる。

-bまたは--bindオプションで127.0.0.1またはlocalhostにバインドすると、他のデバイスからアクセスできなくなる。

$ python -m http.server -b 127.0.0.1

関連カテゴリー

関連記事