開発用ローカルサーバを立ち上げる方法

  • 294
    いいね
  • 5
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

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をインストールしている場合に必要です。(私が使っている)rbenvRVMなどのバージョン切り替えツールを使っている場合は不要です。

次にサーバを立ち上げるディレクトリにconfig.ruという名前の小さなファイルを作成します。中身は次の一行だけです。

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モジュールがいくつかあるそうです。

ka_さんのコメントがよくまとめられていますので詳しくはそちらをご覧ください。

PHPの場合

kimama1997さんからPHP版のコメントを頂きましたので追加します(PHP 5.4+)。詳しくはコメント欄をご覧ください。

$ php -S localhost:3000

ちなみに私はPHPの経験はありますが現在使っておらず、今の開発環境にはインストールしていません。