Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

はじめに

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の経験はありますが現在使っておらず、今の開発環境にはインストールしていません。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした