Pythonのhttp.serverでローカルサーバーを起動・終了
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にアクセスできる。
- http://0.0.0.0:8000
- http://localhost:8000
- http://127.0.0.1:8000
カレントディレクトリにindex.html
が置いてあればそれが開かれる。
Ctrl + c
でサーバーを終了
python -m http.server
を実行したターミナルやコマンドプロンプトでCtrl + c
を押下するとサーバーは終了する。
同一ローカルネットワークの他のデバイスからアクセス
python -m http.server
を実行したマシンのプライベートIPアドレス(ローカルIPアドレス)を使うと、起動したサーバーに同一ローカルネットワークの他のデバイスからアクセスできる。
スマートフォンからアクセスして表示を確認したりするのに便利。
macOSおよびWindowsでのプライベートIPアドレスの確認方法は以下の記事を参照。
- 関連記事: MacでIPアドレスを確認(コマンド、システム設定)
- 関連記事: 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