ローカルのHTMLや画像をすぐにブラウザで確認したいとき、Python標準のhttp.serverを使えば最短1行でフォルダを公開できます。
インストール不要で軽く、学習や試作に最適です。
本記事では起動からアクセス確認、よく使うオプション、注意点までを初心者向けにやさしく解説します。
Pythonのhttp.serverとは?ローカルWebサーバーの基本
標準ライブラリでインストール不要
http.serverはPython標準ライブラリに含まれる簡易Webサーバーです。
pipでの追加インストールは不要で、Pythonさえ入っていればすぐ利用できます。
バージョン確認は以下のように行います。
# いずれかのコマンドでPython 3系のバージョンが表示されればOKです
python --version
python3 --version
py --version # WindowsのPythonランチャー
Python 3.11.6
カレントディレクトリをそのまま公開して手早く動作確認できるのが特長です。
index.htmlがあれば自動的にトップとして表示され、なければディレクトリ一覧が表示されます。
できること
http.serverは静的ファイルの配信に向いています。
HTMLやCSS、JavaScript、画像、PDFなどを手軽に配布できます。
開発中の静的サイトのプレビュー、教材や資料の共有、簡易なAPIモックなどに役立ちます。
ログとして各リクエストのメソッドやパス、ステータスが標準出力に記録されるため、どのファイルにアクセスされたかも把握しやすいです。
本番利用は不可
本番用途には使わないでください。
http.serverは次の点で本番運用に不向きです。
暗号化(TLS)非対応、認証非対応、設定や拡張性が限定的、堅牢なエラーハンドリングや高負荷対応がないためです。
あくまでローカル開発や一時的な用途に限定しましょう。
外部公開の心配がある場合は–bind 127.0.0.1でローカル限定にするのが安全です。
コマンド1行で起動する手順
公開したいフォルダに移動する
公開したいファイルが置かれたフォルダへ移動します。
カレントディレクトリがそのまま公開対象になります。
# macOSやLinuxの例
cd /path/to/your/site
# Windowsの例 ドライブが異なる場合は /d を付けると移動が確実です
cd /d D:\work\site
基本コマンド: python -m http.server
最小の起動はpython -m http.server
だけです。
Pythonの呼び出し名はOSや環境で異なることがあるため、次の表を参考にしてください。
OS | 推奨コマンド | 備考 |
---|---|---|
Windows | py -m http.server | Pythonランチャー(py)が標準で付属します |
macOS | python3 -m http.server | pythonがPython 2の別物だった環境もあるためpython3が安全です |
Linux | python3 -m http.server | ディストリビューションによりpythonの指すバージョンが異なることがあります |
以下は代表的な実行例です。
# 代表例 macOSやLinux
python3 -m http.server
# Windows
py -m http.server
実行すると標準出力にサーバー起動メッセージが出ます。
Windowsではネットワークアクセスの許可を求められることがあります。

許可しないとPythonがネットワークを利用できないので必ず許可しましょう。
ポートの既定値は8000です。
Serving HTTP on :: port 8000 (http://[::]:8000/) (http://0.0.0.0:8000/) ...
アクセス確認
ブラウザで次のいずれかにアクセスします。
いずれも同じローカルホストを指します。
- http://localhost:8000
- http://127.0.0.1:8000
アクセスされるとコンソールにログが表示されます。
127.0.0.1 - - [18/Sep/2025 12:34:56] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2025 12:34:56] "GET /style.css HTTP/1.1" 200 -
停止方法
停止はCtrl+Cです。
次のように割り込みが入り、サーバーが終了します。
^C
KeyboardInterrupt
初心者向けのよく使うオプション
ポートを指定する
同じマシンで別のサービスがポート8000を使っている場合などはポートを変更します。
位置引数で指定しても、-p
--port
を使ってもOKです。
# 位置引数で8080番を使う
python3 -m http.server 8080
# オプションで指定する書き方
python3 -m http.server -p 8080
python3 -m http.server --port 8080
アクセス先のURLもポートに合わせて変更します。
例 http://localhost:8080
公開ディレクトリを指定する
--directory
-d
で公開元フォルダを明示できます。
別の場所にあるフォルダを公開したいときに便利です。
このオプションはPython 3.7以降で利用できます。
# どこから実行しても ./public を公開できる
python3 -m http.server -d public
# 絶対パスもOK
python3 -m http.server --directory /Users/you/work/site
対応していない古いPythonでは、先にそのフォルダへcd
してから起動してください。
アクセスをローカルに限定する
既定では全てのアドレスから接続可能な状態で待ち受けます。
外部公開を避けるため、–bind 127.0.0.1でローカルのみ許可するのが安全です。
# ローカルPCからのアクセスだけを許可
python3 -m http.server -b 127.0.0.1
# IPv6のローカルだけを許可したい場合
python3 -m http.server --bind ::1
反対に、LAN内の別デバイスからもアクセスさせたい場合は-b 0.0.0.0
にしますが、安全が確保できないネットワークでは避けてください。
トラブル対処と注意点
ポートが使用中のときの回避策
最も簡単なのは別のポートに変える方法です。
例として8080
や8888
へ変更します。
python3 -m http.server 8888
使用中のプロセスを特定したい場合は次のコマンドが参考になります。
# macOSやLinuxでポート8000を使っているプロセスを探す
sudo lsof -iTCP:8000 -sTCP:LISTEN
# Windowsでポート8000のPIDを調べる
netstat -ano | findstr :8000
# Windowsで該当PIDを強制終了する例(影響に注意)
taskkill /PID 12345 /F
pythonとpython3の違い
環境によってPythonの呼び出し名が異なります。
うまく動かない場合はpython --version
やpython3 --version
で存在を確認し、次のいずれかを使い分けてください。
代表環境 | よく使う呼び出し名 | 例 |
---|---|---|
Windows | py または python | py -m http.server |
macOS | python3 | python3 -m http.server |
Linux | python3 または python | python3 -m http.server |
pythonが見つからない場合はPython自体のインストールが必要です。
公式サイトからインストールし、パス設定を有効にしてください。
外部公開しない
http.serverはインターネットに公開してはいけません。
次の指針を守って安全に使いましょう。
常に–bind 127.0.0.1でローカル限定にする、公共Wi-Fiでは起動しない、Windowsのファイアウォールでプライベートネットワークのみに許可する、必要がなくなったらすぐに停止する、です。
# 安全な典型例 ローカル限定かつポート指定と公開フォルダ指定
python3 -m http.server -b 127.0.0.1 -p 8000 -d public
変更が反映されないとき
変更が見えないと感じたら、次の観点を順に確認します。
まずブラウザキャッシュの可能性があります。
ハードリロード(Ctrl+F5 または Cmd+Shift+R)を試し、開発者ツールで「Disable cache」を有効にします。
次に保存忘れや公開ディレクトリの取り違えがないかを確認します。
--directory
指定で別フォルダを公開していると、編集したファイルと表示元が一致しないことがあります。
最後にURLのキャッシュ回避策としてクエリを付ける方法もあります。
例: /style.css?v=20250918 などと末尾にクエリを付与
http.server自体は再起動不要で、ファイルを保存すれば即時に新しい内容が配信されます。
反映されない場合はほぼブラウザ側の事情です。
まとめ
http.serverは最短1行で静的ファイルを配信できる強力な開発用ツールです。
インストール不要で、python -m http.server
を実行するだけでフォルダを公開できます。
よく使うのは-p
でポート指定、-d
で公開フォルダ指定、そして-b 127.0.0.1でローカル限定にする組み合わせです。
一方で本番利用は不可であり、外部公開は避けるべきです。
手元の検証や学習、資料の一時共有などに割り切って活用し、安全な使い方を心がけてください。