はじめに

手元で簡易的な HTTP サーバを立てたいときによく Python を使います。なのでその方法をまとめておきます。

http.server

Python で簡単に HTTP サーバを立てるには、標準ライブラリの http.server を使います。

公式の警告にもあるように、実運用向けのライブラリではないので、あくまで手元の確認用程度のものという認識で。

実行

もちろん http.server を使って Python のコードを書き、実行すればサーバを立てられるのですが、それでは少し面倒です。

ここでは Python のモジュールモードを使用して、コマンドでサーバを立ち上げましょう。
モジュールモードで起動するには Python の実行オプションとして -m を付与し、使用するモジュール http.server を指定します。

つまり、実行コマンドは以下のようになります。

$ python -m http.server

デフォルトでは外部アクセス許可( 0.0.0.0 )の 8000 番ポートで立ち上がります。

アドレスとポートの変更

このコマンドのヘルプを確認してみます。

$ python -m http.server -h
usage: server.py [-h] [--cgi] [--bind ADDRESS] [--directory DIRECTORY] [port]

positional arguments:
  port                  Specify alternate port [default: 8000]

optional arguments:
  -h, --help            show this help message and exit
  --cgi                 Run as CGI Server
  --bind ADDRESS, -b ADDRESS
                        Specify alternate bind address [default: all
                        interfaces]
  --directory DIRECTORY, -d DIRECTORY
                        Specify alternative directory [default:current
                        directory]

ここにあるように --bind でアドレスを指定すると、外部アクセスを許可せず、完全ローカルで立ち上げたり、ポート番号を指定したりすることができます。

例えば、ローカルで 12345 番ポートにしたい時は以下のようなコマンドになります。

$ python -m http.server --bind 127.0.0.1 12345

おわりに

CGI サーバとしても動かせるので、単純な静的サイト意外にも使い道はありそうですね。