Macで気軽にHTTPサーバを立てる
create: 2018-11-2
Mac Tips 新人向けTIPS

なぜ HTTP サーバが必要なのか?

HTMLページを確認するだけなら、ファイルをそのままブラウザで表示すれば見ることができます。
しかし近頃の Web サイト・Web アプリでは、XMLHttpRequest(XHR)により、非同期にリクエストを行う SPA が増えてきました。
SPA ではなくてもXHRでデータを要求することが当たり前になってきましたが、file:///で始まるファイルプロトコルではXHRリクエストができません。
この問題を解決するために、ローカル HTTP サーバを起動して、XHRリクエストにも応えられるようにします。

Python で http サーバ

Pythonは Mac にデフォルトでインストールされているスクリプト言語です。

Python のバージョンチェック

まずはインストールされているPythonのバージョンをチェック。
Python には 2 系(2.x.x)と 3 系(3.x.x)があり、デフォルトでは 2 系が有効になっていると思います。

python --version
# Python 2.7.10

python でローカル web サーバを立ち上げる

コンソールから、HTTP サーバに公開したいディレクトリまで移動します。

cd /path/to/public

いよいよ HTTP サーバを起動します。
先程調べたPythonのバージョンによって、使用するモジュールが違います。

# 2.x.x系
python -m SimpleHTTPServer 8000

# 3.x.x系
python -m http.server 8000

2 系、3 系とも数字の8000はポート番号です。
http://localhost:8000/にアクセスすると、HTTP サーバが起動されています!
もちろん XMLHttpRequest も有効です。

終了するにはCtrl+Cでコマンドを終了しましょう。

Mac では Apache2 が常駐している

Pythonを利用する方法は、作成中の Web サイトや Web アプリを試したときに使用します。
実は、Mac では何もしなくても http サーバが常駐しているんです。
/Library/WebServer/Documents配下が公開されているので、ここに公開ディレクトリを配置しておけば見れます。
80 番ポートで公開されているので、ポート番号の指定もなくhttp://localhost/でアクセスできます。

Pythonによるサーバは一時的なもの、ローカル Wiki や常時使用したい Web アプリなどはこちらに置いておくと良いでしょう。

公開したいディレクトリをドキュメントルートにリンクする

/Library/WebServer/Documentsがルートとして公開されます。
この下にあるディレクトリはポート指定なしでアクセスできるようになります。
ただ、ローカル WEB プロジェクトを全部ここに置くのもちょっと管理しにくいですね。
そこで、ここにシンボリックリンクを張ります。

# root権限が必要なので sudo して作業する
sudo ln -s /path/to/public publish-name

/path/to/publicは公開したいディレクトリのパス、publish-nameは公開パスを指定します。
こうすることでhttp://localhost/publish-name/で常時アクセスできるようになります!

Windows ではいろいろ準備が必要ですが、Mac だとお手軽ですね!