「VPSの中にあるファイルをすぐに見たいが、ApacheやNginxをゼロから設定するのは大変すぎる。」
そんな場面で役に立つのが、Python 3に最初から組み込まれているhttp.serverモジュールです。
コマンド1本でWebサーバーが即座に起動し、カレントディレクトリのファイルをブラウザで閲覧できます。設定ファイルも不要で、テストが終わったらCtrl+Cで止めるだけという手軽さが魅力です。
この記事では、WSL2(Windows上のLinux環境)とVPSを想定して、python3 -m http.serverの起動手順からWindowsブラウザでのアクセス方法、VPSでのポート開放、よくあるエラー対処まで初心者向けに解説します。
この記事のポイント
・python3 -m http.server 8000 の1コマンドでWebサーバーが起動する
・WSL2ではWindowsのブラウザから http://localhost:8000 でそのまま開ける
・VPSで外部公開するにはファイアウォールでポートを開放する必要がある
・本番用ではなく開発中の一時確認・ファイル共有用途に使う
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
python3 -m http.serverとは何か
python3 -m http.serverとは、Python 3の標準ライブラリに含まれる簡易WebサーバーをコマンドラインからHTTP形式で起動する機能です。「-m」は「モジュールを実行する」という意味で、http.serverというPythonモジュールを直接実行します。
Windowsユーザーがファイルをブラウザで確認する場合、普通はHTMLファイルを直接ダブルクリックして開きます。
ところがLinuxのターミナルにはそのような操作がないため、Webサーバーを起動してHTTPでアクセスするのがLinux流の確認方法です。
ApacheやNginxといった本格的なWebサーバーとの違いをまとめると以下のようになります。
| 比較項目 | python3 -m http.server | Apache / Nginx |
|---|---|---|
| 起動速度 | コマンド1本で即起動 | インストール・設定が必要 |
| 設定ファイル | 不要 | httpd.conf / nginx.conf が必要 |
| 停止方法 | Ctrl+C で即停止 | systemctl stop で停止 |
| 用途 | 開発中の一時確認・ファイル共有 | 本番サービスの常時稼働 |
| セキュリティ | 最小限(本番用途に不向き) | 設定次第で本番運用可 |
実務でも、開発者がHTMLの表示確認やチームメンバーへのファイル共有のために日常的に使う場面があります。
WSL2でサーバーを起動してWindowsブラウザで確認する手順
WSL2(Windows Subsystem for Linux 2)は、Windows上でLinux環境を動かす仕組みです。WSL2でhttp.serverを起動した場合、Windowsのブラウザから直接アクセスできます。
1. HTMLファイルを用意してサーバーを起動する
まず確認したいHTMLファイルがあるディレクトリに移動します。例としてホームディレクトリ直下に簡単なHTMLファイルを作成します。
# ホームディレクトリに移動 $ cd ~ # テスト用HTMLファイルを作成 $ echo '<h1>Hello, Linux HTTP Server!</h1>' > index.html # http.serverを起動(ポート8000で待ち受け) $ python3 -m http.server 8000
出力例(環境により異なります): Serving HTTP on :: port 8000 (http://[::]:8000/) ...
ポート番号を省略した場合もデフォルトで8000番が使われます。
2. WindowsのブラウザでURLを開く
サーバーが起動したまま、WindowsのChromeやEdgeを開き、アドレスバーに次のURLを入力してEnterキーを押します。・アクセスするURL:http://localhost:8000
WSL2はWindowsのlocalhostをLinux側のlocalhostに自動でつないでくれるため、特別な設定なしにブラウザからアクセスできます。
ディレクトリにindex.htmlがある場合はそのHTMLが表示され、ない場合はファイル一覧が表示されます。
3. サーバーを停止する
確認が終わったら、サーバーを起動しているターミナルで Ctrl+C を押すと停止します。# Ctrl+C でサーバーを停止 ^C Keyboard interrupt received, exiting.
VPSで外部から接続できるように設定する
さくらVPSやConoHa VPSなど、外部のVPSでhttp.serverを起動する場合は、ファイアウォールでポートを開放しないとブラウザからアクセスできません。WSL2と異なり、VPSはパブリックIPアドレスを持ちますが、デフォルトではほとんどのポートが閉じられています。
1. ファイアウォールでポートを開放する
Rocky Linux / AlmaLinux(RHEL系)の場合はfirewall-cmdを使います。Ubuntu系ではufwを使うのが一般的です。
# Rocky Linux / AlmaLinux / RHEL の場合(firewall-cmd) $ sudo firewall-cmd --add-port=8000/tcp --permanent $ sudo firewall-cmd --reload # Ubuntu の場合(ufw) $ sudo ufw allow 8000/tcp
機密ファイルが入ったディレクトリでhttp.serverを起動しないよう注意してください。
確認が終わったら必ず firewall-cmd --remove-port や ufw delete allow でポートを閉じましょう。
2. ブラウザでアクセスするURLを確認する
VPSのパブリックIPアドレスを確認して、ブラウザからアクセスします。# VPSのIPアドレスを確認する $ ip addr show | grep "inet " | grep -v 127.0.0.1 出力例(環境により異なります): inet 203.0.113.10/24 brd 203.0.113.255 scope global eth0
メルマガ登録後に受け取れる「Linuxサーバー構築入門マニュアル(図解60P)」では、VPSの初期設定からファイアウォール設定まで順を追って解説しています(無料マニュアルのダウンロードはこちら)。
よく使うオプションと活用パターン
python3 -m http.serverにはいくつかの便利なオプションがあります。よく使う組み合わせをまとめました。
| やりたいこと | コマンド |
|---|---|
| ポート8000で起動する(デフォルト) | python3 -m http.server 8000 |
| ポート9000に変更して起動する | python3 -m http.server 9000 |
| ローカルのみアクセス可能にする | python3 -m http.server 8000 --bind 127.0.0.1 |
| 特定のディレクトリを公開する | python3 -m http.server 8000 -d /var/www/html |
| IPv4のみで起動する | python3 -m http.server 8000 --bind 0.0.0.0 |
「-d」オプションは、カレントディレクトリ以外のパスを公開したいときに使います。
よくあるエラーの対処法
1. ブラウザに「接続できませんでした」が出る
サーバーを起動してもブラウザに「接続できませんでした」「ERR_CONNECTION_REFUSED」と出る場合、主な原因は次の3つです。・ポート番号が間違っている:URLのポート番号と起動時のポート番号が一致しているか確認する
・サーバーがまだ起動中か確認する:ターミナルでCtrl+Cで止めていないか確認する
・VPSでファイアウォールが開いていない:firewall-cmdまたはufwでポートを開放する
ssコマンドでサーバーが実際にポートを待ち受けているか確認できます(環境により異なります)。
# ポート8000が待ち受け状態にあるか確認する $ ss -tlnp | grep 8000 出力例(環境により異なります): LISTEN 0 5 0.0.0.0:8000 0.0.0.0:* users:(("python3",pid=12345,fd=5))
2. 「OSError: [Errno 98] Address already in use」が出る
「Address already in use(ポートがすでに使用中)」エラーは、同じポートですでに別のプロセスが動いているときに出ます。典型的なケースとして、ターミナルを誤って閉じてしまいサーバープロセスが残り続けるケースが挙げられます。
# ポート8000を使っているプロセスを確認する $ ss -tlnp | grep 8000 # プロセスIDを確認して停止する(例: pidが12345の場合) $ kill 12345
本記事のまとめ
python3 -m http.serverの使い方をまとめます。| やりたいこと | コマンド / 操作 |
|---|---|
| ポート8000でサーバーを起動する | python3 -m http.server 8000 |
| WSL2からWindowsブラウザでアクセスする | http://localhost:8000 を開く |
| VPSで外部からアクセスできるようにする | firewall-cmd or ufw でポート開放後にIPアドレス:8000 を開く |
| 特定のディレクトリを公開する | python3 -m http.server 8000 -d /対象パス |
| ローカルのみ接続可にする | python3 -m http.server 8000 --bind 127.0.0.1 |
| サーバーを停止する | ターミナルで Ctrl+C を押す |
| ポート使用状況を確認する | ss -tlnp | grep 8000 |
開発中のHTMLファイルの確認や、チームメンバーへの一時的なファイル共有など、実務の現場でも気軽に使える便利なツールです。ただし、本番サービスへの適用は避け、あくまで開発中・確認用として使ってください。
次に読む関連記事
http.serverを使いこなすには、ネットワークの基礎やシェルの知識があると運用の幅が広がります。・ssコマンドでソケット情報を確認する方法|LISTEN・ESTABの見方やポート確認も ~ サーバーが正常に待ち受けているか確認する
・firewall-cmdコマンドでポートを開放・管理する方法|ゾーン・サービス・永続化の使い分け ~ VPSでポートを開放する基本コマンド
・curlコマンドでHTTP通信を行う方法|GET・POSTやヘッダー確認も ~ ブラウザ以外でサーバーの応答を確認する
・systemctlコマンドの使い方|サービスの起動・停止・自動起動設定 ~ 常時稼働のWebサーバーをサービスとして管理する
・set -xコマンドでシェルスクリプトをデバッグする方法|set -e・set -uとの組み合わせも ~ サーバー起動をシェルスクリプトで自動化する
・Linuxサーバー構築の標準構成ガイド|Webアプリ向けディレクトリ・サービス・パーティション設計 ~ 本格的なWebサーバー構築の全体像を把握する
・AIにLinuxトラブルを解析させる方法|journalctl・dmesgのログをChatGPT・Claudeに渡すコツ ~ 接続エラーのログをAIで素早く解析する
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
Webサーバーの仕組みからファイアウォール・セキュリティ設定まで、現場ですぐ使える知識を一冊にまとめています。
無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:LinuxにTailscaleをインストールしてVPN接続を設定する入門|WSL2・VPSのサーバーへどこからでも安全につながる方法
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます