はじめに
Webアプリケーション開発の動作確認用にファイルシステムの一部をローカルサーバに立ち上げてブラウザからアクセスするにはどうしたらよいか、できるだけ初歩的に説明します。
Pythonの場合
Pythonが動作する環境であればこれが簡単です。Pythonの標準ライブラリには専用モジュールがありコマンドラインから直接起動できます。Python2と3でモジュール名が異なりますのでそれぞれ説明します。
Python2ではSimpleHTTPServerを使います。ポート番号を省略すると8000が用いられます。
$ python -m SimpleHTTPServer [ポート番号(デフォルトは8000)]
Python3ではhttp.serverを使います。
$ python3 -m http.server [ポート番号(デフォルトは8000)]
これでブラウザからhttp://localhost:8000
(または単にlocalhost:8000
)にアクセスすれば起動したディレクトリをルートとしてサーバを起動します。ディレクトリに対するアクセスには次のように応答します(Apacheサーバのデフォルト動作と同じ)。
- index.htmlがある場合はindex.htmlで応答
- index.htmlがない場合はディレクトリスティングを表示
サーバの終了はCtrl-Cです。
Rubyの場合
Ruby 1.9.3以上にはKernelモジュールにhttpd関数があり、コマンドラインから次のように起動できます。機能はPythonと同じです。
$ ruby -run -e httpd . -p 8000
実は今までこれを知らず、初稿をアップした直後に表示された関連投稿の中から発見しました(その直後にudzuraさんからコメントも頂きました。ありがとうございます)。でもRubyプログラマならやはり次の方法をおすすめします。
私はRubyプログラマで、いつも Rack gemを使っています(1.9.3より前のRubyも可)。まずRackをインストールします。
Rackは多くのRubyフレームワークで用いられています。特にRuby on Railsをインストールしている方はすでに入っていますのでこの操作は不要です。
$ [sudo] gem install rack
sudoはシステムディレクトリにRubyをインストールしている場合に必要です。(私が使っている)rbenvやRVMなどのバージョン切り替えツールを使っている場合は不要です。
次にサーバを立ち上げるディレクトリにconfig.ru
という名前の小さなファイルを作成します。中身は次の一行だけです。
run Rack::Directory.new '.'
これで準備完了です。最後にrackup
コマンドで立ち上げます(以下は起動例)。デフォルトポート番号は9292で、指定する場合はrackup -p 8000
(例)です。
$ rackup
[2014-04-01 14:18:53] INFO WEBrick 1.3.1
[2014-04-01 14:18:53] INFO ruby 1.9.3 (2013-06-27) [i686-linux]
[2014-04-01 14:18:53] INFO WEBrick::HTTPServer#start: pid=5814 port=9292
なおディレクトリに対するアクセスには常にディレクトリリスティングを返します(index.htmlがあってもファイルの一つとしてリスト表示)。開発用にはこれで十分でしょう。一度設定してしまえば後はrackup
だけで起動します。
Rackの利点はいくらでもカスタマイズできることで、config.ru
にRubyコードを記述してサーバサイドプログラミングをフレキシブルに行うことができます。ただしこれ以上は本稿の趣旨から外れますので詳しい説明は割愛します。
私の最新作「天気データマップ」のサーバサイドもRackで作られています。Rackについては後で別途説明する機会を持ちたいと思います。
Node.jsの場合
私はNode.jsはあまり詳しくないのですが、Node.js版ローカルサーバを作っている方を知っていますので紹介します(私も動作確認しました)。詳しくは下記サイトの説明をお読み下さい。
https://github.com/shimizu/SimpleWebServer
投稿後すぐにka_さんからコメント頂きました。nodeモジュールがいくつかあるそうです。
- https://www.npmjs.org/package/http-server
- https://www.npmjs.org/package/simple-server
- https://www.npmjs.org/package/simple-http-server
ka_さんのコメントがよくまとめられていますので詳しくはそちらをご覧ください。
PHPの場合
kimama1997さんからPHP版のコメントを頂きましたので追加します(PHP 5.4+)。詳しくはコメント欄をご覧ください。
$ php -S localhost:3000
ちなみに私はPHPの経験はありますが現在使っておらず、今の開発環境にはインストールしていません。