閉じる

最短1行でローカルWebサーバー(http.server)を起動する方法

ローカルのHTMLや画像をすぐにブラウザで確認したいとき、Python標準のhttp.serverを使えば最短1行でフォルダを公開できます。

インストール不要で軽く、学習や試作に最適です。

本記事では起動からアクセス確認、よく使うオプション、注意点までを初心者向けにやさしく解説します。

Pythonのhttp.serverとは?ローカルWebサーバーの基本

標準ライブラリでインストール不要

http.serverはPython標準ライブラリに含まれる簡易Webサーバーです。

pipでの追加インストールは不要で、Pythonさえ入っていればすぐ利用できます。

バージョン確認は以下のように行います。

Shell
# いずれかのコマンドで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行で起動する手順

公開したいフォルダに移動する

公開したいファイルが置かれたフォルダへ移動します。

カレントディレクトリがそのまま公開対象になります。

Shell
# macOSやLinuxの例
cd /path/to/your/site
Shell
# Windowsの例 ドライブが異なる場合は /d を付けると移動が確実です
cd /d D:\work\site

基本コマンド: python -m http.server

最小の起動はpython -m http.serverだけです。

Pythonの呼び出し名はOSや環境で異なることがあるため、次の表を参考にしてください。

OS推奨コマンド備考
Windowspy -m http.serverPythonランチャー(py)が標準で付属します
macOSpython3 -m http.serverpythonがPython 2の別物だった環境もあるためpython3が安全です
Linuxpython3 -m http.serverディストリビューションによりpythonの指すバージョンが異なることがあります

以下は代表的な実行例です。

Shell
# 代表例 macOSやLinux
python3 -m http.server

# Windows
py -m http.server

実行すると標準出力にサーバー起動メッセージが出ます。

Windows環境の場合

Windowsではネットワークアクセスの許可を求められることがあります。

許可しないとPythonがネットワークを利用できないので必ず許可しましょう。

ポートの既定値は8000です。

text
Serving HTTP on :: port 8000 (http://[::]:8000/) (http://0.0.0.0:8000/) ...

アクセス確認

ブラウザで次のいずれかにアクセスします。

いずれも同じローカルホストを指します。

  • http://localhost:8000
  • http://127.0.0.1:8000

アクセスされるとコンソールにログが表示されます。

text
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です。

次のように割り込みが入り、サーバーが終了します。

text
^C
KeyboardInterrupt

初心者向けのよく使うオプション

ポートを指定する

同じマシンで別のサービスがポート8000を使っている場合などはポートを変更します。

位置引数で指定しても、-p--portを使ってもOKです。

Shell
# 位置引数で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以降で利用できます。

Shell
# どこから実行しても ./public を公開できる
python3 -m http.server -d public

# 絶対パスもOK
python3 -m http.server --directory /Users/you/work/site

対応していない古いPythonでは、先にそのフォルダへcdしてから起動してください。

アクセスをローカルに限定する

既定では全てのアドレスから接続可能な状態で待ち受けます。

外部公開を避けるため、–bind 127.0.0.1でローカルのみ許可するのが安全です。

Shell
# ローカルPCからのアクセスだけを許可
python3 -m http.server -b 127.0.0.1

# IPv6のローカルだけを許可したい場合
python3 -m http.server --bind ::1

反対に、LAN内の別デバイスからもアクセスさせたい場合は-b 0.0.0.0にしますが、安全が確保できないネットワークでは避けてください

トラブル対処と注意点

ポートが使用中のときの回避策

最も簡単なのは別のポートに変える方法です。

例として80808888へ変更します。

Shell
python3 -m http.server 8888

使用中のプロセスを特定したい場合は次のコマンドが参考になります。

Shell
# 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 --versionpython3 --versionで存在を確認し、次のいずれかを使い分けてください。

代表環境よく使う呼び出し名
Windowspy または pythonpy -m http.server
macOSpython3python3 -m http.server
Linuxpython3 または pythonpython3 -m http.server

pythonが見つからない場合はPython自体のインストールが必要です。

公式サイトからインストールし、パス設定を有効にしてください。

外部公開しない

http.serverはインターネットに公開してはいけません

次の指針を守って安全に使いましょう。

常に–bind 127.0.0.1でローカル限定にする、公共Wi-Fiでは起動しない、Windowsのファイアウォールでプライベートネットワークのみに許可する、必要がなくなったらすぐに停止する、です。

Shell
# 安全な典型例 ローカル限定かつポート指定と公開フォルダ指定
python3 -m http.server -b 127.0.0.1 -p 8000 -d public

変更が反映されないとき

変更が見えないと感じたら、次の観点を順に確認します。

まずブラウザキャッシュの可能性があります。

ハードリロード(Ctrl+F5 または Cmd+Shift+R)を試し、開発者ツールで「Disable cache」を有効にします。

次に保存忘れ公開ディレクトリの取り違えがないかを確認します。

--directory指定で別フォルダを公開していると、編集したファイルと表示元が一致しないことがあります。

最後にURLのキャッシュ回避策としてクエリを付ける方法もあります。

text
例: /style.css?v=20250918 などと末尾にクエリを付与

http.server自体は再起動不要で、ファイルを保存すれば即時に新しい内容が配信されます。

反映されない場合はほぼブラウザ側の事情です。

まとめ

http.serverは最短1行で静的ファイルを配信できる強力な開発用ツールです。

インストール不要で、python -m http.serverを実行するだけでフォルダを公開できます。

よく使うのは-pでポート指定、-dで公開フォルダ指定、そして-b 127.0.0.1でローカル限定にする組み合わせです。

一方で本番利用は不可であり、外部公開は避けるべきです。

手元の検証や学習、資料の一時共有などに割り切って活用し、安全な使い方を心がけてください。

この記事を書いた人
エーテリア編集部
エーテリア編集部

人気のPythonを初めて学ぶ方向けに、文法の基本から小さな自動化まで、実際に手を動かして理解できる記事を書いています。

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!