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にアクセスできる。
カレントディレクトリに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